2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#】ソリューション全体に一括で警告出力を設定する方法

Posted at

はじめに

Aspire や Blazor を使用すると、1つのソリューションに複数のプロジェクトが含まれることが一般的です。このような場合、各プロジェクトで個別に警告設定を行うのは手間がかかります。本記事では、Directory.Build.props を使用してソリューション全体で警告設定を共有する方法について解説します。

プロジェクト単位の設定

通常、プロジェクトの .csproj ファイルに以下のような設定を追加します。

<PropertyGroup>
    <EnableNETAnalyzers>true</EnableNETAnalyzers> <!-- CA系アナライザーを有効 -->
    <AnalysisMode>Recommended</AnalysisMode> <!-- 推奨のアナライザーを有効 -->
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> <!-- スタイル違反をビルドに反映 -->
    <WarningLevel>5</WarningLevel>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

しかし、複数のプロジェクトがある場合、すべてのプロジェクトにこれを繰り返す必要があります。

解決策:Directory.Build.props を使用

すべてのプロジェクトに設定を適用する方法がデフォルトで用意されています。

重要なポイント:

  • 設定をプロジェクト単位(.csproj)から ソリューションレベル に移動
  • 細かい制御が必要な場合は .editorconfig に記載

実装手順

  1. Directory.Build.props を作成

    ソリューションルート(すべてのプロジェクトが入っているフォルダ)に Directory.Build.props ファイルを新規作成します。

  2. 設定を記載

    以下のコードをコピーして Directory.Build.props に貼り付けます。必ず <Project> タグと <PropertyGroup> タグで囲みます。

Directory.Build.props
<Project>

  <PropertyGroup>
    <!-- .NET 公式 Roslyn Analyzers(CAxxxx)を有効化 -->
    <EnableNETAnalyzers>true</EnableNETAnalyzers>

    <!-- 推奨レベルのアナライザーセットを有効 -->
    <!-- 指定可能な値: None / Minimal / Recommended / All -->
    <AnalysisMode>Recommended</AnalysisMode>

    <!-- コードスタイル違反(IDE系)をビルド時にも評価 -->
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>

    <!-- コンパイラ警告レベル(最大: 5) -->
    <WarningLevel>5</WarningLevel>

    <!-- XML ドキュメントコメントを生成(CS1591 等が有効化) -->
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
  </PropertyGroup>

</Project>

各設定項目の説明

設定項目 説明
EnableNETAnalyzers .NET 公式の Roslyn Analyzers(CA 系)を有効化
AnalysisMode アナライザーセットのレベル。Recommended がバランスが良い
EnforceCodeStyleInBuild IDE 系のコードスタイル違反をビルド時に評価
WarningLevel 最大の警告レベルは 5
GenerateDocumentationFile XML ドキュメントコメント生成(未記載だと CS1591 警告)

メリット

一元管理:設定を1か所で管理可能
保守性向上:新しいプロジェクト追加時に自動的に同じ設定が適用される
統一性確保:ソリューション全体で同じ警告レベルを強制

カスタマイズ例

特定のプロジェクトのみ異なる設定にしたい場合は、そのプロジェクトの .csproj で上書きできます。

<!-- 個別プロジェクトでの上書き例 -->
<PropertyGroup>
    <AnalysisMode>All</AnalysisMode>  <!-- より厳しいチェックに -->
</PropertyGroup>

さいごに

それぞれのプロジェクトで個別に設定するのではなく1か所で設定すれば全プロジェクトに反映することが可能です。また今回は警告出力を設定しましたがそれ以外の設定でも.csprojに記載している設定を全プロジェクトに一括で反映することが可能です。

この記事が皆様のコーディングライフの助けになれば幸いです。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?