.net - 使用 nuget 包分发简单的 .net 核心应用程序
问题描述
我创建了使用几个 nuget 包的简单 .net 核心应用程序。我想在未安装这些 nuget 包的不同 Windows 10 机器上运行它。当我复制可执行 dll 并尝试使用从 Powershell 控制台运行它Dotnet xxx.dll
时,出现错误:
未找到应用程序依赖项清单 (XXX.deps.json) 中指定的程序集:
包:'CsvTextFieldParser',版本:'1.2.1'
路径:'lib/netstandard2.0/CsvTextFieldParser.dll'
由于它是简单的应用程序,我尝试在目录中使用所需的 nuget 包bin
并运行它。那没起效。
如何在一个简单的 .net 核心应用程序中使用 nuget 包,我可以xcopy
在其他机器上简单地运行它?
解决方案
您dotnet publish
在部署应用程序之前运行了吗?正如文档指出的那样,仅仅运行dotnet build
是不够的:dotnet build
如果项目具有第三方依赖项,例如来自 NuGet 的库,它们会从 NuGet 缓存中解析,并且不适用于项目的生成输出。考虑到这一点,dotnet build 的产品还没有准备好转移到另一台机器上运行。这与 .NET Framework 的行为形成对比,在该行为中,构建可执行项目(应用程序)会产生可在安装了 .NET Framework 的任何计算机上运行的输出。要获得与 .NET Core 类似的体验,您需要使用 dotnet publish 命令。有关详细信息,请参阅 .NET Core 应用程序部署。
所以,只需运行dotnet publish
. 它将为您执行构建和恢复所有依赖项,并且输出将是完全可部署的。
推荐阅读
- maven - 如何使用类似选项的命令覆盖 Maven 属性?
- android - React Native Android 生产版本仍然表现得像一个开发版本
- qt - Qt creator:堆叠的小部件弹出
- c# - 如何为整个 Winform 应用程序设置文化
- asp.net - 在 Heroku 中使用 Entity Framework、ASP.NET MVC Core 和 PostgreSQL
- php - 尝试从 AJAX 调用返回数据时出现意外结果
- rest - Yahoo Gemini 沙盒创建“INVALID_EMAIL_ADDRESS”
- postgresql - postgres / docker: password authentication failed for user
- visual-studio-code - call vscode extension activation script from command line
- azure-functions - Azure EventHub 和函数 LeaseLostException