Мой проект в режиме отладки содержит конструкции, которые поддерживают только 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
Но это не сработает, если я поменяю языковые версии в свойствах проекта.