Как отключить все анализаторы кода Roslyn?

Я пытаюсь работать с большим проектом с открытым исходным кодом, в котором есть несколько аналитиков Roslyn Code. Когда я открываю решение, Visual Studio использует ~ 35% CPU в течение примерно 15 минут. Используя PerfView, я понял, что анализаторы кода, запускаемые в решении, утомляют Visual Studio.

Я знаю, что можно отключить анализаторы по каждому проекту, но это решение содержит более 100 проектов, поэтому я бы не стал делать это один за другим.

Мой вопрос (ы):

  • Можно ли отключить все анализаторы Roslyn для данного решения, чтобы избежать этого?
  • Можно ли отключить все анализаторы Roslyn для всех решений в Visual Studio?

Ответ 1

Попробуйте Tools/Options/Text Editor/C#/Advanced и отключите полный анализ решения. Он доступен только после обновления версии VS2015.

Ответ 2

Вы можете отключить анализаторы для каждого проекта.

Чтобы сделать это, щелкните правой кнопкой мыши на Проект > Ссылки > Анализаторы в Обозреватель решений и нажмите Открыть Active Rule Set

снимок экрана с расположением 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" />
...

Ответ 3

Можно ссылаться на файл набора правил, расположенный в родительской папке

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

Таким образом, вы можете определить один набор правил для всего решения.