Разные версии одной и той же сборки

Я пишу оболочку для библиотеки, которая резко изменила 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 ответ

Я никогда не делал этого, но я думаю, что у вас есть два варианта -

  1. Если возможно, дайте строгие имена этим сборкам и переместите их в GAC.

  2. Если (1) невозможно, переместите сборки в подпапки (v1.x & v2.x). Затем загрузите сборку, используя Assembly.LoadFrom() или же AppDomain.Load [возможно, у вас могут возникнуть проблемы с разрешением типов, поэтому, пожалуйста, прочтите - http://msdn.microsoft.com/en-us/library/dd153782.aspx ]

Другие вопросы по тегам