2011-08-22 3 views
0

После добавления ILMerge на мою пост сборки задачи и разработке командной строки, я успешно получить объединенную программу MyMerged.exeILMerge и MSBuild - слит EXE дает ошибку во время выполнения

Но когда я запускаю его, я получаю исключение

Необработанное исключение: System.TypeLoadException: не удалось загрузить тип 'Microsoft.Build.Utilities.TaskItem' из сборки 'mymerged, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = нуль', так как метод».ctor 'не имеет реализации (нет RVA). в MyProgram.Program.Main (String [] args)

Является ли это ошибкой в ​​ILMerge, не обрабатывая ситуацию, когда нет конструктора или ошибка в TaskItem для его отсутствия.

благодаря

+0

Найден лучший способ ... См. Http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c- third-edition.aspx – jradxl

ответ

2

Включите Microsoft.Build.Utilities.dll в командной строке ILMerge так, что она будет сольются в вашей сборке и харчи.

Если у вас установлены повторяющиеся типы и используйте переключатель командной строки /allowDup, ILMerge переименует дубликаты типов, и это может также вызвать ошибки «Не удалось загрузить тип ...» и неожиданное поведение во время выполнения, особенно когда отражение используемый.

+0

У меня была такая же проблема. Thw часть about/allowDup была действительно полезна, спасибо! вместо этой части "/ allowDup MyMainDLL.dll .dll" только что используется " .dll" – gisek

Смежные вопросы