是否有任何正式的目标框架指令?

Are there any formalized target framework directives?

我读过Microsoft's article关于如何检测目标框架的内容,例如:

netcoreapp2.2
net47
net58 

但有些情况下我不关心 exact 版本,而是一般框架目标:

NETCORE
.Net Framework

但是我没有找到这样的标志。

问题:

是否有任何通用标志?或者更好,我如何在不指定所有选项的情况下区分这两者?

除了 version-specific 指令,例如 NETSTANDARD2_0Target frameworks documentation 列出了以下预处理器符号:

  • NETFRAMEWORK

  • NETSTANDARD

  • NETCOREAPP

...和 ​​NETMF 用于 .NET Micro Framework,WP 用于 Windows Phone,UAP 用于通用 Windows平台。


这是一个例子.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>   
    <TargetFrameworks>netstandard1.5;netstandard2.0;net48;netcoreapp3.0</TargetFrameworks>
  </PropertyGroup>
</Project>

和 C# class:

namespace ClassLibrary1
{
    public class Class1
    {
        public void Test()
        {
#if NETFRAMEWORK
            System.Console.WriteLine(".NET Framework");
#elif NETCOREAPP
            System.Console.WriteLine(".NET Core");
#elif NETSTANDARD
            System.Console.WriteLine(".NET Standard");
#endif
        }
    }
}

这里选择了 .NET Core 3.0(见左上角),NETCOREAPP 区域 'live',其他区域显示为灰色: