Помимо директив для конкретных версий, которые вас не интересуют, в документации Target frameworks перечислены следующие символы препроцессора:
NETFRAMEWORK
NETSTANDARD
NETCOREAPP
Я проверял и проверял следующее .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', а остальные выделены серым цветом:
[Использование Visual Studio 2019 (v16.2.0 Preview 3)]
В статье также говорится:
Система сборки знает символы препроцессора, представляющие
целевые платформы, показанные в поддерживаемых версиях целевых структур
Таблица. При использовании символа, представляющего стандарт .NET или .NET
Основной TFM, замените точку подчеркиванием и измените строчные
буквы в верхнем регистре (например, символ для netstandard1.4
является
NETSTANDARD1_4
... и в таблице также можно найти не версионные символы для .NET Micro Framework (NETMF
), Windows Phone (WP
) и универсальной платформы Windows (UAP
).