【问题标题】:How do I disable all Roslyn Code Analyzers?如何禁用所有 Roslyn 代码分析器?
【发布时间】:2016-04-06 19:58:40
【问题描述】:

我正在尝试使用具有少量 Roslyn 代码分析器的大型开源项目。当我打开解决方案时,Visual Studio 使用 ~35% CPU 大约 15 分钟。使用 PerfView,我发现在解决方案上运行的代码分析器使 Visual Studio 陷入困境。

我知道可以针对每个项目禁用分析器,但这个解决方案包含 100 多个项目,所以我不想一个接一个地这样做。

我的问题:

  • 我可以禁用给定解决方案的所有 Roslyn 分析器以避免这种情况吗?
  • 我可以为 Visual Studio 中的所有解决方案禁用所有 Roslyn 分析器吗?

【问题讨论】:

    标签: c# visual-studio visual-studio-2015 roslyn analyzer


    【解决方案1】:

    您可以针对每个项目禁用分析器。

    为此,请在 Solution Explorer 中右键单击 Project>References>Analyzers 并点击 Open Active Rule Set

    您可以禁用单个分析器或整个分析器包。

    这将创建一个<ProjectName>.ruleset 文件并修改<ProjectName>.csproj,这意味着您将与您的团队共享此配置,除非您从源代码管理中排除这些更改。

    注意:关闭并重新打开解决方案后将应用更改。


    .csproj 的更改:

    <Project ...>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <CodeAnalysisRuleSet>Example.ruleset</CodeAnalysisRuleSet>
    

    Example.ruleset文件:

    <?xml version="1.0" encoding="utf-8"?>
    <RuleSet Name="Rules for WpfApplication1" Description="Code analysis rules for WpfApplication1.csproj." ToolsVersion="14.0">
      <Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp" RuleNamespace="Microsoft.CodeAnalysis.CSharp">
        <Rule Id="AD0001" Action="None" />
        <Rule Id="CS0028" Action="None" />
    ...
    

    【讨论】:

    • 这里的问题是解决方案中有数百个项目,所以我希望不必一一禁用它们。它们也处于我无法控制的源代码控制之下,所以当我拉取时,我相信我的更改会被覆盖,对吧?
    • 我希望有一种方法可以在整个解决方案的范围内管理分析器。也许有人会加入。
    • 要解决源代码管理问题,请创建一个默认的.ruleset 文件(以便更新.csproj)并提交这些更改。然后,应用您的配置并关注this guide to keep changes out of git repo
    • 这实际上并没有停止 CPU 的使用。
    【解决方案2】:

    在工具/选项/文本编辑器/C#/高级中禁用以下设置,并在分析组下禁用64位进程进行代码分析。在vs2019中测试过。

    【讨论】:

      【解决方案3】:

      在您的 csproj 或 Directory.Build.props 文件中尝试以下组合

      <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
      <RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
      <RunAnalyzers>false</RunAnalyzers>
      

      https://docs.microsoft.com/en-us/visualstudio/code-quality/disable-code-analysis?view=vs-2019#net-framework-projects

      【讨论】:

        【解决方案4】:

        尝试Tools/Options/Text Editor/C#/Advanced 并禁用完整的解决方案分析。它仅在 VS2015 Update 2 之后可用。

        【讨论】:

        • @JoshVarty,我已经安装了更新 2,但那里没有可用的东西。
        • Editor Helper 组中的一个复选框。
        • @rolls 确实有效。阅读here 了解复选框的用途。
        • 是的,但服务仍然存在并使用 CPU。那么这是什么意思呢?
        • 我的防火墙弹出并显示RoslynCodeAnalysisService32 正在尝试连接到互联网,即使full solution analysis 未被选中!
        【解决方案5】:

        可以引用位于父文件夹中的规则集文件

        <Project ...>
          <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
            <CodeAnalysisRuleSet>..\Example.ruleset</CodeAnalysisRuleSet>
        

        这样您就可以为整个解决方案定义一个规则集。

        【讨论】:

        • 这实际上并没有停止 CPU 的使用。
        猜你喜欢
        • 1970-01-01
        • 2020-11-11
        • 2021-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-23
        • 2015-11-28
        • 2016-06-25
        相关资源
        最近更新 更多