Лучшие практики для слияния сборок?

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

Моя проблема заключается в следующем:

У меня есть библиотека CommonUtilities, которая обеспечивает, поскольку название подразумевает набор утилит, которые можно использовать более чем в одном месте. Зависимости CommonUtilities включают log4net.dll (каркас ведения журнала) и Oracle.DataAccess.dll (драйвер базы данных).

У меня есть другой проект под названием MyProject, в который я хочу включить CommonUtilities. MyProject также зависит от Oracle.DataAccess.

Если я использую ILMerge и объединяю CommonUtilities в одну сборку CommonUtilities.dll и указываю, что из MyProject все компилируется, но я уверен, что должен явно ссылаться на Oracle.DataAccess из MyProject, поскольку это зависимость, а не использовать сборку, объединенную с CU. Добавление ссылки на Oracle.DataAccess также приводит к неоднозначным операторам использования, поскольку есть две ссылки на Oracle.DataAccess.

Использование ILMerge / Internalize в моем случае приводит к ошибкам компиляции, поскольку типы из встроенной сборки Oracle.DataAccess возвращаются из CommonUtilities и, поскольку они помечены как внутренние, MyProject не распознает возвращенный тип.

Единственный способ сделать эту работу - просто не объединять эту конкретную сборку (Oracle.DataAccess) с CommonUtilities и ссылаться только на MyProject. Это, в свою очередь, создает новую проблему: на какой Oracle.DataAccess.dll я должен ссылаться - на зависимость, распространяемую с помощью CommonUtils или нет?

Есть ли другие способы сделать все это?

Ответы на вопрос(4)

Ваш ответ на вопрос