我需要在 .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 都会消失。
我确实这么做了,但事情只会变得更糟。
如果你尝试这样做:
- 创建全新的解决方案(VS2017,全面更新)
- 创建一个空白的 4.7.2 类库
- 将OPCFoundation.NetStandard.Opc.Ua包导入类库
发生以下情况:
仍有 83 个 system.*(和其他)shim 软件包正在下载, 安装并存储在 Packages 文件夹中
弹出 25 个警告,内容为:“引用的组件 找不到“System.xxxx.xxxx””
如果我忽略这些警告并尝试使用该包,我会收到运行时异常,指出缺少各种 DLL。
这是怎么回事?为什么它不能在 4.7.2 上运行,而在 4.7.0 上可以运行?
我强烈建议您亲自尝试一下,它非常非常容易重现。
我使用packages.config进行NuGet处理,主要是因为如果我使用packageReferences,我无法让我们的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
。
参见Adding .NET Standard libraries to 4.7.1 lib adds loads of references, some broken了解更多信息:
希望这有帮助。
关于visual-studio-2017 - .net 4.7.2 库引用标准 2.0 NuGetPackage 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51803910/