На странице документации Target Frameworks указано, что определенные определения автоматически устанавливаются на основе целевой структуры проекта, которая, как я предполагаю, изменится в зависимости от поля Target framework
в Properties > Application
:
Или при выборе целевой структуры при создании нового проекта Visual C # (Новый проект> Visual C #> Консольное приложение (.NET Framework))
Однако, насколько я тестировал, ни одно из определений, указанных в документации, фактически не определено.
Например, если я создаю проект .NET Framework 3.5
или вручную устанавливаю для существующего проекта значение .NET Framework 3.5
в свойствах, NET35
не определяется.
Я взял все определения, перечисленные на странице документации, и добавил код отладки, который печатает, если они определены, или нет, но ни один из них не определен:
Исходный код: https://gist.github.com/JohannesMP/ece8987fa18b2eaf830d7426c2256d6b
Я делаю неверное предположение о том, когда или как эти определения должны быть установлены? Каким другим переносимым способом я бы условно компилировал код на основе целевой платформы для каждой строки?
Я использую Visual Studio Community 2017 версии 15.8.4 со стандартной версией Microsoft .NET Framework 4.7.03056