Есть ли способ упаковать больше, чем one.NET сборка в dll?

Я хотел бы, чтобы мои компоненты/сборки были четко отделены от точки зрения исходного кода, но мне также нужно в некоторых обстоятельствах (вероятно, не имеет значения для расширения) упаковать их в ту же dll.

можно ли упаковать несколько сборок .NET в одну dll? Если да, то как?

Если возможно, как вы думаете, это хорошая идея? Почему?

любая помощь приветствуется!

2 ответов


проверить эту статью : объединение .NET-сборок с помощью ILMerge


Как вы знаете, традиционная связь объектный код больше не нужен в .Чистая. А .Чистая программа обычно состоят из нескольких частей. Типовое значение Приложение .NET состоит из исполняемая сборка, несколько сборок в каталоге программы и несколько ассамблеи в глобальной ассамблее кэш. Когда программа запущена, среда объединяет все эти части к программа. Связывание во время компиляции отсутствует нужно больше времени.

но иногда это все же полезно объединить все части программы нужно выполнить в один собрание. Например, вы, возможно, захотите для упрощения развертывания приложение объединив программы, все необходимые библиотеки и все ресурсы, в единое целое .файл EXE.

csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb
vbc /target:winexe /out:Program.exe 
    /reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb

.

ilmerge /target:winexe /out:SelfContainedProgram.exe 
        Program.exe ClassLibrary1.dll ClassLibrary2.dll

ILMerge можно объединить две сборки в одну.

посмотреть здесь для информации (примеры для кросс-языка, но он будет работать с любыми инструментами, построенными сборками).

очевидно, что любые зависимости от отдельных сборок (до слияния) должны быть обновлены/перенаправлены.