Я разрабатываю небольшую библиотеку, которая будет использоваться в нескольких приложениях. Я хотел бы использовать некоторые сторонние библиотеки в моей собственной библиотеке (например, log4Net, Entity Framework и т. Д.). Я бы предположил, что я могу либо развернуть библиотеки DLL вместе с моей собственной библиотекой, либо использовать ILMerge для создания единой DLL (я мало знаю о том, что ILMerge никогда не пробовал).Использование двух разных версий одной и той же библиотеки
Меня беспокоит, что произойдет, если приложения, которые потребляют мою библиотеку, также используют те же сторонние библиотеки, которые я буду использовать. Например, если я использую log4Net версии 1.2, а потребительское приложение использует log4Net версии 1.0, я получу какой-то конфликт или не будет загружена только одна версия сборки?
Предотвращает ли ILMerge это? Как это обычно разрешается при разработке библиотеки с зависимостями сторонних разработчиков?
Я столкнулся с этой ситуацией раньше - это был типичный огромный корпоративный монстра с огромным количеством проектов. В какой-то момент кто-то добавил проект с гораздо более новой версией log4Net, который был необходим для него, и он сломал все. Решение в то время (к которому я, к счастью, не принимал участия) заключалось в том, чтобы изменить код по мере необходимости, чтобы иметь возможность ссылаться на все проекты той же самой новой версии log4Net. Мне бы хотелось увидеть хорошее решение для такого рода вопросов, кроме «установить его в GAC и ссылаться на вашу конкретную версию». – Gjeltema
Ханс, вы можете уточнить свой комментарий? Я не знаю, где мой вопрос подразумевает, что система не нуждается в техническом обслуживании или что проект когда-либо сделан. –
@HansPassant Я тоже смущен - планировали ли вы написать ответ на другой вопрос? Этот вопрос кажется неуместным. – Gjeltema