【问题标题】:Download Nuget Packages for Offline Development/Publishing下载用于离线开发/发布的 Nuget 包
【发布时间】:2019-01-03 19:12:15
【问题描述】:

小问题

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

一些背景

在我工作的地方,大多数开发都是在一个隔离的网络(没有互联网)上完成的。在最近的一个项目中,我能够在我们的支持互联网的网络上进行开发。这恰好是在支持 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 包,以便我可以从一个网络进行一次传输到另一个网络,而不是移动我拥有的东西并等待看看有什么问题?最好我想要一个可以查看 sln 文件并将所有必要的 nuget 包放入指定目录的 exe 或 PowerShell 脚本。

【问题讨论】:

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


    【解决方案1】:

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

    dotnet restore --packages .\package\
    

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

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

    dotnet build --packages .\package\
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-02-22
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-26
        相关资源
        最近更新 更多