web-dev-qa-db-ja.com

すべてのRoslyn Code Analyzerを無効にするにはどうすればよいですか?

私は、Roslyn Code Analyzerをいくつか持っている大規模なオープンソースプロジェクトで仕事をしようとしています。ソリューションを開くと、Visual Studioは約15分間、約35%のCPUを使用します。 PerfViewを使用して、ソリューションで実行されているコードアナライザーがVisual Studioを動かしていることがわかりました。

プロジェクトごとにアナライザーを無効にすることは可能ですが、このソリューションには100を超えるプロジェクトが含まれているため、これを1つずつ実行することは避けたいと思います。

私の質問:

  • これを回避するために、特定のソリューションのすべてのRoslyn Analyzerを無効にできますか?
  • Visual StudioのすべてのソリューションのすべてのRoslyn Analyzerを無効にできますか?
22
JoshVarty

Tools/Options/Text Editor/C#/Advancedおよび完全なソリューション分析を無効にします。 VS2015 Update 2以降でのみ利用可能です。

5
Tamas

プロジェクトごとにアナライザーを無効にできます。

それを行うには、Project> References> AnalyzersSolution Explorerを右クリックし、Openを押しますアクティブルールセット

screenshot with the location of Open Active Rule Set

個々のアナライザーまたはアナライザーのバンドル全体を無効にすることができます。

checkboxes to disable analyzers

これにより<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" />
...
18

親フォルダーにあるルールセットファイルを参照することができます

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

このようにして、ソリューション全体に対して1つのルールセットを定義できます。

3
Emiel Koning