完全更改 c# 项目中的 obj 文件夹位置

Completely change obj folder location in c# project

MSBuild 很奇怪

我已经试过了this and another answer and I also tried this one

之后,我在 .csproj 文件中更改了 <IntermediateOutputPath><BaseIntermediateOutputPath> 以及 <OutputPath> 但是...

它一直在旧 obj 文件夹中创建这个奇怪的东西(我不使用 nuget)

project.assets.json
project.nuget.cache
project.packagespec.json
...

我已经阅读了有关 Visual Studio 遗留工作流程导致此行为的信息,但是否存在任何解决方法?

我当前的 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <StartupObject>Program</StartupObject>
    <IntermediateOutputPath>..\..\obj\</IntermediateOutputPath>
    <BaseIntermediateOutputPath>..\..\obj\</BaseIntermediateOutputPath>
    <OutputPath>..\..\bin\Build\</OutputPath>
  </PropertyGroup>
  
  <ItemGroup>
    <ProjectReference Include="foo\dependency.csproj" />
  </ItemGroup>

</Project>

通过在项目的根目录中创建 Directory.Build.props 文件解决:

<Project>
    <PropertyGroup>
        <MSBUildProjectExtensionsPath>..\..\obj\</MSBUildProjectExtensionsPath>
    </PropertyGroup>
</Project>

非常脏而且 non-obvious microsoft-style 黑客

找到here

有没有好的windows的.NET编译器,又不会对自己产生穿透力?