Можно ли успешно объединить переходные ссылки на сборки с ILMerge? - PullRequest
1 голос
/ 27 августа 2009

Я пытаюсь использовать ILMerge для интернализации некоторых сборок с транзитивной ссылкой в ​​сборку, на которую я ссылаюсь, для устранения конфликтов с этими переходными зависимостями, которые еще были в моем проекте.

В частности, я ссылаюсь на Antlr3.StringTemplate (здесь и далее именуемый AS, доступен здесь: http://www.stringtemplate.org/download.html). Он ссылается Antlr3.Runtime.Debug (ARD ) и Antlr3.Runtime (AR). Сам ARD также ссылается на AR. В ASCII-art это:

AS ---> ARD
\        |
 \       v
  \---> AR

Поскольку другая сборка, которую я использую, NHibernate 2.1, зависит от другой несовместимой версии AR, я хотел использовать ILMerge для объединения и интернализации AR в AS. Теоретически, я думаю, что это должно работать; однако у меня возникают проблемы с выполнением теории.

Независимо от того, какие перестановки и варианты я пробую, я получаю сообщение об ошибке следующего вида:

ILMerge.Merge: сборка Antlr3.Runtime.Debug не был объединен правильно. Это все еще перечислено как внешняя ссылка в мишени сборка.

Возможно ли то, что я пытаюсь достичь с помощью ILMerge?

Ответы [ 3 ]

5 голосов
/ 16 сентября 2010

В самой последней версии ILMerge есть опция /closed, которая работает на транзитивном замыкании объединенных сборок. Это решает именно эту проблему (см. Разделы 2.6 Closed и 4.1 Input assembly not merged in correctly в руководстве пользователя ILMerge.doc).

4 голосов
/ 18 сентября 2009

Когда вы запускаете ILMerge из командной строки (или в рамках задачи MSBuild), из всех файлов сборки, которые вы перечисляете для объединения, это первый , который считается основным сборка когда начинается слияние. Если вы еще этого не сделали, убедитесь, что имя файла сборки AS указано первым в списке сливающихся сборок.

0 голосов
/ 29 ноября 2010

В итоге мне пришлось собрать в ILMerge все мои DLL-файлы, связанные с Nhibernate, чтобы он хорошо сочетался со StringTemplate. Вероятно, не тот ответ, на который вы надеялись, но он работает.

...