.NET标准库可以以某种方式使用支持.NET Framework 4.6.1

时间:2018-12-05 13:27:58

标签: c# .net .net-standard class-library .net-standard-2.0

我正在将基于C#net461的库转换为netstandard2。该库的某些依赖项最多支持net461。 Visual Studio针对这些依赖项显示以下警告:

  

警告NU1701软件包'IKVM v8.1.5717'是使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETStandard,Version = v2.0'恢复的。该软件包可能与您的项目不完全兼容。

反正有没有合并这些依赖项并成功移植到netstandard2的地方?

我环顾四周,尝试了Microsoft.Windows.Compatibility nuget。将其添加为新的netstandard2库项目的进一步依赖项之后,警告仍然存在,并且“ bin / debug / netstadard2”处的生成输出不包含nuget依赖项的dll。正如尝试从另一个项目中使用该库时所期望的那样,由于缺少netstandard2库的net461依赖项的DLL,我得到了运行时异常。

1 个答案:

答案 0 :(得分:0)

经过大量实验和搜索,我发现问题是双重的:

  1. net461依赖项具有netstandard 2.0未涵盖的API, 导致运行时错误。
  2. 由于是传递依赖项,因此在构建期间不包含net461依赖项的DLL。

就我而言,问题#1通过包含Windows兼容性包得以解决,其中包括我的net461依赖项所使用的额外API。但是由于问题2,我仍然遇到运行时异常。

问题2通过确保所有导入都使用PackageReference样式来解决,该样式将提取传递依赖项。