Зачем вообще нужны обязательные перенаправления? Предположим, у вас есть приложение A, которое ссылается на библиотеку B, а также на библиотеку C версии 1.1.2.5. Библиотека B, в свою очередь, также ссылается на библиотеку C, но версии 1.1.1.0. Теперь у нас конфликт, потому что вы не можете загружать разные версии одной и той же сборки во время выполнения. Чтобы разрешить этот конфликт, вы можете использовать перенаправление привязки, обычно к новой версии (но может быть и к старой). Вы делаете это, добавляя следующее в файл app.config приложения A в configuration > runtime > assemblyBinding
разделе (см. Здесь пример полного файла конфигурации):
<dependentAssembly>
<assemblyIdentity name="C"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.1.1.0" newVersion="1.1.2.5" />
</dependentAssembly>
Вы также можете указать диапазон версий для сопоставления:
<bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.2.5" />
Теперь библиотека B, которая была скомпилирована со ссылкой на C версии 1.1.1.0, будет использовать C версии 1.1.2.5 во время выполнения. Конечно, вам лучше убедиться, что библиотека C имеет обратную совместимость, иначе это может привести к неожиданным результатам.
Вы можете перенаправлять любые версии библиотек, а не только основные.
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"