2016-04-06 45 views
16

Sto provando a lavorare con un grande progetto opensource che ha una manciata di analizzatori di codice Roslyn. Quando apro la soluzione, Visual Studio utilizza una CPU di circa il 35% per circa 15 minuti. Usando PerfView ho capito che gli analizzatori di codice che vengono eseguiti sulla soluzione stanno impantanando Visual Studio.Come disabilitare tutti gli analizzatori di codice Roslyn?

So che è possibile disabilitare gli analizzatori su una base per progetto, ma questa soluzione contiene oltre 100 progetti, quindi preferirei non farlo uno per uno.

La mia domanda (s):

  • Posso disattivare tutti Roslyn analizzatori per una data soluzione per evitare questo?
  • È possibile disabilitare tutti gli analizzatori Roslyn per tutte le soluzioni in Visual Studio?

risposta

3

Prova Tools/Options/Text Editor/C#/Advanced e disabilitare analisi completa soluzione. E 'disponibile solo a partire dal VS2015 Update 2.

+0

Questo ha funzionato alla grande, grazie! – JoshVarty

+0

@JoshVarty, ho installato l'aggiornamento 2 ma non è disponibile nulla. – Maxim

+0

È una casella di controllo nel gruppo Assistente Editor. – Tamas

8

È possibile disabilitare gli analizzatori per ogni progetto.

Per farlo, fate clic destro sul Progetto> Riferimenti> analizzatori nel Esplora soluzioni e ha colpito Aperto Regola attive di

screenshot with the location of Open Active Rule Set

È possibile disattivare i singoli analizzatori o interi fasci di analizzatori.

checkboxes to disable analyzers

Questo crea un file <ProjectName>.ruleset e modifica il <ProjectName>.csproj, il che significa che condividerete questa configurazione con la vostra squadra a meno che non si escludono questi cambiamenti dal controllo di origine.

Nota: le modifiche vengono applicate dopo aver chiuso e riaperto la soluzione.


Modifiche al .csproj:

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

Example.ruleset di file:

<?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" /> 
... 
+0

Il problema è che ci sono centinaia di progetti nella soluzione, quindi speravo di non doverli disabilitare uno per uno. Sono anche sotto il controllo dei sorgenti che non controllo, quindi quando tiro credo che i miei cambiamenti verranno sovrascritti, giusto? – JoshVarty

+1

Spero che ci sia un modo per gestire gli analizzatori su una scala dell'intera soluzione. Forse qualcuno inserirà. –

+0

Per aggirare i problemi di controllo del codice sorgente, creare un file '.ruleset' predefinito (in modo che' .csproj' sia aggiornato) e confermare queste modifiche. Quindi, applica la configurazione e segui [questa guida per mantenere le modifiche fuori da git repo] (https: // StackOverflow.it/questions/8309304/what-is-best-practice-for-keeping-secrets-out-of-a-git-repository) –

2

E' possibile fare riferimento a un file di set di regole si trova nella cartella principale

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

In questo modo è possibile definire un set di regole per l'intera soluzione.