有没有一种方法可以重定向在.NET Core项目的构建期间创建的所有文件夹

时间:2019-11-21 12:23:55

标签: c# .net visual-studio .net-core

无论何时创建.NET Core项目,都会在构建期间创建“ bin”和“ obj”文件夹。有没有一种方法可以重定向“ obj”文件夹。我在.csproj中使用了以下内容,但这没有帮助

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
    <OutputPath>C:\Temp</OutputPath>
    <AssemblyName>ConsoleApp</AssemblyName>
    <IntermediateOutputPath>$(OutputPath)</IntermediateOutputPath>
    <OutDir>$(OutputPath)</OutDir>
 </PropertyGroup>

 <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(OS)' == 'Windows_NT'">
   <Exec Command="rmdir /S /Q obj" />
 </Target>

 <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(OS)' != 'Windows_NT'">
   <Exec Command="rm -r obj" />
 </Target>

</Project>

1 个答案:

答案 0 :(得分:1)

尝试在Directory.Build.Props文件中设置BaseOutputPath(bin)和BaseIntermediateOutputPath(obj)属性。

https://docs.microsoft.com/en-us/visualstudio/msbuild/common-msbuild-project-properties?view=vs-2019

您可以直接设置OutputPathIntermediateOuputPath,但这将阻止MSBuild创建特定于体系结构(x64 / x86)和配置(发布/调试)的文件夹,因此通常最好将其保留在

msbuild似乎在SDK项目加载中使用这些属性的时间早于各个csproj文件,因此要使用它们,您需要在解决方案文件旁边的Directory.Build.Props中进行设置。

文件应如下所示(如果有的话,还要加上其中已经包含的所有内容):

<Project>
  <PropertyGroup>
    <BaseIntermediateOutputPath>C:\TestFolder</BaseIntermediateOutputPath>
    <BaseOutputPath>C:\TestFolder</BaseOutputPath>
  </PropertyGroup>
</Project>