Как я могу указать, что несколько версий зависимой сборки подходят?

StackOverflow https://stackoverflow.com/questions/54546

  •  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() при этом версия сборки не учитывается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top