Если у меня есть приложение (приложение), ссылающееся на библиотеку (Lib1), которая сама ссылается на другую библиотеку (Lib2), когда приложение ссылается на Lib1, оно также скопирует DLL Lib2 и отлично работает.Конфликт имен имен на внешних зависимостях
Если я также добавлю другую ссылку на приложение в другую библиотеку, но с тем же именем, что и Lib2 (Lib2bis), Lib1 попытается использовать типы из Lib2bis вместо Lib2 (так как файл Lib2, я считаю, получает перезаписывается файл Lib2bis (с таким же именем).
Поскольку ссылки от приложения к Lib2 является косвенным, я не буду знать, что Lib2bis конфликты с Lib2 до исполнения, который приведет к ошибке выполнения.
ли есть ли способ предотвратить/разрешить эту проблему (кроме переименования библиотек ...) (в идеале, не используя псевдоним, но мне было бы интересно узнать решение псевдонимов, если оно есть).
Вам придется переименовать библиотеку DLL. Но если две сборки используют одно и то же пространство имен имен и классов, но для представления разных классов это просто не сработает. –
@MatthewWatson - это нормально (для определенных значений «штраф») для двух независимых сборок, чтобы объявлять типы с идентичными полностью квалифицированными именами. Вот что ['extern alias'] (https://msdn.microsoft.com/en-us/library/ms173212.aspx) предназначено для решения проблемы. –
@Damien_The_Unbeliever Да, но нет, если сборки имеют одинаковое имя DLL? Поэтому он должен будет переименовать его и использовать «extern alias». –