すべての .NET ビルドをカスタマイズする

この記事の手法は、特定のコンピューター、仮想マシン、またはコンテナーで実行されるすべてのビルドをカスタマイズする場合に便利です。 たとえば、ビルド サーバーを設定する場合、サーバー上のすべてのビルドに対してグローバルに MSBuild 設定を構成することが必要な場合があります。 原理的には、グローバルな Microsoft.Common.Targets ファイルまたは Microsoft.Common.Props ファイルを変更することができますが、より優れた方法があります。 特定の MSBuild プロパティを使用し、特定のカスタムの .targets および .props ファイルを追加することで、特定のプロジェクト タイプ (すべての C# プロジェクトなど) のすべてのビルドに影響を与えることができます。

before および after の標準の .props ファイルと .targets ファイル

MSBuild または Visual Studio のインストールによって管理されているすべての C# または Visual Basic ビルドに影響を与えるには、Microsoft.Common.targets の前後に実行されるターゲットを使用してファイル Custom.Before.Microsoft.Common.Targets または Custom.After.Microsoft.Common.Targets を作成するか、Microsoft.Common.props の前後に処理されるプロパティを使用してファイル Custom.Before.Microsoft.Common.Props または Custom.After.Microsoft.Common.Props を作成します。

次の MSBuild プロパティを使用して、これらのファイルの場所を指定できます。

  • CustomBeforeMicrosoftCommonProps
  • CustomBeforeMicrosoftCommonTargets
  • CustomAfterMicrosoftCommonProps
  • CustomAfterMicrosoftCommonTargets
  • CustomBeforeMicrosoftCSharpTargets
  • CustomBeforeMicrosoftVisualBasicTargets
  • CustomAfterMicrosoftCSharpTargets
  • CustomAfterMicrosoftVisualBasicTargets

これらのプロパティの Common バージョンは、C# プロジェクトおよび Visual Basic プロジェクトの両方に影響を与えます。 これらのプロパティは、MSBuild コマンド ラインで設定できます。

msbuild /p:CustomBeforeMicrosoftCommonTargets="C:\build\config\Custom.Before.Microsoft.Common.Targets" MyProject.csproj

警告

Visual Studio では、一致する型のプロジェクトをビルドするときに MSBuild フォルダー内でカスタムの .targets または .props ファイルが見つかった場合、必ずそれらを使用します。 これにより、意図しない結果が生じる可能性があります。正しく実行されないと、コンピューター上での Visual Studio のビルド機能が無効になる場合があります。

一般的な props ファイルを置き換える

また、プロパティ AlternateCommonProps を使用して、Microsoft.Common.props の代わりに使用する独自の .props ファイルを指定することもできます。 Microsoft.Common.props を直接変更してカスタマイズする必要があると感じた場合は、代わりにそのファイルの標準バージョンを別のファイルにコピーしてから、代替バージョンでのみ変更を行うことができます。

最適な方法はご自身のシナリオによって異なります。 Visual Studio の機能拡張を使用して、ビルド システムをカスタマイズし、カスタマイズしたシステムのインストールおよび管理を行うためのメカニズムを提供できます。

専用のビルド サーバーがあり、そのサーバー上で実行される適切なプロジェクト タイプのすべてのビルドにおいて、特定のターゲットが必ず実行されるようにする場合は、グローバルなカスタムの .targets または .props ファイルを使用することをお勧めします。 特定の条件が適用される場合にのみカスタム ターゲットを実行したい場合は、別のファイルの場所を使用し、必要な場合にのみ MSBuild コマンド ラインで適切な MSBuild プロパティを設定することで、そのファイルへのパスを設定します。