.net 4.7.2 库引用标准 2.0 NuGetPackage 不起作用

.net 4.7.2 library referencing standard 2.0 NuGetPackage does not work

我需要在 .NET Framework 4.7.x class 库中使用 NuGet 包 OPCFoundation.NetStandard.Opc.Ua

到目前为止,我的 class 库是 .NET Framework 4.7.0。它工作正常,尽管 OPCFoundateion.NetStandard.Opc.Ua 包 (.NET Standard 2.0) 在 bin 文件夹中生成了大量填充系统 DLL。一点也不好,但它奏效了。

因为我发现所有那些几十个 shim dll 非常烦人,所以我做了一些研究。根据各种文章,我了解到一旦我将 class 库升级到版本 4.7.2,所有这些 DLL 都应该消失。

好吧,我做到了,但事情只会变得更糟。

如果你试试这个:

  1. 创建一个全新的解决方案(VS2017,全面更新)
  2. 创建空白 4.7.2 class 库
  3. OPCFoundation.NetStandard.Opc.Ua包导入class库

发生以下情况:

如果我忽略这些警告并仍然尝试使用该包,我会收到运行时异常,提示缺少各种 DLL。

这是怎么回事?为什么它不能与 4.7.2 一起使用而它与 4.7.0 一起使用?

我劝你自己试试看,它非常非常容易重现。

我使用 packages.config 进行 NuGet 处理,主要是因为如果我使用 packageReferences[=56,我无法让我们的 TeamCity 构建服务器构建项目=].

.net 4.7.2 library referencing standard 2.0 NuGetPackage does not work

这是一个已知问题 Issues with .NET Standard 2.0 with .NET Framework & NuGet,这些警告消息是由 MS 从 .net framework 4.7.1 添加的,以提醒用户了解此问题的存在。这就是为什么它不能与 4.7.2 一起工作而与 4.7 一起工作的原因。

但是 警告是无害的,仅出现在 IDE 中,但可能会令人讨厌。

要解决这些警告,您可以从项目中删除那些 System.* 引用,因为您无法使用 packageReferences

有关更多信息,请参阅

希望对您有所帮助。