2009-11-27 5 views
28

В процессе сборки .NET C# я использовал ILMerge для объединения сборок в один exe.ILMerge DLL: сборка не объединена правильно, все еще указана как внешняя ссылка

Недавно я добавил новую библиотеку классов, и теперь ILMerge терпит неудачу. Я вспомнил, чтобы сказать, чтобы он слился в новую DLL!

Это теперь дает мне эту ошибку, которую я не очень понимаю:

ILMerge.Merge: Ассамблея «DataObjects» не был объединен в правильно. Он по-прежнему отображается как внешняя ссылка в задаче сборка.

Все ссылки на сборку, которые я сделал с использованием ссылок на «проект», и это не сработало в прошлом.

Может кто-нибудь объяснить эту ошибку для меня или предложить обходное решение?

+0

Это говорит вам об источнике сборки? Или вы можете использовать рефлектор .Net, чтобы найти это? –

+0

Это буквально просто выводит строку выше. Несколько сборок, которые я пытаюсь объединить, ссылаются на сборку DataObjects, но это было довольно долгое время, и только при добавлении новой сборки, которая ссылается на нее, я получаю вышеуказанную ошибку. –

+1

Вы нашли решение этой проблемы? – loraderon

ответ

34

Мне пришлось использовать аргумент /closed. Согласно официальной документации:

Закрыто

Когда установлено перед вызовом Merge, то «транзитивное замыкание» из входных узлов вычисляется и добавляется в список входных узлов. сборки считается частью закрытия в переходном если она ссылке, либо непосредственно, либо косвенно, от одного из первоначально указанных входных узлов и имеет внешнюю ссылку на один из входных узлов, или один из сборки , которые имеют такую ​​ссылку. сложно, но это жизнь ...

3

Я получил аналогичное сообщение об ошибке при попытке опубликовать веб-приложение, которое объединяет все выходы к одной сборке:

Произошла ошибка при объединении сборок : ILMerge.Merge: Целевая сборка указывает себя как внешнюю ссылку.

Это происходит, если имя сборки, которое вы объединяете, соответствует имени сборки веб-приложения в пределах Properties > Application. Изменение имени выходной сборки должно исправить.

+0

Спасибо за это! –

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

  • Нет связанных вопросов^_^