Привязка сборки среды выполнения .Net - PullRequest
2 голосов
/ 28 сентября 2011

У меня довольно необычная проблема, и мне нужны идеи.

Я поддерживаю две кодовые базы, которые на 99% идентичны.Появился новый проект, который при некоторых условиях выполнения должен использовать кодовую базу A, а в других условиях использовать предварительно скомпилированную кодовую базу B.

Я абстрагировал функциональность в интерфейс для проекта и планирую иметь две реализациисборки, которые ссылаются на различные базы кода.Я планирую использовать шаблон локатора службы для создания экземпляра объекта.Так что это выглядит примерно так.

Assembly A (Website)              Assembly B           Libraries
-------------------------------|--------------------|-------------
    Project -> Service Locator -> Implementation A -> Code Base A
                               -> Implementation B -> Code Base B

Моя проблема заключается в загрузке однотипных сборок кода базы a и b и возникновении конфликтов во время выполнения.

Каков наилучший подход дляэтот сценарий и почему?

1 Ответ

2 голосов
/ 29 сентября 2011

Мне кажется, что если вы дадите каждой сборке другое имя, это эффективно решит проблему.Несмотря на то, что база кода в каждой сборке была бы почти идентична, сборки идентифицируются по имени (и другим характеристикам) , поэтому присвоение им имен по-разному гарантирует, что они не будут конфликтовать.Типы (классы и т. Д.) Внутри каждой сборки используют имя сборки для построения их полностью определенных имен , поэтому у вас не должно быть никаких конфликтов там.

Однако интерфейс, за которым выhide типы сборок должны быть определены в третьей библиотеке (которая может быть вашей потребляющей библиотекой).

...