【问题标题】:.net 4.7.2 library referencing standard 2.0 NuGetPackage does not work.net 4.7.2 库引用标准 2.0 NuGetPackage 不起作用
【发布时间】:2018-08-11 21:31:47
【问题描述】:

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

到目前为止,我的类库是 .NET Framework 4.7.0。虽然 OPCFoundateion.NetStandard.Opc.Ua 包(.NET Standard 2.0)在 bin 文件夹中生成了一大堆 shim 系统 DLL,但它工作正常。一点都不好,但它奏效了。

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

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

如果你试试这个:

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

会发生以下情况:

  • 仍然是 83 系统。*(和其他)垫片包正在下载, 安装并存储在 Packages 文件夹中

  • 弹出 25 条警告,说:“引用的组件 找不到‘System.xxxx.xxxx’”

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

发生了什么事?为什么它不能在 4.7.2 上工作,而在 4.7.0 上工作?

我强烈建议您自己尝试一下,它非常非常容易重现。

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

【问题讨论】:

  • 我在 15.8 Preview 中测试过,在 bin 中只看到几个系统 dll。默认情况下,VS 使用旧的 package.config。你使用新的 PackageReference 格式吗?这仍在进行中,可能会导致问题。旧的 package.config 显示它使用 net461 dll,而不是 netstadanrd20

标签: visual-studio-2017 nuget .net-standard-2.0 opc-ua .net-4.7.2


【解决方案1】:

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

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

警告是无害的,仅存在于 IDE 中,但可能很烦人。

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

更多信息请参见Adding .NET Standard libraries to 4.7.1 lib adds loads of references, some broken

希望这会有所帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多