Visual Studio 2019 - .NET Standard 项目兼容性警告

问题描述

我继承了一个 .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/