Как узнать версию C # с помощью препроцессора? - PullRequest
1 голос
/ 08 мая 2019

Мой проект в режиме отладки содержит конструкции, которые поддерживают только C # 7.3.Но в режиме Release проект должен быть построен на C # 7.0 без определенных строк кода.

Я знаю о некоторых стандартных символах препроцессора, таких как NET472 и NETSTANDARD2_0, но он используется для работы с различными стандартами и их версиями.,И это бесполезно для условий языковой версии.

public static Expression<TDelegate> CreateExpression<TDelegate>()
    where TDelegate : Delegate // Work in 7.3 and above
{ ... }

Я ожидал некоторых трюков, таких как

#if CSharpVersion >= 7.3
   where TDelegate : Delegate
#endif

Теперь я использую это утверждение:

#if DEBUG
    where TDelegate : Delegate
#endif

Но это не будетработать, если я изменю языковые версии в свойствах проекта.

1 Ответ

0 голосов
/ 08 мая 2019

Если вы используете определение DEBUG для выбора языковой версии, вы можете сделать это в файле .csproj :

<Project ..>

  <PropertyGroup>
    ...
    <LangVersion>7.0</LangVersion>
    <LangVersion Condition="'$(Configuration)' == 'Debug'">7.3</LangVersion>
    ...
  </PropertyGroup>

  ...

</Project>

Помните, что редактирование настроек проекта в пользовательском интерфейсе может изменить это.

...