Добро пожаловать в опасность строк и строк (физического расположения) в коде ..
Все инструменты такого рода имеют схожие проблемы, и им лучше быть умными, как многие разработчики и проектировщики среды выполнения такие функции, как привязка и сериализация, на самом деле не предусматривали этого, но они, несомненно, сделали ILMerge «умным» инструментом. Он настолько умен, что не может даже обрезать сорта.
Обратите внимание, что здесь также играет роль управление версиями, а конфигурация,. * И «звездочки в глазах», а также независимость версий от Редмонда тоже не помогают.
У вас наверняка будут проблемы с сторонними битами. . И поверьте мне, я знаю, что вам нужно слияние, так как какое-то жалкое небольшое количество типов может занять много времени, прежде чем MS JIT начнет работать с большими приложениями (и нет, я не хочу, чтобы NGEN или оптимизированный 3.5SP1 загружали это » s даже медленнее, чем раньше, из-за System.Core или божественного раздувания WPF).
Лучший вариант, imho, по крайней мере, в больших масштабах, - получить достойный коммерческий инструмент, который сканирует и обрабатывает это (т. е. из существующий опыт боли и обфускации). В конечном итоге вы можете в конечном итоге инструментировать существующий код IL, если у вас нет исходных текстов.
[Затем было изобретение строки INotifyPropertyChanged, которое таким образом решило проблему глобального потепления - Разработано Casio-Calc Inventors]
Да, есть решение этой проблемы: сборка модулей вместо сборок!
Компиляторы для .net имеют параметр (/ target: module для C # и VB), который создает модуль вместо сборки. Затем несколько модулей можно передать компилятору и использовать для создания окончательной сборки.
Конечно, все это предполагает, что у вас есть исходный код для сторонних сборок. Если вы не можете этого получить, возможно, у третьей стороны можно приобрести версию .netmodule сторонней сборки?
Если это не сработает, у вас все еще есть последний вариант. Очевидно вы уже разбираете стороннюю сборку в IL. Удалите информацию о сборке из этого файла IL и используйте ilasm / dll для создания .netmodule, который теперь вы можете использовать так же, как любой другой .netmodule!
Используя модули вместо сборок, у вас больше не должно возникнуть проблем, связанных с сборками.
Верно, мы решили вашу проблему с ILMerge, больше не используя ILMerge, но разве это не лучшее решение?
Надеюсь, это сработает для вас, вот несколько удобных ссылок:
.netmodule вместо сборка
ILASM с .netmodules
(И здесь я подумал, что мой опыт работы с .netmodules никому не пригодится!)