我可以根据C#版本生成预处理器指令吗?

我可以根据C#版本生成预处理器指令吗?,c#,constants,c#-6.0,C#,Constants,C# 6.0,有没有可能定义一个编译时常量来表示代码是由C#5还是C#6编译的?例如: <DefineConstants Condition=" '$(???LanguageVersion???)' != 'v6.0' "> NOT_RUNNING_ON_6 </DefineConstants> 不在6上运行 项目文件中定义的常量均由MSBuild设置。它不知道编译器的版本。它还仅将所有这些属性委托给Csc任务。因为编译器不会根据版本设置常量,所以您不能这样做 您可以使用

有没有可能定义一个编译时常量来表示代码是由C#5还是C#6编译的?例如:

<DefineConstants Condition=" '$(???LanguageVersion???)' != 'v6.0' ">
     NOT_RUNNING_ON_6
</DefineConstants>

不在6上运行

项目文件中定义的常量均由MSBuild设置。它不知道编译器的版本。它还仅将所有这些属性委托给
Csc
任务。因为编译器不会根据版本设置常量,所以您不能这样做


您可以使用自定义生成过程包装器来确定编译器版本并相应地更改项目文件。

我将让您在第一行添加缺少的
。相关:签出,利用生成配置。这类似于检测.NET版本,但从下面的答案来看,不同之处在于,用一种简单的方式是不可能的。