2010-10-15 2 views
3

У меня есть приложение, которое загружает две сборные DLL. Первая dll является общей dll, а вторая dll имеет ссылку на другую версию первой dll. Все сборки неподписанны..Net одинаковые типы в двух разных сборках

App.exe -> dll1_v1.dll, dll2.dll
dll2.dll -> dll1_v2.dll

Оба dll1_v1.dll и dll1_v2.dll имеют одинаковые типы, но различные реализации.

Если у меня есть dll1_v1.dll и dll1_v2.dll в пути codebase exe, то оба загружаются, а все экземпляры объектов в app.exe указывают на dll1_v1.dll, а в dll2 указывают на dll1_v2.dll.

Если мне нужно указать dll1_v2 в dll1_v1, правильно ли удалить dll1_v2.dll из кодовой базы и добавить обработчик события AssemblyResolve, чтобы я мог вернуть сборку для dll1_v1.dll вместо dll1_v1.dll?

+0

Ли удаление ссылки на DLL_v1 в вашем приложении просто обойти проблему? Я не помню, теряете ли вы доступ к этим типам, поскольку они являются зависимыми в косвенной ссылке. – Tejs

ответ

1

Вы можете ссылаться на другую версию этого же класса на ключевое слово extern alias. Following blog post объясните это красиво.

Смежные вопросы