如何禁用所有 Roslyn 代码分析器?

How do I disable all Roslyn Code Analyzers?

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

我知道可以在每个项目的基础上禁用分析器,但此解决方案包含 100 多个项目,所以我不想一个一个地执行此操作。

我的问题:

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

要执行此操作,请在 Solution Explorer 中右键单击 Project>References>Analyzers,然后单击 Open Active规则集

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

这将创建一个 <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" />
...

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

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

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

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

在您的 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

禁用Tools/Options/Text Editor/C#/Advanced 中的以下设置,并禁用分析组下的64 位进程进行代码分析。在vs2019测试过

可以将 .editorconfig 文件放置到一个文件夹(及其子文件夹)中,并希望关闭其所有 .NET 分析器警告:

root = true

[*.cs]

# Disable all .NET analyzers
dotnet_analyzer_diagnostic.severity = none
dotnet_diagnostic.severity = none 

如果代码库中有外部库副本并且不想修改其源代码,这将很有用。

截至 Visual Studio 2022 年: 工具 > 选项 > 文本编辑器 > C# > 高级