提问者:小点点

下载用于脱机开发/发布的Nuget包


简短的问题

有没有一种方法可以通过编程方式下载构建/发布解决方案所需的所有Nuget包,并将它们输出到一个可以移动到本地Nuget存储库的目录中?

一些背景

在我工作的地方,大多数开发都是在一个空气间隙网络上完成的(没有互联网)。在最近的一个项目中,我能够在我们的Internet支持的网络上进行开发。这是第一个在支持Internet的网络上开发的应用程序,也是我们开发的第一个ASP.NET核心应用程序。该解决方案可以在面向Internet的网络上构建,运行和发布。我现在正在尝试将解决方案移动到空气间隙网络中,但是我在移动所有依赖项时遇到了问题。

最初,由于缺少ASP.NET核心nuget包,解决方案无法构建;因此,我将所有的nuget包从我用来开发应用程序的机器上的本地缓存复制到air gapped网络上的本地nuget存储库中。现在应用程序构建,但我似乎无法发布web项目(ASP.NET核心)。我得到了25个以上的错误,大致如下:

  • 找不到包Runtime.any.System.Diagnositics.Tools。源中不存在具有此id的包...
  • 找不到版本(>=2.1.6)nicrosoft.netcore.app.。。
  • 找不到...

当我尝试从visual studio(使用IIS Express)运行时,还会出现运行时错误“此页无法显示”,但我不确定这是否与此相关。单元/集成测试运行良好。

我可以尝试从nuget.org手动下载每个nuget包,然后将它们移动到空气间隙网络,但是要把东西从一个网络移动到另一个网络需要几个小时。我是否可以自动检索构建/发布解决方案所需的所有nuget包,这样我就可以从一个网络到另一个网络进行一次传输,而不是移动我拥有的东西,等待看到什么中断?最好我想要一个exe或PowerShell脚本,可以查看一个sln文件,并将所有必要的nuget包放到一个指定的目录中。


共2个答案

匿名用户

几周前我回答了两个非常相似的问题。请看一下这些答案,看看它们是否有帮助

  • 将包含所有依赖项的Nuget包下载到文件夹的命令
  • 是否可以为没有Internet的计算机创建nuget包的缓存?

匿名用户

在启用internet的dev env上,您可以浏览到项目的根目录,并使用:

dotnet restore --packages .\package\

这将使用名为'packages'的目录作为解决方案的本地缓存,所有nuget文件都将被复制到该目录中。

然后,您可以在构建中包含相同的开关,以确保使用本地缓存。

dotnet build --packages .\package\