Как я отлаживаю в блок ILMerged?

Сводка

Я хочу изменить процесс сборки решения с 2 блоками, такого, что вызов к ILMerge вызывается, и результаты сборки в единственном блоке. Далее я хотел бы смочь отладить в результирующий блок.

Подготовка - простой пример

  1. Новое решение - ClassLibrary1
  2. Создайте статический функциональный 'GetMessage' в Class1, который возвращает строку "Привет мир"
  3. Создайте новое консольное приложение, которое ссылается на ClassLibrary.
  4. Произведите GetMessage от основного () через консоль.

У Вас теперь есть 2 приложения блока который выводы "Привет Мир" к консоли.

Таким образом, что затем..?

Я хотел бы изменить Консольный процесс сборки приложения, включать шаг сборки сообщения, который использует ILMerge, для слияния блока ClassLibrary в Консольный блок

После этого шага я должен смочь:

  • Запустите Консольное приложение непосредственно без существующего ClassLibrary1.dll
  • Запустите Консольное приложение через F5 (или F11) в VS и смогите отладить в каждый из этих 2 проектов.

Ограниченный успех

Я считал это сообщение в блоге и сумел достигнуть слияния, из которого я был после с командой постсборки...

"$(ProjectDir)ILMerge.bat" "$(TargetDir)" $(ProjectName)

... и файл ILMerge.bat, которые читают...

CD %1
Copy %2.exe temp.exe
ILMerge.exe /out:%2.exe temp.exe ClassLibrary1.dll 
Del temp.exe
Del ClassLibrary1.*

Это работает довольно хорошо и действительно на самом деле производит exe, который работает вне среды VS как требуется. Однако это, кажется, не производит символы (.pdb файл), который VS может использовать для отладки в код.

Я думаю, что это - последняя часть загадки.

Кто-либо знает, как я могу сделать эту работу?

FWIW я выполняю VS2010 на машине x64 Win7 x64.

Обновление: Почему я хочу сделать это?

Это спросили: 'Мне действительно нужно к ILMerge во время сценария отладки?'

Блоки моего решения должны будут сосуществовать в той же папке как те из других решений (некоторые из которых я, вероятно, разработаю),

Некоторые из этих решений совместно используют зависимости от различных версий некоторых блоков.

Таким образом, Solution1 мог бы быть составлен из Console1 и ClassLibrary1.dll (v1), и Solution2 мог бы быть составлен из Console2 и Classlibrary1.dll (v2).

Вместо того, чтобы регистрировать все в GAC, я думал, что мог ILMerge правильная версия зависимости в предварительное предвыборное собрание для выдвижения кандидатов решения избежать коллизии.

Однако это в настоящее время представляет его невозможный отладить решение, которое я должен сделать на месте в сочетании с другими решениями, которые будут присутствовать.

Это звучит сложным? Поэтому это..:D

8
задан Rory Becker 17 June 2010 в 21:48
поделиться

3 ответа

Я бы посоветовал вам объединять в ILMerge только релизные сборки ваших сборок. Я не могу представить, какую пользу вы получите от слияния отладочных сборок.

1
ответ дан 6 December 2019 в 00:05
поделиться

Я не думаю, что ILMerge может это сделать. OTOH smartassembly от Red-Gate (не бесплатно) может это сделать, по крайней мере, так сказано в features

И да, я согласен с Майком использовать ILMerge только для релизных версий.

-1
ответ дан 6 December 2019 в 00:05
поделиться

Мне очень жаль, что у вас возникли проблемы. Я не следовал вашим точным шагам, но я создал консольное приложение A.exe, которое вызывало метод в dll, B.dll.Я построил обе сборки в режиме отладки (чтобы у них были файлы PDB). Затем я объединил их следующим образом:

ilmerge /out:foo.exe A.exe B.dll

(На самом деле A и B были в другом каталоге, поэтому моя командная строка была немного сложнее, но это не должно имеет значение.) После завершения ILMerge в текущем каталоге было два файла: foo.exe и foo.pdb. Затем я набрал:

devenv foo.exe

Это открыло Visual Studio, а затем я нажал «F10», чтобы запустить отладчик. Я смог перейти к методу Main в исполняемом файле, а затем использовал «F11», чтобы перейти к методу, который изначально был в B.dll. Процесс отладки был таким же, как и в исходном решении Visual Studio с двумя сборками.

Если у вас по-прежнему возникают проблемы, поместите все решение в zip-файл и отправьте его мне (mbarnett на microsoft dot com), и я могу попробовать это из.

4
ответ дан 6 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: