为 .Net 5.0 定义的预处理器符号是什么?

What are the preprocessor symbols defined for .Net 5.0?

当目标 .Net 5.0 时,您会在 #if 中使用什么?

即对于其他框架

.NET Framework

NETFRAMEWORK, NET20, NET35, NET40, NET45, NET451, NET452, NET46, NET461, NET462, NET47, NET471, NET472, NET48

.NET 标准

NETSTANDARD, NETSTANDARD1_0, NETSTANDARD1_1, NETSTANDARD1_2, NETSTANDARD1_3, NETSTANDARD1_4, NETSTANDARD1_5, NETSTANDARD1_6, NETSTANDARD2_0, NETSTANDARD2_1

.NET 核心

NETCOREAPP, NETCOREAPP1_0, NETCOREAPP1_1, NETCOREAPP2_0, NETCOREAPP2_1, NETCOREAPP2_2, NETCOREAPP3_0, NETCOREAPP3_1

如果您将构建输出设置为“详细”并在今天尝试此操作,您应该会看到类似的内容(在其余输出中 - 在 csc.exe 附近提及):

/define:TRACE;DEBUG;NETCOREAPP;NETCOREAPP5_0

所以:NETCOREAPP5_0 是您要找的东西 - 但是:这是否保持不变 在发布时 可能会改变。您可以在以后重复相同的过程以找出答案。

预处理器定义在 .NET 5 发布之前在 dotnet/sdk#12124 to fit this design 中发生了变化。发布版本定义:

NETCOREAPP
NET5_0

现在 #if (C# reference) 中也记录了这一点。它不再定义NETCOREAPP5_0