私は、Roslyn Code Analyzerをいくつか持っている大規模なオープンソースプロジェクトで仕事をしようとしています。ソリューションを開くと、Visual Studioは約15分間、約35%のCPUを使用します。 PerfViewを使用して、ソリューションで実行されているコードアナライザーがVisual Studioを動かしていることがわかりました。
プロジェクトごとにアナライザーを無効にすることは可能ですが、このソリューションには100を超えるプロジェクトが含まれているため、これを1つずつ実行することは避けたいと思います。
私の質問:
Tools/Options/Text Editor/C#/Advanced
および完全なソリューション分析を無効にします。 VS2015 Update 2以降でのみ利用可能です。
プロジェクトごとにアナライザーを無効にできます。
それを行うには、Project> References> AnalyzersでSolution Explorerを右クリックし、Openを押しますアクティブルールセット
個々のアナライザーまたはアナライザーのバンドル全体を無効にすることができます。
これにより<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" />
...
親フォルダーにあるルールセットファイルを参照することができます
<Project ...>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<CodeAnalysisRuleSet>..\Example.ruleset</CodeAnalysisRuleSet>
このようにして、ソリューション全体に対して1つのルールセットを定義できます。