По различным причинам мы используем ilmerge, чтобы поместить все наши сборки приложений в один файл, чтобы пользователь мог обрабатывать только один файл. К сожалению, похоже, что невозможно слить файлы .pdb с сборками. Кто-нибудь знает способ обойти это?Есть ли способ объединить файлы pdb с ilmerge?
ответ
Хорошо, я понял это, хотя это заняло некоторое время.
Эта статья имеет/ndebug точно в обратном порядке.
Из выпуска нот, которые приходят с ILMerge (ILMerge.doc, курсив мой):
2,8 DebugInfo общественного BOOL DebugInfo {получить; задавать; } Когда это значение равно true, ILMerge создает файл .pdb для сборки вывода и объединяет в нее любые файлы .pdb, найденные для входных сборок. Если вы не хотите .pdb файл, созданный для выходного узла, либо установить это свойство ложно, либо указать опцию/NDEBUG в командной строке . По умолчанию: истинно Командная строка вариант:/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: Version 2.10.219.0, с датой последнего изменения 2/19/2010 9:49 AM
Вы можете объединить их для вас, используя флаг/ndebug в команде.
Этот article объясняет больше.
Спасибо за информацию. По какой-то причине коммутатор просто держит ilmerge от создания файла pdb в дополнение к объединенной сборке, но не помещает информацию в объединенную сборку. Я опубликую обновление, когда узнаю, что происходит не так. – pat
У меня такая же проблема, как @longeasy./ndebug не помогает вообще. –
/ndebug объединит несколько pdb в один, как и в сборках. Вопрос заключается в том, как объединить сборки с файлами pdb, так что это всего один файл. – Lucas
но зачем вам это нужно ? вы хотите добавить как ресурс? –
Когда приложение выходит из строя, трассировка стека просто показывает имя функции, которая не удалась. С файлом pdb вдоль исполняемого файла он также показывает номер строки в исходном файле, где произошла ошибка. – pat