如何使用预处理器了解C#的版本?

时间:2019-05-08 10:06:30

标签: c# preprocessor preprocessor-directive c#-7.3 ifdefine

我在调试模式下的项目包含仅支持C#7.3的构造。但是在发布模式下,该项目应基于C#7.0构建,而没有特定的代码行。

我知道一些标准的预处理器符号,例如NET472NETSTANDARD2_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 :(得分:0)

如果您使用DEBUG定义来选择语言版本,则可以在 .csproj 文件中进行操作:

<Project ..>

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

  ...

</Project>

请注意,在用户界面中编辑项目设置可能会对此进行更改。