首页 > 解决方案 > Roslyn / .NET Compiler Platform 获取当前项目 C# 语言版本

问题描述

我正在使用 Roslyn 编写一个简单的代码重构,ArgumentNullException如果参数为空,它将引入抛出异常,如下所示:

if (parameter == null)
  throw new ArgumentNullException("parameter");
_parameter = parameter;

现在,对于 C# 6,这可以使用nameof操作符变得更加优雅(可读?类型安全?等等)。从 C# 7 开始,我也可以使用 throw 表达式:

_parameter = parameter ?? throw new ArgumentNullException(nameof(parameter));

但是,很明显,如果项目的语言版本未设置为支持 C# 6 / C# 7 或功能要求的任何语言版本,则这不会编译。

鉴于这种情况,我的问题很简单。有没有办法用 Roslyn 确定当前的语言版本,所以我可以在生成时决定建议哪个代码片段?或者有没有其他方法可以检测当前 C# 项目中是否支持某个功能?

标签: c#visual-studioroslyn

解决方案


推荐阅读