Как я могу указать, что несколько версий зависимой сборки подходят?
-
09-06-2019 - |
Вопрос
Сборки A и B развертываются в частном порядке и имеют строгие имена.Сборка A содержит ссылки на сборку B.Существует две версии сборки B:Б1 и Б2.Я хочу иметь возможность указать для сборки A, что она может быть привязана либо к B1, либо к B2 — в идеале, путем включения этой информации в саму сборку.Какие у меня есть варианты?
Я немного знаком с политикой управления версиями и тем, как она применяется к GAC, но я не хочу зависеть от того, находятся ли эти сборки в GAC.
Решение
Есть несколько мест, где вы можете указать .Net Framework, что определенная версия строго типизированной библиотеки должна быть предпочтительнее другой.Это:
- Файл политики издателя
- файл Machine.config
- файл app.config
Все эти методы используют "<bindingRedirect>" элемент, который может указать .Net Framework привязать версию или диапазон версий сборки к определенной версии.
Вот краткий пример тега, используемого для привязки всех версий сборки до версии 2.0 к версии 2.5:
<assemblyBinding>
<dependantAssembly>
<assemblyIdentity name="foo" publicKeyToken="00000000000" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0 - 2.0.0.0" newVersion="2.5.0.0" />
</dependantAssembly>
</assemblyBinding>
Там много подробностей, поэтому лучше, если вы прочитаете об этом. Перенаправление версий сборки в MSDN чтобы решить, какой метод лучше всего подходит для вашего случая.
Другие советы
Вы можете установить политику версий в файле app.config.Альтернативно вы можете загрузить эти сборки вручную, вызвав Assembly.LoadFrom()
при этом версия сборки не учитывается.