слияние DLL-файлов с ILMerge не работает - PullRequest
3 голосов
/ 08 января 2011

Прежде всего, я не уверен, является ли это проблемой с ILMerge или нет, но я не могу слить файлы.dll в свое приложение.Я попробовал это в командной строке:

ilmerge /target:winexe /out:test.exe MyApp.exe lib1.dll lib2.dll lib3.dll

Я получил следующую ошибку, и я понятия не имею, что это значит:

В метаданных MyApp сообщалось об ошибках.PDB, связанный с D: \ C # \ source \ bin \ ReleaseMyApp.exe, устарел.

Кстати, я использую последнюю версию (2.10.526.0), но да, я не могу получитьэто работает, и мне действительно нужна помощь.Что означает вышеуказанная ошибка и как ее исправить?

Ответы [ 3 ]

5 голосов
/ 08 января 2011

PDB, связанный с D: \ C # \ source \ bin \ ReleaseMyApp.exe, устарел.

Поскольку вы явно не сказали, что проверили PDB иexes синхронизированы, я думаю, я задам очевидный вопрос - есть ли в папке pdb и вы проверили временные метки в файлах?

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

0 голосов
/ 08 января 2011

Поможет ли попробовать .NETZ вместо ILMerge?

0 голосов
/ 08 января 2011

Я ожидаю, что метаданные этого типа хранятся в виде строки, возможно, в явном коде, но, возможно, через "typeof" в атрибуте.

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

http://msdn.microsoft.com/en-us/library/system.appdomain.typeresolve.aspx

...