条件编译取决于编译器版本

时间:2015-08-13 08:35:30

标签: c# c#-6.0

我正在寻找实现这样的方法:

#if CSHARP_COMPILER_IS_FOR_CSHARP_6_OR_HIGHER
    foo?.Bar();
#else
    if (foo != null)
    {
        foo.Bar();
    }
#endif

当然,我可以自己定义条件编译符号,但它不合适。

是否有内置常量?
我发现的问题相当陈旧。也许,事情变得最好了?

1 个答案:

答案 0 :(得分:2)

不,据我所知,他们没有改变任何东西:-)

你可以在csproj中做一些魔术来定义常量......但它很复杂......

没有直接指定CSC版本的属性...有一个属性($(LangVersion))指定所需语言标准的版本......但通常设置为{{1所以“编译器支持的最大值”......

或者您可以查看CSC编译器的路径...它存储在default中,如果为空,则存储在CscToolPath中。从那里也许您可以看出CSC的版本。