微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的版本.

原文地址:https://www.jb51.cc/csharp/93771.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐