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

Roy*_*mir 1 .net compiler-directives visual-studio .net-core .net-standard

我已阅读Microsoft有关如何检测目标框架的文章,例如:

netcoreapp2.2
net47
net58 
Run Code Online (Sandbox Code Playgroud)

但是在某些情况下,我并不关心确切的版本,而是一般的框架目标:

NETCORE
.Net Framework
Run Code Online (Sandbox Code Playgroud)

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

题:

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

Ste*_*edy 6

除了特定于版本的指令(例如)外NETSTANDARD2_0目标框架文档还列出了以下预处理器符号:

  • NETFRAMEWORK

  • NETSTANDARD

  • NETCOREAPP

...以及NETMF.NET Micro Framework,WPWindows Phone和UAPUniversal Windows Platform。


这是一个例子.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>   
    <TargetFrameworks>netstandard1.5;netstandard2.0;net48;netcoreapp3.0</TargetFrameworks>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

和C#类:

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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是选定的.NET Core 3.0(请参见左上角),NETCOREAPP“活动”区域为灰色,其他区域为灰色:

在此处输入图片说明