Разные версии одной и той же сборки
Я пишу оболочку для библиотеки, которая резко изменила API между одной версией и другой, поэтому мне нужно создать контракт, который позволит мне получить доступ к двум версиям одного и того же API. Это моя структура проекта:
- Client.dll
- References
- Contract.dll
- Version01.dll
- Version02.dll
- Contract.dll
- IMyService.cs
- Version01.dll
- MyServiceImplementation.cs
- References
- Version01Assembly.dll
- Version02.dll
- MyServiceImplementation.cs
- References
- Version02Assembly.dll
Внутри Project Client.dll мне может понадобиться вызвать одну реализацию службы или другую, и это вполне нормально. Проблема в том, что сборка, загружаемая в AppDomain, всегда является причиной Version02Assembly.dll. В папке bin моего Клиента я всегда нахожу только самую последнюю версию этой зависимости. Как мне сохранить эти две библиотеки, ссылающиеся на разные версии одной и той же сборки?
Надеюсь вопрос понятен
1 ответ
Я никогда не делал этого, но я думаю, что у вас есть два варианта -
Если возможно, дайте строгие имена этим сборкам и переместите их в GAC.
Если (1) невозможно, переместите сборки в подпапки (
v1.x
&v2.x
). Затем загрузите сборку, используяAssembly.LoadFrom()
или жеAppDomain.Load
[возможно, у вас могут возникнуть проблемы с разрешением типов, поэтому, пожалуйста, прочтите - http://msdn.microsoft.com/en-us/library/dd153782.aspx ]