.NETのビルド成果物が、binの中のx64やDebugフォルダの中ではなく、bin直下もしくは指定のフォルダ直下に出力されてほしい

もくじ
https://tera1707.com/entry/2022/02/06/144447

やりたいこと

C#/.NET9などのプロジェクト(.csproj)をビルドすると、出力ファイル(.exeなど)が、だいたいこういう階層の中にできちゃう。

※bin > x64 > Debug の中、など

それを、指定したフォルダのすぐ直下に出力されるようにしたい。

やったこと

.csprojに、

<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>

<OutputPath>出力したいファイルパス</OutputPath>

を追加する。

出力したいファイルパスには、マクロも使える。例えば

<OutputPath>$(MSBuildProjectDirectory)\bin\</OutputPath>

とすると、PJフォルダの下のbinの中に出力される。

こんな感じ

※具体的なローカルパス指定でもOK。

ちなみに

プロジェクトのプロパティの中の「基本出力パス」にパスを指定すると、

csproj的には「BaseOutputPath」という値にそのパスが入る。

それでビルドすると、そのBaseOutputPathに指定したパスの下に、「x64」や「Debug」フォルダの階層ができて、その下に出力物ができる。

今回のやり方は<OutputPath>なので、Baseがない。よって、指定のパスに直接出力されるんだと思う。

これは地味にうれしい。