2010-03-05 5 views
4

Есть ли способ группировать группу DLL и использовать их во время выполнения (не зашифровано). Извините, этот вопрос звучит глупо и глупо, но я не уверен, что еще нужно спросить.Группировка DLL для использования в исполняемом файле

Я объясню ситуацию, хотя:

У нас было два автономных приложения Windows и теперь один из наших приложений увеличились до таких неуклюжих пропорций, что другое приложение не может работать вне рамок первого приложения , Мы хотим сохранить часть инкапсуляции, которую мы имели, позволяя программе меньшего размера использовать некоторые из более крупных функций программы.

Нет проблем при запуске приложения, кроме того, что мы не хотим отправлять все 20-30 DLL-файлы, которые имеют меньший проект.

+0

Являются ли эти сборки .NET или собственные библиотеки кода? –

+0

Исходный код (с использованием Delphi) –

ответ

5

Это можно сделать, добавив код запуска, который проверяет, если библиотеки DLL присутствуют в целевой системе, а если нет, то извлекает их из раздела ресурсов (или просто помечен в конец exe). Хорошим примером этого является Process Explorer - он распространяется как один двоичный файл, но при запуске он извлекает и устанавливает драйвер.

3

Если у вас есть ситуация, когда большинство или все эти сборки должны храниться вместе, я бы настоятельно рекомендовал просто скомбинировать файлы кода в один проект и перекомпилировать. Это оставило бы вас с одной сборкой.

Конечно, есть другие соображения, такие как время компиляции, общий размер окончательной dll, как часто изменяются различные части и независимо от того, развертывается ли каждый компонент без других.

Один пример компании, который сделал это Telerik. Их компоненты dev все скомпилированы в одну и ту же сборку. Это делает развертывание абсолютным ветером. Контраст: Dev Express, который помещает практически каждый элемент управления в свою собственную сборку. Из-за этого, просто поддерживающего, а тем более развертывания, проект Dev Express не является чем-то для слабонервных.

(я не работаю ни для одного из этих компаний. Тем не менее, у меня есть большой опыт работы с обоих инструментариев.)

+0

Они не используют сборки, это не .NET. (Ответ вы все еще применяете.) – Zifre

3

Вы можете сохранить библиотеки DLL в качестве ресурсов и использовать BTMemoryModule, который по существу позволяет загружать в StreamLibrary.

Таким образом, вы можете скомпилировать несколько библиотек DLL прямо в EXE или в одну библиотеку ресурсов.

см. http://www.jasontpenny.com/blog/2009/05/01/using-dlls-stored-as-resources-in-delphi-programs/

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