モチベーション
とにかく邪魔。なまら邪魔。
C/C++ ならプロジェクトファイルを弄れば obj ディレクトリは移動できるんだけど、C# にはその設定がプロジェクトのプロパティに無い。
手順
- VisualStudio を閉じる。(とりあえず)
- ソリューションのディレクトリに
Directory.Build.propsという新しい空ファイルを作成します。
C:\Users\user\source\repos\Solution1>dir /a /b
.vs
Solution1.sln
Directory.Build.props <=== このファイル
WpfApp1
Directory.Build.propsを以下のように編集します。
<Project><PropertyGroup><BaseIntermediateOutputPath>$(SolutionDir)\.vs\$(SolutionName)\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath></PropertyGroup></Project>$(SolutionDir)やら $(SolutionName)やらは環境変数。
上記でうちの環境だと C:\Users\user\source\repos\Solution1\.vs\Solution1\obj\WpfApp\Debug\netcoreapp3.1とかに .g.csファイルなどが生成されるようになります。
BaseIntermediateOutputPath 要素の値を変更すればシステムのテンポラリディレクトリやドライブのルートディレクトリ以下のディレクトリなどに設定することも可能。