我在调试模式下的项目包含仅支持C#7.3的构造。但是在发布模式下,该项目应基于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
但是如果我在项目属性中更改语言版本,它将无法正常工作。
答案 0 :(得分:0)
如果您使用DEBUG
定义来选择语言版本,则可以在 .csproj 文件中进行操作:
<Project ..>
<PropertyGroup>
...
<LangVersion>7.0</LangVersion>
<LangVersion Condition="'$(Configuration)' == 'Debug'">7.3</LangVersion>
...
</PropertyGroup>
...
</Project>
请注意,在用户界面中编辑项目设置可能会对此进行更改。