Я пытаюсь использовать директиву компилятора if для условного включения некоторого кода, который требуется для более ранних версий .Net Framework, но не для более поздних версий.
Я использовал следующие ссылки из MSDN, ссылка # if в директиве компилятора , и ссылка Target Frameworks .
Я создаю приложение .Net 4.5.1, но символ NET451 не 'Похоже, он не определен, как и другие.
Я адаптировал пример из статьи MSDN Target Frameworks, чтобы включить все символы инфраструктуры, чтобы я мог видеть, какой из них определен.
#if NET20
Console.WriteLine("Target framework: NET20");
#elif NET35
Console.WriteLine("Target framework: NET35");
#elif NET40
Console.WriteLine("Target framework: NET40");
#elif NET45
Console.WriteLine("Target framework: NET45");
#elif NET451
Console.WriteLine("Target framework: NET451");
#elif NET452
Console.WriteLine("Target framework: NET452");
#elif NET46
Console.WriteLine("Target framework: NET46");
#elif NET461
Console.WriteLine("Target framework: NET461");
#elif NET462
Console.WriteLine("Target framework: NET462");
#elif NET47
Console.WriteLine("Target framework: NET47");
#elif NET471
Console.WriteLine("Target framework: NET471");
#elif NET472
Console.WriteLine("Target framework: NET472");
#elif NETSTANDARD1_0
Console.WriteLine("Target framework: NETSTANDARD1_0");
#elif NETSTANDARD1_1
Console.WriteLine("Target framework: NETSTANDARD1_1");
#elif NETSTANDARD1_2
Console.WriteLine("Target framework: NETSTANDARD1_2");
#elif NETSTANDARD1_3
Console.WriteLine("Target framework: NETSTANDARD1_3");
#elif NETSTANDARD1_4
Console.WriteLine("Target framework: NETSTANDARD1_4");
#elif NETSTANDARD1_5
Console.WriteLine("Target framework: NETSTANDARD1_5");
#elif NETSTANDARD1_6
Console.WriteLine("Target framework: NETSTANDARD1_6");
#elif NETSTANDARD2_0
Console.WriteLine("Target framework: NETSTANDARD2_0");
#elif NETCOREAPP1_0
Console.WriteLine("Target framework: NETCOREAPP1_0");
#elif NETCOREAPP1_1
Console.WriteLine("Target framework: NETCOREAPP1_1");
#elif NETCOREAPP2_0
Console.WriteLine("Target framework: NETCOREAPP2_0");
#elif NETCOREAPP2_1
Console.WriteLine("Target framework: NETCOREAPP2_1");
#elif NETCOREAPP2_2
Console.WriteLine("Target framework: NETCOREAPP2_2");
#else
Console.WriteLine("Could not tell which framework we're using.");
#endif
В результате получается «Не могу сказать, какую платформу мы используем».
Я что-то не так делаю?Документация неверна?Или я нашел ошибку?