将所有依赖项从 .Net 标准库复制到 .Net Framework Console 应用程序

Posted

技术标签:

【中文标题】将所有依赖项从 .Net 标准库复制到 .Net Framework Console 应用程序【英文标题】:Copy all dependencies from .Net Standard libraries to .Net Framework Console application 【发布时间】:2021-12-12 00:25:11 【问题描述】:

在 .net framework(4.6) 控制台应用程序中使用 .net 标准项目后,.net 标准项目的依赖项不会复制到输出目录中。这会导致缺少 dll 的运行时错误。对于引用的项目,“复制本地”属性已经为真。一种可能的解决方案是在控制台应用程序中再次添加所有依赖项,但这不是一个好主意。有没有更好的解决方案?

【问题讨论】:

【参考方案1】:

在通过 Scott Hanselman 的 article 之后,下面的解决方案就像一个魅力。

在 .net 框架控制台应用程序的“.csproj”文件的第一个“PropertyGroup”标记中添加以下行

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

无需在控制台应用程序中再次添加 .net 标准项目的 nuget 依赖项。

【讨论】:

那篇 Hanselman 的文章很棒 - 感谢您的链接 可悲的是,将上述 xml 添加到我的 .csproj 会导致项目无法加载 对我来说,添加该行会导致 nuget 包不再显示在“管理 nuget 包”中。我可以通过将 packages.config 迁移到新的 PackageReference 格式来解决它:右键单击 packages.config 文件并选择“Migrate packages.config to PackageReference...”。【参考方案2】:

另一个答案是发布项目:

dotnet publish -o path/to/output/folder

【讨论】:

以上是关于将所有依赖项从 .Net 标准库复制到 .Net Framework Console 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

.net 标准是不是像 .net Core 一样跨平台? [复制]

如何将 .NET 标准库更改为 .NET 框架库?

如何通过Gradle将所有依赖项复制到Maven存储库?

无法将Spring Boot依赖项从父模块导入子模块

使用自定义 UIMenuController 项从 UIPasteboard 中复制和检索值

如何将任务依赖项从另一个插件添加到我的 SBT 插件?