次の方法で共有


ソリューション ビルドをカスタマイズする

MSBuild は、ソリューション ファイルをビルドするときに、最初にファイルを内部的にプロジェクト ファイルに変換してから、そのプロジェクト ファイルをビルドします。 生成されたプロジェクト ファイルは、before.< をインポートできますsolutionname>.sln.targets ファイルは、ターゲットを定義する前に、after.< をインポートしますターゲットをインポートした後の solutionname>.sln.targets

ターゲットの前後のファイルは、$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportBeforeおよび$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportAfterディレクトリにインストールされます。

そのため、たとえば、次の名前のファイルを作成して、ビルド後にカスタム ログ メッセージ MyCustomizedSolution.sln 書き込むための新しいターゲットを定義できます 。同 じディレクトリ内の MyCustomizedSolution.sln.targets。

<Project>
 <Target Name="EmitCustomMessage" AfterTargets="Build">
   <Message Importance="High" Text="The solution has completed the Build target" />
 </Target>
</Project>

ソリューション ビルドはプロジェクト ビルドとは別であるため、これらの設定はプロジェクト ビルドには影響しません。

重要

この方法でソリューション ビルドをカスタマイズすると、 MSBuild.exe または dotnet buildを使用したコマンド ライン ビルドにのみ適用され、Visual Studio 内のビルドには適用されません。 そのため、ソリューション レベルでカスタマイズを行わないのが最善です。 ソリューション内のすべてのプロジェクトをカスタマイズする代わりに、ソリューション フォルダー内の Directory.Build.props ファイルと Directory.Build.targets ファイルを使用することをお勧めします。

通常、 $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile フォルダーに書き込むには、昇格されたアクセス許可が必要です。 同じように拡張するソリューション ファイルが多数あるが、 SolutionFile フォルダーに書き込みたくない場合は、 Directory.Solution.props ファイルと Directory.Solution.targets ファイルを作成し、拡張するソリューション ファイルの上のルート パスに配置できます。 Directory.Solution.props はソリューション ビルドの開始時にインポートされ、Directory.Solution.targets はソリューション ビルドの最後にインポートされます。

ソリューション ファイルをビルドする場合、 Directory.Build.propsDirectory.Build.targets はインポートされないため、代わりに Directory.Solution.propsDirectory.Solution.targets を使用する必要があります。 2 種類のファイルは、相互に暗黙的にインポートされません。

ルート フォルダーに Directory.Solution.props または Directory.Solution.targets ファイルがあるが、そのフォルダーの下のソリューションでこれらのファイルをインポートしたくない場合は、ソリューションの before.<solutionname>.sln.targets ファイルを使用して、プロパティの ImportDirectorySolutionPropsImportDirectorySolutionTargetsfalseに設定します。

または、 $(DirectorySolutionPropsPath) プロパティと $(DirectorySolutionTargetsPath) プロパティを使用して、それらのファイルの別の場所を指定することもできます。 この方法は、ソリューションのサブセットで共通の特定のプロパティ値またはターゲットが必要な場合に役立ちます。

ソリューション ビルドは、MSBuild 17.12 以降の .slnx ソリューション ファイル形式でサポートされています。 before.< の両方solutionname>.slnx.targets および before.<solutionname>.sln.targets、および対応する after ファイルは、MSBuild 17.14 以降で動作します。

ビルドのカスタマイズ オプションの詳細については、「 ビルドのカスタマイズ」を参照してください