По разным причинам мы используем ilmerge для размещения всех наших сборок приложений в одном файле, поэтому пользователю нужно обрабатывать только один файл. К сожалению, похоже, что невозможно слить файлы .pdb с сборками. Кто-нибудь знает способ обойти это?
Есть ли способ объединить файлы pdb с ilmerge?
Ответ 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=""..\..\Libraries\Ilmerge.exe" /copyattrs /allowMultiple /out:"@(MainAssembly)" "@(IntermediateAssembly)" @(IlmergeAssemblies->'"%(FullPath)"', ' ')" />
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>
Для полноты я использую последнюю версию ilmerge.exe: Версия 2.10.219.0 с последней измененной датой от 2/19/2010 9:49 AM
Ответ 2
Вы можете объединить их для вас, используя флаг /ndebug в команде.
Этот статья объясняет больше.