asp.net-core - 下载用于离线开发/发布的 Nuget 包
问题描述
简短的问题
有没有办法以编程方式下载构建/发布解决方案所需的所有 Nuget 包并将它们输出到可以移动到本地 Nuget 存储库的单个目录中?
一些背景
在我工作的地方,大多数开发都是在一个气隙网络(没有互联网)上完成的。在最近的一个项目中,我能够在我们的支持互联网的网络上进行开发。这恰好是在支持 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\
推荐阅读
- nginx - 如何在 NGINX 中将文本添加到来自远程 URL 的响应?
- python - 如何在 Python 中将列表中的一项转换为字符串?
- c# - .NET Core API,如何在 Fedex Tracking API 的 HTTP POST 中为“text/xml”创建带有“Content-Type”的 SOAPRequest
- python - pydantic 中有 post_load 吗?
- reactjs - TypeError: (0 , _umi.connect) 在使用 jest 时不是函数
- c# - C#用自己的方法覆盖windows键
- node.js - 使用请求模块时得到半个 JSON
- xamarin - 在 iOS 模拟器 HTTPS localhost 中发生 SSL 连接无法建立错误
- excel - 查找功能上的VBA脚本'对象变量或未设置块变量'
- python - 如何跟踪有向图的边缘?