c# – 根据编译器版本的条件编译

前端之家收集整理的这篇文章主要介绍了c# – 根据编译器版本的条件编译前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一种实现这样的方式:
#if CSHARP_COMPILER_IS_FOR_CSHARP_6_OR_HIGHER
    foo?.Bar();
#else
    if (foo != null)
    {
        foo.Bar();
    }
#endif

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

有没有内置的常数?
我发现的问题相当老了.也许事情变了最好?

解决方法

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

你可以在csproj里面做一点魔法来定义常量…但它是复杂的…

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

或者您可以查看CSC编译器的路径…它存储在CscToolPath中,如果为空,则在MsBuildToolsPath中.从那里可能您可以辨别CSC的版本.

猜你在找的C#相关文章