具有相同依赖关系的Visual Studio解决方案中的多个项目会生成不同的pdb大小

问题描述 投票:0回答:1

我有一个包含170个项目的Visual Studio解决方案。这些项目中的大多数都用作几个主要项目的依赖项。

这些主要项目包括完整版和精简版。让我们说product_full_link和product_lite_link。

这两个项目具有相同的项目依赖性,并且仅通过略微限制程序之间的可用功能而在配置上有所不同。

当我构建解决方案时,它会构建product_full_link,然后构建product_lite_link。 product_full_link的.pdb文件最终约为1GB。在收到错误消息之前,product_lite_link的.pdb文件大约为~4GB。

1>LINK : fatal error LNK1201: error writing to program database 'C:\project\Debug\product_lite_link.pdb'; check for insufficient disk space, invalid path, or insufficient privilege

这些项目之间的所有链接器选项都相同。我尝试使用多个链接选项来减少.pdb大小,包括此处描述的所有方法https://blogs.msdn.microsoft.com/vcblog/2014/03/05/shrink-my-program-database-pdb-file/无济于事。

我还尝试独立于product_full_link项目构建product_lite_link项目,它仍然会生成巨大的.pdb文件并生成相同的错误消息,而product_full_link项目始终使用可管理的.pdb成功构建。

管理多项目解决方案的任何帮助或参考都会有很大帮助。

visual-studio projects-and-solutions pdb-files
1个回答
0
投票

我找到了问题的解决方案。

问题是项目之间的链接器选项不同。

这些是我的product_full_link.vcxproj中的链接器选项

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  <Link>
    <AdditionalDependencies>product_full_configuration_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
    <HeapReserveSize>0x10000000</HeapReserveSize>
    <HeapCommitSize>0x10000</HeapCommitSize>
    <LargeAddressAware>true</LargeAddressAware>
    <ShowProgress>NotSet</ShowProgress>
    <TargetMachine>MachineX64</TargetMachine>
    <GenerateDebugInformation>DebugFull</GenerateDebugInformation>
    <FullProgramDatabaseFile>true</FullProgramDatabaseFile>
  </Link>
</ItemDefinitionGroup>

这些是我的product_lite_link.vcxproj中的链接器选项

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  <Link>
    <AdditionalDependencies>product_full_configuration_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
    <TargetMachine>MachineX64</TargetMachine>
  </Link>
</ItemDefinitionGroup>

问题是在Visual Studio>项目属性>链接器中的选项中没有显示.vcxproj文件中的相同选项,因此我无法识别那里的差异。

我不确定,这些选项中的哪一个负责减少.pdb文件大小。

© www.soinside.com 2019 - 2024. All rights reserved.