加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 03:45:57 所属栏目:百科 来源:网络整理
导读:我正在寻找一种实现这样的方式: #if CSHARP_COMPILER_IS_FOR_CSHARP_6_OR_HIGHER foo?.Bar();#else if (foo != null) { foo.Bar(); }#endif 当然,我可以自己定义一个条件编译符号,但它不合适. 有没有内置的常数? 我发现的问题相当老了.也许事情变了最好?
我正在寻找一种实现这样的方式:
#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的版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读