将NuGet软件包还原到缓存

时间:2019-06-19 11:39:28

标签: .net-core nuget

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


我的理论是,应用程序在我的计算机上寻找一些NuGet缓存中的软件包,这些软件包可能是在开发期间由IDE安装的,因为该应用程序的output-dir仅包含几个内部 {{ 1}} s,因此其他dll依赖肯定是 missing

我正在使用构建应用程序

nuget.org

,然后 <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.2</TargetFramework> <RuntimeIdentifier>win10-x64</RuntimeIdentifier> </PropertyGroup> 到另一台计算机。


问题

是否有一种方法可以基于xcopy将丢失的软件包恢复安装到目标计算机上的 cache 中。文件?

1 个答案:

答案 0 :(得分:1)

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

dotnet publish(和Visual Studio中的Build> Publish函数)执行完整的程序包还原,生成源代码,并解析所有外部依赖项,然后再将输出移动到准备发布到另一台计算机的特定目录中

dotnet publish command documentation上的描述为:

  

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

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

dotnet build仅对于在开发计算机上进行构建以及与dotnet run结合用于项目文件时非常有用。