我需要在.NET Framework 4.7.x类库中使用NuGet包 OPCFoundation.NetStandard.Opc.Ua 。
到目前为止,我的类库是.NET Framework 4.7.0。尽管 OPCFoundateion.NetStandard.Opc.Ua软件包(。NET Standard 2.0)在bin文件夹中生成了一大堆垫片系统DLL,但它的工作正常。一点都不好,但是确实有效。
因为我发现所有数十个shim dll非常烦人,所以我进行了一些研究。根据各种文章,我了解到,一旦我将类库升级到版本4.7.2,所有这些DLL都将消失。
好吧,我照做了,但是情况只会变得更糟。
如果您尝试这样做:
发生以下情况:
仍为83系统。*(及其他)匀场软件包正在下压, 已安装并存储在Packages文件夹中
25条警告弹出,说:“引用的组件 找不到“ System.xxxx.xxxx””
如果我忽略这些警告并尝试使用该软件包,则会收到运行时异常消息,提示缺少各种DLL。
这是怎么回事?为什么它不能与4.7.0一起使用而与4.7.2一起使用?
我敦促您自己尝试一下,它非常非常容易复制。
我使用 packages.config 进行NuGet处理,主要是因为如果使用 packageReferences ,则无法让我们的TeamCity构建服务器来构建项目。
答案 0 :(得分:2)
.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:
希望这会有所帮助。