【问题标题】:.NET multi target frameworks copies System.* DLLs to .NET Framework output directory.NET 多目标框架将 System.* DLL 复制到 .NET Framework 输出目录
【发布时间】:2021-08-25 08:48:09
【问题描述】:

我有一个针对多个框架的 .NET 项目,即 <TargetFrameworks>netstandard2.1;net472</TargetFrameworks>

该项目包含引入 System.* 依赖项的 NuGet 包,例如 System.MemorySystem.Buffers

当我构建项目时,它会创建两个输出目录,netstandard2.1net472,这很好。

我很难理解的是为什么net472 输出目录包含 System.* 依赖项?我知道它们被复制到 netstandard2.1 目录,但是当它们可以从机器上的 .NET Framework 安装(即 GAC)中加载时,为什么要为 .NET Framework 目录复制它们?

对于net472 目标,有没有办法排除 System.* dll?

【问题讨论】:

  • 通常,编译器在这里所​​做的事情是正确的。他复制到 net472 文件夹的版本通常比 GAC 中的版本新。编译器可能以这种方式在 .net 框架中使用 .netstandard 文件。如果您没有收到任何运行时错误,一切都很好。
  • 问题现在回答了吗?在这种情况下you can accept my reply as answer“关闭”问题。

标签: c# .net .net-4.7.2 .net-standard-2.1


【解决方案1】:

你看到的是好的,因为它们都是不属于 .net 框架的 nuget 包(黄色而不是绿色)

因此需要将它们复制到输出。

一切都很好。

【讨论】:

  • 谢谢。当我尝试将它们添加为对纯 .NET Framework 项目的引用时,为什么它们存在于“程序集”部分下?
  • 我只有几分钟的时间来测试它,这是一个缓存的东西,我没有在添加参考中看到任何东西,因为我还没有为我的测试项目这样做。我在 net framework 4.7.2 输出中得到了 2 个 DLL,但没有像预期的那样在 NS2.1 中。
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 2016-12-08
  • 2016-03-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2021-04-01
相关资源
最近更新 更多