下载Nuget软件包以进行离线开发/发布

时间:2019-01-03 19:12:16

标签: asp.net-core nuget .net-standard

简短问题

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

某些背景

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

首先,由于缺少ASP.NET Core nuget软件包,因此无法构建该解决方案。因此,我将用于开发应用程序的计算机上的本地缓存中的 ALL 所有nuget软件包复制到了无线网络上的本地Nuget存储库中。现在,该应用程序已构建,但我似乎无法发布该Web项目(ASP.NET Core)。我收到以下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 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

在启用Internet的开发环境中,您可以浏览到项目的根目录并使用:

dotnet restore --packages .\package\

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

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

dotnet build --packages .\package\