Есть ли способ объединить файлы pdb с ilmerge?

По разным причинам мы используем ilmerge, чтобы поместить все сборки нашего приложения в один файл, поэтому пользователю нужно обрабатывать только один файл. К сожалению, похоже, что нет возможности объединить файлы .pdb со сборками. Кто-нибудь знает способ обойти это?


person Patrick    schedule 17.09.2009    source источник
comment
Когда приложение вылетает из строя, трассировка стека просто показывает имя функции, в которой произошел сбой. Если файл pdb находится рядом с исполняемым файлом, он также показывает номер строки в исходном файле, где произошла ошибка.   -  person Patrick    schedule 17.09.2009


Ответы (1)


Хорошо, я понял это, хотя это заняло время.

В этой статье / ndebug написано наоборот.

Из примечаний к выпуску, поставляемых с ILMerge (ILMerge.doc, выделено мной):

2.8 DebugInfo public bool DebugInfo {get; установленный; } Если установлено значение true, ILMerge создает файл .pdb для выходной сборки и объединяет в него все файлы .pdb, найденные для входных сборок. Если вы не хотите, чтобы файл .pdb создавался для выходной сборки, либо установите для этого свойства значение false, либо укажите параметр / ndebug в командной строке. По умолчанию: true Параметр командной строки: / ndebug

Решение состоит в том, чтобы не иметь этот флаг в командной строке. ILMerge по умолчанию объединяет файлы pdb. Убедитесь, что все pdb-файлы ваших исходных сборок находятся в одном каталоге вместе с соответствующими dll, чтобы ILMerge мог их найти. (Мы используем ссылки на проекты и имеем один проект ILMerge, который выполняет это требование.)

Вот соответствующий раздел из моего файла csproj ILMerge.

 <Target Name="AfterBuild">
    <CreateItem Include="@(ReferencePath)" Condition="'%(CopyLocal)'=='true'">
      <Output TaskParameter="Include" ItemName="IlmergeAssemblies" />
    </CreateItem>
    <Exec Command="&quot;..\..\Libraries\Ilmerge.exe&quot; /copyattrs /allowMultiple /out:&quot;@(MainAssembly)&quot; &quot;@(IntermediateAssembly)&quot; @(IlmergeAssemblies->'&quot;%(FullPath)&quot;', ' ')" />
    <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
  </Target>

Для полноты картины я использую последнюю версию ilmerge.exe: Версия 2.10.219.0 с датой последнего изменения 19.02.2010 9:49.

person Tito    schedule 25.02.2010
comment
Это переменные? ... что с @? - person Pangamma; 21.02.2020
comment
Я не понимаю. Файл PDB все еще там, и он не был объединен. Что дает? - person Pangamma; 21.02.2020