Вопрос

Я работаю над модулем для CMS. Этот модуль распространяется как библиотека классов DLL.

У меня есть несколько служебных библиотек, которые я хотел бы использовать в этом модуле. В любом случае я могу статически связать эти библиотеки, чтобы мне не приходилось распространять несколько библиотек DLL (таким образом, раздельно распределяя мои служебные библиотеки)?

Я хотел бы иметь только одну DLL.

Это было полезно?

Решение

Вы можете объединить множество библиотек DLL с ILMERGE:

http://research.microsoft.com/~mbarnett/ILMerge.aspx

Сам не пробовал. Надеюсь, это поможет.

<Ч>

Скачать здесь:
http://www.microsoft.com /downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en

Краткое описание (со страницы загрузки)
ILMerge - это утилита для объединения нескольких сборок .NET в одну сборку .NET. Он работает как с исполняемыми файлами, так и с DLL-библиотеками и имеет несколько опций для управления обработкой и форматом вывода. Подробности смотрите в сопроводительной документации.

Другие советы

Если вы не хотите использовать ILMerge, см. эту страницу:

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition .aspx

примечание редактора : Джеффри Рихтер советует помещать ваши dll в exe-файл в качестве ресурсов ( Для каждого добавляемого вами DLL-файла отобразите его свойства и измените его & # 8220; Build Action & # 8221 ; to & # 8220; Embedded Resource. & # 8221; ). Затем необходим специальный загрузчик классов, чтобы заставить исполняемый файл работать ( Во время выполнения CLR не сможет найти зависимые сборки DLL, что является проблемой. Чтобы исправить это, при инициализации приложения зарегистрируйте метод обратного вызова с событием ResDoveAssembly в AppDomain ).

Обязательно измените строку resourceName , чтобы она указала на ваши фактические ресурсы. (например, замените AssemblyLoadingAndReflection на имя вашего проекта.)

Краткий ответ на этот вопрос - нет! Вы не можете ссылаться в DLL во время компиляции. Я не знаю, есть ли какой-нибудь тонкий способ сделать это, но вам, вероятно, придется распространять dll вместе с вашими cms. Лучший способ сделать это - это сделать какой-нибудь распространяемый.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top