Объединение библиотек DLL и изменение управляющих пространств имен

Я хочу создать единую dll, которая объединена со сторонней dll. Это означает, что конечным потребителям придется иметь дело только с 1 dll вместо 2.

Допустим, что сторонняя dll - это nLog. Что делать в случаях, когда у потребителя объединенной библиотеки dll уже есть ссылка на NLog в своем проекте?

В идеале я хотел бы иметь возможность изменить пространство имен NLog в моем проекте на «XyzNLog», что означает, что пользователю не нужно делать никаких псевдонимов ... Есть идеи, как я могу это сделать?

Теперь я знаю, что могу добавлять в свой проект псевдонимы для NLog, чтобы называть его XyzNLog, но я хочу, чтобы то же самое было перенесено на потребителей объединенной библиотеки DLL, чтобы не возникало конфликта.

ОБНОВЛЕНИЕ - Решение

http://blog.mattbrailsford.com/2010/12/10/avoiding-dependency -conflicts-using-ilmerge /

Бинго! Итак, используя ILMerge, он становится возможно слияние сторонних библиотеки DLL с поставщиками собственная DLL, то есть у нас будет только одна DLL для развертывания. Но это еще не все, мы может пойти еще дальше, и сообщить ILMerge усвоить все зависимости . Что это делает конвертирует все сторонние классы быть объявленным внутренним, то есть их можно использовать только изнутри финальная DLL. Ух! проблема решена =)

Учитывая это, проблема, при которой у потребителя моей dll также может быть NLog, уходит ... поскольку мой NLog, на который имеется ссылка, становится полностью внутренним! Это именно то, что я хочу.

Есть ли у кого-нибудь отзывы или мысли по этому поводу?

7
задан Cœur 17 December 2017 в 10:44
поделиться