Несколько проектов в решении Visual Studio с одинаковыми зависимостями дают разные размеры pdb - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть одно решение Visual Studio, содержащее 170 проектов.Большинство этих проектов используются в качестве зависимостей для пары основных проектов.

Эти основные проекты включают в себя полную версию и облегченную версию.Допустим, product_full_link и product_lite_link.

Эти два проекта имеют одинаковые зависимости проекта и отличаются только конфигурацией, слегка ограничивая доступные функции между программами.

Когда я создаю решение, он создает product_full_link итогда product_lite_link.Файл .pdb для product_full_link заканчивается где-то в районе ~ 1 ГБ.Файл .pdb для product_lite_link получает около 4 ГБ, прежде чем получить сообщение об ошибке.

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_lite_link независимо от проекта product_full_link ион по-прежнему приводит к огромному файлу .pdb и выдает то же сообщение об ошибке, в то время как проект product_full_link всегда успешно компилируется с управляемым файлом .pdb.

Любая помощь или ссылки для управления многопроектными решениями очень помогли бы.

1 Ответ

0 голосов
/ 19 февраля 2019

Я нашел решение моего вопроса.

Проблема в том, что параметры компоновщика были разными в разных проектах.

Это были параметры компоновщика в моем 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.

...