繁体   English   中英

下载用于离线开发/发布的 Nuget 包

[英]Download Nuget Packages for Offline Development/Publishing

简短的问题

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

一些背景

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

起初,由于缺少 ASP.NET Core nuget 包,解决方案无法构建; 所以我将所有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 包,以便我可以从一个网络到另一个网络进行一次传输,而不是移动我拥有的内容并等待查看有什么中断? 最好我想要一个可以查看 sln 文件并将所有必要的 nuget 包放入指定目录的 exe 或 PowerShell 脚本。

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

dotnet restore --packages .\package\

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

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

dotnet build --packages .\package\

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM