我有一个.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 中。文件?
答案 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
结合用于项目文件时非常有用。