Я создаю библиотеку классов .NET DLL, которая зависит от других библиотек, таких как log4net.dll - где мне разместить эти библиотеки DLL при упаковке моей DLL? Есть ли способ автоматически включать их в одну супер-DLL? Должен ли я просто отправить все библиотеки DLL в одну папку bin?
Как / где я могу отправить сторонние библиотеки с .NET DLL?
Ответы (5)
Просто отправьте их все в каталог с вашей dll (если вы говорите о двоичном дистрибутиве - в исходном дистрибутиве у меня был бы каталог «lib», содержащий ваши зависимости).
Не забудьте проверить, нужно ли вам также предоставлять лицензии, инструкции по получению исходного кода и т. Д.
У меня не возникнет соблазна попытаться объединить вашу библиотеку классов с зависимостями лично.
Вам необходимо сначала проверить EULA и другие лицензии, прикрепленные к этим другим DLL. Некоторые могут ограничить способ перераспределения своих библиотек DLL. Предполагая, что с этим нет проблем, вы можете либо скомпилировать их все вместе как одну большую DLL, либо создать установщик (или простой zip-файл), который установит все связанные DLL в их предполагаемом месте назначения.
В вашем дереве решений есть папка с именем src для всего исходного кода yoru и папка с именем lib для таких библиотек, как log4net, ваша самодельная библиотека dll и любые другие библиотеки.
Вам следует взглянуть на ILMerge. Я связал блог, в котором показано использование ILMerge
Использование ILMerge для упрощения развертывания и взаимодействия с пользователями >
Не уверен, как вы развертываете свое решение, но не забывайте, что для подписания ваших библиотек классов вам необходимо иметь подписанные сторонние библиотеки .dll. Одно это может потребовать от вас объединения всех ваших ссылок.