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

Jos*_*rty 25 c# analyzer visual-studio roslyn visual-studio-2015

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

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

我的问题:

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

Ama*_*rek 19

您可以基于每个项目禁用分析器.

要做到这一点,右键单击项目>参考>分析仪Solution Explorer中,打开放活动规则集

带有打开活动规则集位置的屏幕截图

您可以禁用单个分析仪或整个分析仪包.

复选框以禁用分析器

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

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


改变.csproj:

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

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" />
...
Run Code Online (Sandbox Code Playgroud)

  • 这里的问题是解决方案中有数百个项目,所以我希望我不必一一禁用它们。它们也处于我无法控制的源代码控制之下,所以当我拉动时,我相信我的更改会被覆盖,对吗? (2认同)
  • 我希望有一种方法可以在整个解决方案的范围内管理分析仪.也许有人会投入. (2认同)
  • 但这实际上并没有停止 CPU 使用。 (2认同)

小智 8

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

在此处输入图片说明

  • 抱歉发帖晚了,但这是完全错误的。此选项根本不会禁用代码分析。它控制代码分析的完成位置。如果启用,则分析将在另一个 64 位进程中完成,结果将通过进程间通信传递到 VS 进程。如果启用该设置,则分析将在同一过程中完成。VS 团队的一些额外信息可以在这里找到:https://github.com/dotnet/roslyn-sdk/issues/515 (5认同)

d34*_*m4n 8

从 Visual Studio 2022 开始:工具 > 选项 > 文本编辑器 > C# > 高级

在此输入图像描述


Tam*_*mas 6

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

  • 是的,但服务仍然存在并使用CPU.那是什么意思呢? (8认同)
  • 我的防火墙弹出并显示“RoslynCodeAnalysisService32”正在尝试连接到互联网,即使未选中“完整解决方案分析”! (2认同)

Emi*_*ing 6

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

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

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


Sim*_*mon 6

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

<RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
<RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
<RunAnalyzers>false</RunAnalyzers>
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*cka 5

您可以将.editorconfig文件放置到想要关闭所有 .NET 分析器警告的文件夹(及其子文件夹)中:

root = true

[*.cs]

# Disable all .NET analyzers
dotnet_analyzer_diagnostic.severity = none
dotnet_diagnostic.severity = none 
Run Code Online (Sandbox Code Playgroud)

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


小智 5

在 Visual Studio 2022 中,我已解决并禁用这两项检查:

  • 启用“拉动”诊断(实验性,需要重新启动)
  • 在单独的进程中运行代码分析(需要重新启动)

在此输入图像描述

在罗斯林吃了很多公羊之前,视觉工作室工作得很好。