2016-04-06 32 views
16

Ich versuche mit einem großen Opensource-Projekt zu arbeiten, das eine Handvoll Roslyn Code Analyzer hat. Wenn ich die Lösung öffne, verwendet Visual Studio ~ 35% CPU für ungefähr 15 Minuten. Unter Verwendung von PerfView habe ich herausgefunden, dass die Codeanalysatoren, die auf der Lösung ausgeführt werden, Visual Studio herunterfahren.Wie deaktiviere ich alle Roslyn Code Analyzer?

Ich weiß, dass es möglich ist, Analysatoren pro Projekt zu deaktivieren, aber diese Lösung enthält über 100 Projekte, also würde ich lieber nicht eins nach dem anderen machen.

Meine Frage (n):

  • Kann ich alle Roslyn Analysatoren für eine bestimmte Lösung zu deaktivieren, dies zu vermeiden?
  • Kann ich alle Roslyn Analyzer für alle Lösungen in Visual Studio deaktivieren?

Antwort

3

Tools/Options/Text Editor/C#/Advanced Versuchen und vollständige Lösung Analyse deaktivieren. Es ist nur verfügbar seit VS2015 Update 2.

+0

Das hat super funktioniert, danke! – JoshVarty

+0

@JoshVarty, Ich habe Update 2 installiert, aber dort ist nichts verfügbar. – Maxim

+0

Es ist ein Kontrollkästchen in der Gruppe Editor Helper. – Tamas

8

Sie können Analysatoren pro Projekt deaktivieren.

, es zu tun, klicken Sie rechts auf Projekt> Referenzen> Analysatoren im Mappen-Explorer und schlug Öffnen Sie Active Regel Set

screenshot with the location of Open Active Rule Set

können Sie einzelne Analysatoren deaktivieren oder ganze Bündel von Analysatoren.

checkboxes to disable analyzers

Dies schafft eine <ProjectName>.ruleset Datei und ändert die <ProjectName>.csproj, was bedeutet, dass Sie diese Konfiguration mit Ihrem Team teilen, wenn Sie diese Änderungen aus der Quellcodeverwaltung auszuschließen.

Hinweis: Änderungen werden angewendet, nachdem Sie die Lösung geschlossen und erneut geöffnet haben.


Änderungen an der .csproj:

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

Example.ruleset Datei:

<?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

Das Problem hier ist, dass es Hunderte von Projekten in der Lösung gibt, so dass ich gehofft hatte, dass ich sie nicht nacheinander deaktivieren müsste. Sie sind auch unter Quellcode-Kontrolle, die ich nicht kontrolliere, also wenn ich ziehe, glaube ich, dass meine Änderungen überschrieben werden, richtig? – JoshVarty

+1

Ich hoffe, es gibt eine Möglichkeit, Analysatoren in einem Maßstab der gesamten Lösung zu verwalten. Vielleicht wird jemand reinhören. –

+0

Um die Probleme der Quellcodeverwaltung zu umgehen, erstellen Sie eine Standarddatei '.ruleset' (damit' .csproj' aktualisiert wird) und übernehmen Sie diese Änderungen. Dann wenden Sie Ihre Konfiguration an und befolgen Sie [diese Anleitung, um Änderungen aus dem Git Repo herauszuhalten] (https: // stackoverflow.com/questions/8309304/what-is-best-practice-für-halten-geheimnisse-aus-einem-git-repository) –

2

Es ist möglich, eine ruleset Datei in dem Ordner befindet Eltern zu verweisen

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

diese Weise erhalten Sie einen Regelsatz für die gesamte Lösung definieren könnte.