DotnetCore项目IntermediateOutputPath将一些文件保留在解决方案目录中

时间:2019-09-12 07:43:22

标签: build .net-core project

为了保持存储库的清洁并与输出文件和构建文件分开,我们更改了项目文件中的相应路径。

对于Net Framework项目,指定 IntermediateOutputPath 会将obj目录重定向到相应的文件夹。

对于使用此属性的Net Core项目(3.0)是不够的。尽管Debug,Release文件夹确​​实已重定向,但 obj 文件夹仍会创建,并且其中包含一些文件-例如 project.assets.json,.csproj.nuget.cache,.csproj.nuget.dgspec.json,.csproj.nuget.g.props,.csproj.nuget.g.targets 。 使用 BaseIntermediateOutputPath -也不起作用。

只是想知道是否有人可以建议如何移动整个obj目录? 谢谢

Martin建议的解决方案在Net Core项目中效果很好

<Project>
  <PropertyGroup>
    <BuildDIrectory>C:\Temp\Build\$(Configuration)</BuildDIrectory>
    <RelativePath>some arelative path which depends on location of corresponding project withing the solution</RelativePath>

    <BaseIntermediateOutputPath>$(BuildDIrectory)\obj\$(RelativePath)\$(AssemblyName)\</BaseIntermediateOutputPath>
    <OutputPath>$(BuildDIrectory)\out\$(RelativePath)\$(AssemblyName)\</OutputPath>
    <DocumentationFile>$(BuildDIrectory)\Documentation\$(RelativePath)\$(AssemblyName).xml</DocumentationFile>
  </PropertyGroup>

  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />

  ...
  </Project>

1 个答案:

答案 0 :(得分:0)

new LoadingActivity(InspectionSelectionActivity.this).execute(); 也可以使用,但是必须尽早设置才能生效。

最简单的方法是将其添加到BaseIntermediateOutputPath文件中:

Directory.Build.props

如果要直接在csproj文件中指定它,则不能使用<Project> <PropertyGroup> <BaseIntermediateOutputPath>$(MSBuildThisFileDirectory)..\shared-obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath> </PropertyGroup> </Project> 表示法,因为需要在应用SDK的某些部分之前设置该属性。但是,在使用显式SDK导入和正确排序时,它可以工作:

<Project Sdk="