首页 > 解决方案 > 是否有任何正式的目标框架指令?

问题描述

我读过微软关于如何检测目标框架的文章,例如:

netcoreapp2.2
net47
net58 

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

NETCORE
.Net Framework

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

问题:

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

标签: .netvisual-studio.net-core.net-standardcompiler-directives

解决方案


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

  • NETFRAMEWORK

  • NETSTANDARD

  • NETCOREAPP

...以及NETMF.NET Micro Framework、WPWindows Phone 和UAP通用 Windows 平台。


这是一个例子.csproj

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

和 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
        }
    }
}

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

在此处输入图像描述


推荐阅读