【问题标题】:Is there a way to redirect all the folders created during build time of a .NET Core project有没有办法重定向在 .NET Core 项目的构建期间创建的所有文件夹
【发布时间】:2019-11-21 12:23:55
【问题描述】:

每当我们创建 .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>

【问题讨论】:

  • 你只需要obj文件夹吗
  • 我不想在.csproj所在的目录下创建任何文件夹
  • 你尝试过 VS 的 GUI 吗? docs.microsoft.com/en-us/visualstudio/ide/…
  • 用命令提示符试过
  • 不,我的意思是,尝试从 VS GUI 设置输出路径

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


【解决方案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) 和配置 (Release/Debug) 特定文件夹,因此通常最好保留它。

看起来 msbuild 在 SDK 项目加载中使用这些属性的位置是在单个 csproj 文件之前,因此要使用它们,您需要在解决方案文件旁边的Directory.Build.Props 中设置它们。

文件应该是这样的(如果你有的话,加上你已经拥有的任何东西):

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

【讨论】:

  • 是的,我尝试了 BaseOutputPath 和 BaseIntermediateOutputPath 但仍然在 .csproj 所在的同一目录中创建了“obj”文件夹。试过 outdir 但它需要“obj”才能成功
  • 经过一番研究后更新。事实证明,这些属性必须在 Directory.Build.Props 级别设置,而不是在单个项目级别。它们可以在单个项目级别上工作,但它更hackier:github.com/Microsoft/msbuild/issues/2070
猜你喜欢
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多