Resharper:启用 C# 7.0 功能的警告?

Resharper: Enable warnings on C# 7.0 features?

我的问题与我在网上找到的几乎所有问题都相反。

我想在 Resharper 中启用 C# 7.0 warnings/errors(运行ning 在 VS2017 中,今天刚安装。)

我需要这样做,因为我正在处理的项目将发布到我工作场所的服务器上,并且当使用 C# 7.0 功能时,他们的 CI 会抛出致命错误 (R# C# 7.0 language feature),所以我不能使用它们(他们不会接受任何因 CI 而致命失败的项目。)

他们在 CI 中使用 Resharper CLI。所以我想让我的 Resharper 抛出同样的错误,这样我就可以快速定位并消除 C# 7.0 的特性。我的 Resharper 显示项目是干净的(除了一些小的 "it might be a problem but it's not for me" 东西),所以当我 运行 代码分析时,我没有致命错误甚至关于 C# 7.0 的警告。

到目前为止我看到的每个问题都是关于如何禁用 关于 C# 7.0 的警告。我的 Resharper 没有抛出任何警告或错误,而我们 CI 上的是。

我查看了所有选项,但找不到任何明显的 "C# 7.0" 选项。我一直在寻找类似 "maximum supported language/throw an error if language feature in later version is used/etc" 的东西,但我似乎找不到任何东西。

编辑:Web.config codedom 部分:

<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  </compilers>
</system.codedom>

它肯定设置为语言版本 6...

您可以通过右键单击项目配置构建引擎为每个项目使用的 C# 版本,select Properties,Select Build 部分,单击在 Advanced... 上,将 Language version 设置为您的 CI 服务器使用的任何版本。执行此操作后,当您在任何 C#7.0 功能上进行本地构建时,构建将失败。

或者您可以尝试将 CI 服务器升级为使用 C#7.0。

Resharper 语言规则和 Studio 规则位于不同的地方。 您可以在项目设置中找到 Studio(和 Roslyn)规则。 Resharper 在 [ProjectName].csproj.DotSettings 文件中保留警告规则。

Xml节点:

<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp70</s:String>

可以安全删除此文件以恢复默认设置。

警告文件 6.0 将是这样的:

<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
     <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp60</s:String>
</wpf:ResourceDictionary>