问题描述
我继承了一个 .NET 应用程序。此应用程序具有包含许多项目的 Visual Studio 2019 解决方案。当我打开解决方案时,我可以看到多个警告:
ProjectReference {path} 已使用“.NETFramework,Version=v4.6.1”而不是项目目标框架“.NETStandard,Version=v2.0”解决。此项目可能与您的项目不完全兼容。
在 Visual Studio 2019 中,我可以看到项目属性中列出的 Target 框架是“.NET Standard 2.0”。这意味着我的机器上安装了框架。当我在记事本中打开一个引发此警告的 .csproj 文件时,我看到 TargetFramework
元素设置为 netstandard2.0
。在这一点上,一切看起来都是正确的。但是,我不明白为什么我会收到上述错误或如何修复它。
如何消除上面显示的警告?
解决方法
这意味着您的 .NET Standard 2.0 项目对其他以 .NET Framework 4.6.1 为目标的项目具有引用依赖关系。
在 v2.0 之前的所有 .NET Standard 项目都不能可靠地依赖于使用非 .NET Standard 项目的其他项目,例如 .NET Framework 和 .NET Core 项目。目标依赖项的层次结构不正确,因为 .NET Standard 项目比 .NET Framework 和 .NET Core 具有更高的抽象(更通用)。 非 .NET Standard 项目可以具有对 .NET Framework 和 .NET Core 项目的引用依赖项。
基于上述事实(并参阅下面的文档)您可以强制 .NET Standard 项目依赖于 .NET Framework/NET Core 项目,但无法保证它会兼容,因此不会保证工作,尤其是在运行时。
.NET Standard 2.1 仅与 .NET Core 3.0 及更高版本兼容。
另请参阅 .NET Standard 的官方文档:https://docs.microsoft.com/en-us/dotnet/standard/net-standard
请参阅 .NET Standard 2.1 公告的官方博客文章:https://devblogs.microsoft.com/dotnet/announcing-net-standard-2-1/