Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

В этой статье есть /ndebug точно назад.

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

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

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

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

 <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 с последней измененной датой от 2/19/2010 9:49 AM

Ответ 2

Вы можете объединить их для вас, используя флаг /ndebug в команде.

Этот статья объясняет больше.