プロジェクトによって生成される出力の場所は、構成ごとに指定できます (デバッグ、リリース、またはその両方の場合)。 既定の設定では、出力フォルダーはプロジェクトの種類と SDK によって異なり、一部のプロジェクトではプラットフォーム固有またはフレームワーク固有のサブフォルダーが使用されます。
Visual Studio には、プロジェクト フォルダーに対する相対パスを指定するか、ファイル システム内の任意の場所に絶対パスを指定して、中間出力と最終出力をカスタム フォルダーに配置できるプロパティが用意されています。 Visual Studio プロジェクトのプロパティで指定した設定に加えて、プロジェクト ファイルを編集し、MSBuild と .NET SDK の機能を使用して、個々のプロジェクトまたは多くのプロジェクトのソリューション レベルで、プロジェクト出力のすべての側面を完全に制御することで、出力をさらにカスタマイズすることもできます。
ビルド出力ディレクトリを変更する
プロジェクトまたはソリューションをクリーンアップして既存の出力ファイルを削除します (ビルド>クリーン ソリューション)。
プロジェクトのプロパティ ページを開くには、ソリューション エクスプローラーの でプロジェクト ノード 右クリックし、[プロパティ] 選択します。
プロジェクトの種類に基づいて適切なタブを選択します。
- C# の場合は、[ビルド ] タブ 選択します。
- Visual Basic の場合は、[コンパイル ] タブ 選択します。
- C++ または JavaScript の場合は、[全般] タブを選択します。
上部の [構成] ドロップダウンで、出力ファイルの場所を変更したい構成を選択します(デバッグ、リリース、または すべての構成)。
ページで出力パスエントリを見つけます。プロジェクトの種類によって異なります。
- C# および JavaScript プロジェクトの出力パス
- Visual Basic プロジェクトのビルド出力パス
- Visual C++ プロジェクトの出力ディレクトリ
出力を生成するパスを入力してください (絶対パス、またはルートプロジェクトディレクトリに対する相対パス)。または、[参照] を選択してそのフォルダーを参照します。
の出力パス プロパティ
手記
一部のプロジェクト (.NET および ASP.NET Core) では、既定でビルド パスにフレームワークバージョンまたはランタイム識別子が含まれます。 これを変更するには、ソリューション エクスプローラーの でプロジェクト ノード右クリックし、[プロジェクト ファイルの編集] 選択し、次を追加します。
<PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> </PropertyGroup>
ヒント
指定した場所に出力が生成されない場合は、Visual Studio のメニュー バーで選択して、対応する構成 (デバッグ や リリースなど) をビルドしていることを確認します。
Visual Studio 2019 で
共通の出力ディレクトリへのビルド
既定では、Visual Studio はソリューション内の独自のフォルダー内のソリューションに各プロジェクトをビルドします。 プロジェクトのビルド出力パスを変更して、すべての出力を同じフォルダーに強制的に配置することができます。
すべてのソリューション出力を共通ディレクトリに配置するには
ソリューションをクリーンして既存の出力ファイルを削除します ([Build>Clean solution])。
ソリューション内の 1 つのプロジェクトをクリックします。
プロジェクト メニューで、プロパティをクリックします。
各プロジェクトでは、その種類に応じて、[コンパイル ] または [ビルド を選択し、出力パス または 基本出力パスを、ソリューション内のすべてのプロジェクトで使用するフォルダーに 設定します。
プロジェクトのプロジェクト ファイルを開き、最初のプロパティ グループに次のプロパティ宣言を追加します。
<PropertyGroup> <!-- existing property declarations are here --> <UseCommonOutputDirectory>true</UseCommonOutputDirectory> </PropertyGroup>
UseCommonOutputDirectory
をtrue
に設定すると、Visual Studio とその基になるビルド エンジン (MSBuild) に対して、複数のプロジェクト出力を同じフォルダーに配置することが指示されるため、MSBuild では、プロジェクトが他のプロジェクトに依存している場合に通常発生するコピー手順は省略されます。ソリューション内のすべてのプロジェクトに対して手順 2 から 5 を繰り返します。 共通の出力ディレクトリを使用しない例外的なプロジェクトがある場合は、一部のプロジェクトをスキップできます。
プロジェクトの中間出力ディレクトリを設定するには (.NET プロジェクト)
プロジェクトをクリーンアップして、既存の出力ファイルを削除します。
プロジェクト ファイルを開きます。
最初のプロパティ グループに次のプロパティ宣言を追加します。
<PropertyGroup> <!-- existing property declarations are here --> <IntermediateOutputPath>path</IntermediateOutputPath> </PropertyGroup>
パスはプロジェクト ファイルに対する相対パスか、絶対パスを使用できます。 プロジェクト名をパスに配置する場合は、MSBuild プロパティ
$(MSBuildProjectName)
、$(MSBuildProjectDirectory)
を使用して参照できます。 使用できるその他のプロパティについては、MSBuild の予約済みプロパティと既知のプロパティ を参照してください。Visual Studio では、ビルド時にプロジェクト フォルダーの下に obj フォルダーが作成されますが、空です。 ビルド プロセスの一部として削除できます。 これを行う方法の 1 つは、ビルド後のイベントを追加して次のコマンドを実行することです。
rd "$(ProjectDir)obj" /s /q
「カスタム ビルド イベントを指定する」を参照してください。
Visual Studio 2022 では、プロジェクトの種類に応じて、プロジェクト デザイナーのユーザー インターフェイスが異なります。 .NET Framework プロジェクトでは従来の .NET プロジェクト デザイナーが使用されますが、.NET Core (および .NET 5 以降) プロジェクトでは現在の .NET プロジェクト デザイナーが使用されます。 C++ プロジェクトでは、独自のプロパティ ページ ユーザー インターフェイスが使用されます。 このセクションの手順は、使用しているプロジェクト デザイナーによって異なります。
ビルド出力ディレクトリを変更する
この手順は、.NET Core または .NET 5 以降を対象とする Visual Studio 2022 のプロジェクトに適用されます。
プロジェクトまたはソリューションをクリーンアップして既存の出力ファイルを削除します (ビルド>クリーン ソリューション)。
ソリューション エクスプローラーの でプロジェクト ノード 右クリックし、[プロパティ] 選択します。
C# プロジェクトの場合は、[Build] セクションを展開し、[Output サブセクションまで下にスクロールします。 Visual Basic の場合は、[ コンパイル] セクションを展開し、[ 全般]を確認します。
ベース出力パスを見つけ、出力を生成するパスを入力するか (絶対またはルート プロジェクト ディレクトリに対する相対パス)、参照 を選択して、代わりにそのフォルダーを参照します。 構成名がベース出力パスに追加され、実際の出力パスが生成されることに注意してください。
C#:
Visual Basic:
手記
既定では、一部のプロジェクト (.NET および ASP.NET Core) には、最終的な出力パスにフレームワークバージョンまたはランタイム識別子が含まれます。 これを変更するには、ソリューション エクスプローラーの でプロジェクト ノード右クリックし、[プロジェクト ファイルの編集] 選択し、次を追加します。
<PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> </PropertyGroup>
共通の出力ディレクトリへのビルド
既定では、Visual Studio はソリューション内の独自のフォルダー内のソリューションに各プロジェクトをビルドします。 プロジェクトのビルド出力パスを変更して、すべての出力を同じフォルダーに強制的に配置することができます。
ソリューションをクリーンして既存の出力ファイルを削除します ([Build>Clean solution])。
ソリューション内の 1 つのプロジェクトをクリックします。
プロジェクトのメニュー で、[プロパティ] をクリックします。
各プロジェクトでは、その種類に応じて、[コンパイル ] または [ビルド を選択し、出力パス または 基本出力パスを、ソリューション内のすべてのプロジェクトで使用するフォルダーに 設定します。
プロジェクトのプロジェクト ファイルを開き、最初のプロパティ グループに次のプロパティ宣言を追加します。
<PropertyGroup> <!-- existing property declarations are here --> <UseCommonOutputDirectory>true</UseCommonOutputDirectory> </PropertyGroup>
UseCommonOutputDirectory
をtrue
に設定すると、Visual Studio とその基になるビルド エンジン (MSBuild) に対して、複数のプロジェクト出力を同じフォルダーに配置することが指示されるため、MSBuild では、プロジェクトが他のプロジェクトに依存している場合に通常発生するコピー手順は省略されます。ソリューション内のすべてのプロジェクトに対して手順 2 から 5 を繰り返します。 共通の出力ディレクトリを使用しない例外的なプロジェクトがある場合は、一部のプロジェクトをスキップできます。
ヒント
指定した場所に出力が生成されない場合は、Visual Studio のメニュー バーで選択して、対応する構成 (デバッグ や リリースなど) をビルドしていることを確認します。
プロジェクトの中間出力ディレクトリを設定する
この手順は、.NET Core または .NET 5 以降を対象とする Visual Studio 2022 のプロジェクトに適用されます。
プロジェクトをクリーンアップして、既存の出力ファイルを削除します。
プロジェクト ファイルを開きます。
最初のプロパティ グループに次のプロパティ宣言を追加します。
<PropertyGroup> <!-- existing property declarations are here --> <IntermediateOutputPath>path</IntermediateOutputPath> </PropertyGroup>
パスはプロジェクト ファイルに対する相対パスか、絶対パスを使用できます。 プロジェクト名をパスに配置する場合は、MSBuild プロパティ
$(MSBuildProjectName)
、$(MSBuildProjectDirectory)
を使用して参照できます。 使用できるその他のプロパティについては、MSBuild の予約済みプロパティと既知のプロパティ を参照してください。Visual Studio では、ビルド時にプロジェクト フォルダーの下に obj フォルダーが作成されますが、空です。 ビルド プロセスの一部として削除できます。 これを行う方法の 1 つは、ビルド後のイベントを追加して次のコマンドを実行することです。
rd "$(ProjectDir)obj" /s /q
「カスタム ビルド イベントを指定する」を参照してください。
Directory.Build.props を使用して出力ディレクトリを設定する
プロジェクトの数が多く、それらすべてに対して出力フォルダーを変更する場合は、この記事で前述した方法を使用して各プロジェクトを変更するのは面倒でエラーが発生しやすくなります。 このような場合は、ソリューション フォルダー Directory.Build.propsにファイルを作成して、ソリューション内のすべてのプロジェクトに適用する適切な MSBuild プロパティを 1 か所で設定できます。 この特定の名前のファイルを影響を受けるすべてのプロジェクトの親フォルダーに配置することで、カスタマイズを 1 か所で簡単に維持でき、値を簡単に変更できます。 「フォルダー別にビルドをカスタマイズする」を参照してください。
アーティファクトを利用してビルド出力を整理する
.NET 8 プロジェクトでは、成果物機能を使用して、高度にカスタマイズ可能で柔軟な方法で出力を配置できます。 アーティファクト出力レイアウトを参照してください。