首页 > 解决方案 > 完全更改 c# 项目中的 obj 文件夹位置

问题描述

MSBuild 很奇怪

我已经尝试过这个和另一个答案,我也尝试过这个

之后,我更改了文件中的<IntermediateOutputPath>and <BaseIntermediateOutputPath>,但是...<OutputPath>.csproj

它不断在旧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>

标签: c#windowsvisual-studiomsbuildcsproj

解决方案


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

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

非常肮脏和不明显的微软风格黑客

在这里找到

有没有什么好的 .NET 编译器用于 Windows 而不会渗透到你自己?


推荐阅读