visual-studio-2017 - .net 4.7.2 库引用标准 2.0 NuGetPackage 不起作用

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

我需要在 .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 个 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/

相关文章:

.net-core - VSTS 版本 : Packages failed to restore - Unable to resolve 'NETStandard.Library (>= 1.6.1)' for '.NETStandard,Version=v2.0'

c++ - 接受迭代器的初始化列表构造函数

.net-core - 如何在VSTS(Vs2017)上运行和发布.NETCore Xunit测试?

git - Visual Studio 不适用于 git worktree

c# - 为客户将目标打包到 nuget 中

c# - Visual Studio 2017 不会加载 .NET Standard 库中的 .NET Framework 引用

asp.net-core-2.1 - 找不到 AddCommandLine .netcore 2.1

C# 将 ListBox.SelectedItems 复制到另一个变量

Powershell:如何在未连接的机器上安装 PowerShell 的 Nuget 提供程序,以便我可以从 PS 命令行安装 nuget 包?

c# - DLL 必须位于 nuget 包中的 lib 文件夹中