【发布时间】: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 都应该消失。
好吧,我做到了,但事情只会变得更糟。
如果你试试这个:
- 创建全新的解决方案(VS2017,全面更新)
- 创建一个空白的 4.7.2 类库
- 将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