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

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

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

Мои вопросы):

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

person JoshVarty    schedule 06.04.2016    source источник


Ответы (5)


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

person Tamas    schedule 26.04.2016
comment
@JoshVarty, я установил обновление 2, но там ничего нет. - person Maxim; 13.05.2016
comment
Это флажок в группе помощника редактора. - person Tamas; 13.05.2016
comment
@rolls Это действительно работает. Прочтите здесь, чтобы понять, для чего нужен этот флажок. - person HappyNomad; 04.05.2017
comment
Да, но служба все еще присутствует и использует ЦП. Так что это значит? - person rolls; 05.05.2017
comment
мой брандмауэр выскакивает и показывает, что RoslynCodeAnalysisService32 пытается подключиться к Интернету, даже если full solution analysis не отмечен! - person S.Serpooshan; 23.01.2018
comment
Это не работает с новым пакетом NuGet Roslyn Analyzers. - person Christian Findlay; 16.02.2019

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

Для этого щелкните правой кнопкой мыши Проект> Ссылки> Анализаторы в Обозревателе решений и нажмите Открыть активный набор правил.

снимок экрана с расположением открытого набора активных правил

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

флажки для отключения анализаторов

Это создает <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" />
...
person Amadeusz Wieczorek    schedule 06.04.2016
comment
Проблема здесь в том, что в решении есть сотни проектов, поэтому я надеялся, что мне не придется отключать их один за другим. Они также находятся под контролем источника, который я не контролирую, поэтому, когда я вытаскиваю, я считаю, что мои изменения будут перезаписаны, верно? - person JoshVarty; 06.04.2016
comment
Я надеюсь, что есть способ управлять анализаторами в масштабе всего решения. Может, кто-нибудь откликнется. - person Amadeusz Wieczorek; 07.04.2016
comment
Чтобы обойти проблемы системы управления версиями, создайте файл .ruleset по умолчанию (чтобы .csproj обновлялся) и зафиксируйте эти изменения. Затем примените свою конфигурацию и следуйте этому руководство по хранению изменений в репозитории git - person Amadeusz Wieczorek; 07.04.2016
comment
Однако на самом деле это не останавливает использование ЦП. - person rolls; 28.12.2018

Попробуйте выполнить комбинацию из следующего в ваших файлах 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

person Simon    schedule 22.10.2019

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

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

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

person Emiel Koning    schedule 13.04.2017
comment
Однако на самом деле это не останавливает использование ЦП. - person rolls; 28.12.2018

Отключите настройку ниже в Инструменты / Параметры / Текстовый редактор / C # / Advanced и отключите использование 64-битного процесса для анализа кода в группе анализа. это было протестировано в vs2019.

введите описание изображения здесь

person Prashanth T    schedule 19.05.2021