当前位置: 首页 > 知识库问答 >
问题:

如何使用本地nuget包源进行Dockerfile dotnet还原[重复]

傅阳炎
2023-03-14

我正在尝试使用本地的nuget软件包进行我的dotnet恢复,我尝试了以下教程:dotnet恢复w/out internet

我的问题:

我使用的服务器在公司网络上,这就是为什么我不能使用dotnet restore,所以我也遇到了nuget.org类似于此链接的问题。

    null

虽然@Omajid的回答很有帮助,但我相信docker卷装载只有在使用docker run时才可能,而不能在Dockerfile(将用于构建管道)中使用。得到了这个链接,这是类似于我想要实现的。如何在Docker容器中装入主机目录

共有1个答案

全弘深
2023-03-14

要准备好所有包,您需要在构建之前还原。要在构建过程中拥有所有包,您需要复制这些包。

下面是一个实验形式的例子:

准备工作:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
  </ItemGroup>
</Project>
FROM microsoft/dotnet:2.2-sdk AS byse
COPY packages /root/.nuget/packages
COPY src src
RUN ls /root/.nuget/packages
WORKDIR /src
RUN dotnet restore
RUN ls /root/.nuget/packages
docker run --rm -v $(pwd)/src:/src -v $(pwd)/packages:/root/.nuget/packages -w /src  microsoft/dotnet:2.2-sdk dotnet restore
docker build -t test -f src/Dockerfile .

期望:

Sending build context to Docker daemon  13.77MB
Step 1/7 : FROM microsoft/dotnet:2.2-sdk AS byse
 ---> e4747ec2aaff
Step 2/7 : COPY packages /root/.nuget/packages
 ---> 76c3e9869bb4
Step 3/7 : COPY src src
 ---> f0d3f8d9af0a
Step 4/7 : RUN ls /root/.nuget/packages
 ---> Running in 8323a9ba8cc6
newtonsoft.json
Removing intermediate container 8323a9ba8cc6
 ---> d90056004474
Step 5/7 : WORKDIR /src
 ---> Running in f879d52f81a7
Removing intermediate container f879d52f81a7
 ---> 4020c789c338
Step 6/7 : RUN dotnet restore
 ---> Running in ab62a031ce8a
  Restore completed in 44.28 ms for /src/src.csproj.
Removing intermediate container ab62a031ce8a
 ---> 2cd0c01fc25d
Step 7/7 : RUN ls /root/.nuget/packages
 ---> Running in 1ab3310e2f4c
newtonsoft.json
Removing intermediate container 1ab3310e2f4c
 ---> 977e59f0eb10
Successfully built 977e59f0eb10
Successfully tagged test:latest

请注意,ls步骤是缓存的,不会在后续调用时打印。运行Docker rmi测试重置。

步骤4/7在还原之前运行,并且包已经缓存。

Step 4/7 : RUN ls /root/.nuget/packages
 ---> Running in 8323a9ba8cc6
newtonsoft.json
 类似资料:
  • 我试图使用nopCommerce(它是用。NET核心编写的),但是当我想运行项目时,我会遇到52个错误,告诉我运行一个nuget包还原

  • 我正在尝试使用Nuget Package Manager在VS 2017中安装/重新存储。在输出中,它显示恢复已完成。然而,当我检查<code>包</code>文件夹时,我看不到<code>Microsoft.Net。编译器文件夹。因此我犯了错误 严重性代码描述项目文件行禁止显示状态错误此项目引用了此计算机上缺少的NuGet包。使用NuGet Package Restore下载它们。有关详细信息,

  • 问题内容: 当我在Jenkins构建服务器上构建.NET Standard 2.0库时 我在构建日志中遇到了以上错误。 我搜索了错误并找到了解决方案 然而, 在开始构建之前清理工作区时,该解决方案无法解决问题。 因此,我在MSBuild之前插入命令,但失败了 根据解决方案参考,也许升级 Nuget Package Installer 可以帮助我。但是我不知道如何通过命令行升级 Nuget软件包安装

  • 我创建了两个Android Studio应用程序。其中之一是aar图书馆。我在第二个应用程序中使用了这个aar库。我通过使用File->New->New Module->Import aar/JAR Packages选项添加了aar库。之后,我可以看到我的aar库的反编译源。当我更新aar库,我复制并粘贴新的aar文件到我的应用程序项目文件夹。但这次Android Studio展示了更老的反编译源

  • 我最近正在使用Azure管道,并且我的构建过程中有一个NuGet任务。此进度始终失败,因为 NuGet 源中没有名为“机器人实用性”的包。这是因为此包由我自己创建,并且仅存储在 Azure 项目中。 ##[错误]nuget命令失败,并出现退出代码(1)和错误(NU1101:找不到包BotUtive。源中不存在具有此ID的包:NuGetOrg 构建管道有可能到达Azure工件中的这个包吗?如果可以,