是否有任何正式的目标框架指令?
Are there any formalized target framework directives?
我读过Microsoft's article关于如何检测目标框架的内容,例如:
netcoreapp2.2
net47
net58
但有些情况下我不关心 exact 版本,而是一般框架目标:
NETCORE
.Net Framework
但是我没有找到这样的标志。
问题:
是否有任何通用标志?或者更好,我如何在不指定所有选项的情况下区分这两者?
除了 version-specific 指令,例如 NETSTANDARD2_0
,Target 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',其他区域显示为灰色:
我读过Microsoft's article关于如何检测目标框架的内容,例如:
netcoreapp2.2
net47
net58
但有些情况下我不关心 exact 版本,而是一般框架目标:
NETCORE
.Net Framework
但是我没有找到这样的标志。
问题:
是否有任何通用标志?或者更好,我如何在不指定所有选项的情况下区分这两者?
除了 version-specific 指令,例如 NETSTANDARD2_0
,Target 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',其他区域显示为灰色: