もくじ
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がない。よって、指定のパスに直接出力されるんだと思う。
これは地味にうれしい。