如何禁用所有 Roslyn 代码分析器?
How do I disable all Roslyn Code Analyzers?
我正在尝试使用一个大型开源项目,该项目有一些 Roslyn 代码分析器。当我打开解决方案时,Visual Studio 使用 ~35% CPU 大约 15 分钟。使用 PerfView 我发现解决方案中 运行 的代码分析器正在陷入困境 Visual Studio.
我知道可以在每个项目的基础上禁用分析器,但此解决方案包含 100 多个项目,所以我不想一个一个地执行此操作。
我的问题:
- 我可以禁用给定解决方案的所有 Roslyn 分析器以避免这种情况吗?
- 我可以为 Visual Studio 中的所有解决方案禁用所有 Roslyn 分析器吗?
您可以针对每个项目禁用分析器。
要执行此操作,请在 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>
禁用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# > 高级
我正在尝试使用一个大型开源项目,该项目有一些 Roslyn 代码分析器。当我打开解决方案时,Visual Studio 使用 ~35% CPU 大约 15 分钟。使用 PerfView 我发现解决方案中 运行 的代码分析器正在陷入困境 Visual Studio.
我知道可以在每个项目的基础上禁用分析器,但此解决方案包含 100 多个项目,所以我不想一个一个地执行此操作。
我的问题:
- 我可以禁用给定解决方案的所有 Roslyn 分析器以避免这种情况吗?
- 我可以为 Visual Studio 中的所有解决方案禁用所有 Roslyn 分析器吗?
您可以针对每个项目禁用分析器。
要执行此操作,请在 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>
禁用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# > 高级