1

我有一个包含大量项目的解决方案。为了将二进制文件与源代码分开,我将所有项目中的属性更改BaseOutputPath为“..\bin”,并将BaseIntermediateOutputPath所有项目中的属性更改为“..\obj”。

它适用于BaseOutputPath- 所有二进制文件都在公共目录中。对于中间路径,它根本不起作用。它破坏了项目,因为该obj目录仍然在项目文件夹中创建,但现在文件没有从项目中排除,并且显示为 Git 可提交。

我究竟做错了什么?这是正常行为吗?我不希望在项目目录中创建 obj 目录。我怎样才能实现这种行为?

现在我刚刚从项目中删除了该属性。至少这些obj文件夹没有显示为项目文件夹。

4

1 回答 1

0

如果您不希望相对路径从项目文件开始,则需要使用诸如 $(SolutionDir) 或 $(MSBuildThisFileDirectory) 等 MSBuild 宏。

例如,您可以将“BaseIntermediateOutputPath”设置为 $(SolutionDir)\obj 或更好地设置为 $(SolutionDir)\obj-$(Configuration)。这样,您将分离 Debug 和 Release 构建,如果不这样做,会给您带来很多麻烦。

这是我在特定的“Directory.Build.props”中使用的。注意<OutDir>条目。这会将这个目录下所有项目的输出目录更改为该stage64\lib目录。

  <PropertyGroup>
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <CharacterSet>Unicode</CharacterSet>
    <PlatformToolset>v141</PlatformToolset>
    <OutDir>$(SolutionDir)..\stage64\lib\</OutDir>
  </PropertyGroup>
于 2022-01-11T17:30:48.817 回答