.net-core - 将 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
中?
解决方案
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 build
dotnet run
仅对在您的开发机器上构建以及与项目文件结合使用时才真正有用。
推荐阅读
- javascript - circle.getTotalLength() Internet Explorer 错误
- sql - 在 knex 中创建外部关系时出错 - 表创建竞争条件
- javascript - 如果单击特定按钮,则显示消息
- powershell - PowerShell 从 JSON 对象中提取值,改变
- xamarin.ios - 自定义集合视图未显示
- python - Tix CheckList 两次调用监听器
- python - pandas Grouper 未按预期进行上采样
- json - 虽然迭代器在 groovy
- python-3.x - Gurobi 错误:TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是 'gurobipy.QuadExpr
- javascript - 2点之间的距离