1

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

我知道一些标准的预处理器符号,例如NET472andNETSTANDARD2_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

但如果我在项目属性中更改语言版本,它将不起作用。

4

1 回答 1

0

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

<Project ..>

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

  ...

</Project>

请注意,在 UI 中编辑项目设置可能会改变这一点。

于 2019-05-08T12:55:47.437 回答