首页 > 解决方案 > 将 NuGet 包还原到缓存

问题描述

我有一个.net-core可以在我的机器上运行的应用程序,但是当我将它部署到另一台机器上时,它抱怨缺少包并将我指向TheApp.deps.json.


我的理论是,在我的机器上,应用程序在一些 NuGet 缓存中查找包,它们可能在开发过程中由 IDE 安装,因为应用程序的 output-dir 仅包含几个internal dll,因此其他nuget.org依赖项肯定是缺失的。

我正在构建应用程序

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
  </PropertyGroup>

然后xcopy它到另一台机器。


问题

有没有办法根据文件将丢失的包恢复安装到目标机器上的缓存*.deps.json中?

标签: .net-corenuget

解决方案


dotnet build(以及 Visual Studio 中的 F5/Build 功能)只需构建您通过源文件(即 cs、fs、vb 等)提供的代码。

dotnet publish(以及 Visual Studio 中的 Build > Publish 功能)在将输出移动到准备发布到另一台机器的特定目录之前,会执行完整的包还原、构建源代码并解析任何外部依赖项。

dotnet publish命令文档上的描述指出:

dotnet publish编译应用程序,读取项目文件中指定的依赖项,并将生成的文件集发布到目录。输出包括以下资产:

  • 带有 dll 扩展名的程序集中的中间语言 (IL) 代码。
  • .deps.json文件,其中包含项目的所有依赖项。
  • .runtime.config.json文件,它指定应用程序期望的共享运行时,以及运行时的其他配置选项(例如,垃圾收集类型)。
  • 应用程序的依赖项,它们从 NuGet 缓存复制到输出文件夹中。

dotnet builddotnet run仅对在您的开发机器上构建以及与项目文件结合使用时才真正有用。


推荐阅读