Это не проблемный вопрос, а общий вопрос о работе перенаправления привязки сборки.
Запросы
- Почему при перенаправлении привязки отображается только основная версия, а не дополнительные номера, номера сборки и ревизии?
Меняются ли старая и новая версия только при изменении основной версии?
<dependentAssembly> <assemblyIdentity name="FooBar" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" /> <bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly>
c#
assembly-binding-redirect
Нихил Агравал
источник
источник
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"
Ответы:
Зачем вообще нужны обязательные перенаправления? Предположим, у вас есть приложение A, которое ссылается на библиотеку B, а также на библиотеку C версии 1.1.2.5. Библиотека B, в свою очередь, также ссылается на библиотеку C, но версии 1.1.1.0. Теперь у нас конфликт, потому что вы не можете загружать разные версии одной и той же сборки во время выполнения. Чтобы разрешить этот конфликт, вы можете использовать перенаправление привязки, обычно к новой версии (но может быть и к старой). Вы делаете это, добавляя следующее в файл app.config приложения A в
configuration > runtime > assemblyBinding
разделе (см. Здесь пример полного файла конфигурации):Вы также можете указать диапазон версий для сопоставления:
Теперь библиотека B, которая была скомпилирована со ссылкой на C версии 1.1.1.0, будет использовать C версии 1.1.2.5 во время выполнения. Конечно, вам лучше убедиться, что библиотека C имеет обратную совместимость, иначе это может привести к неожиданным результатам.
Вы можете перенаправлять любые версии библиотек, а не только основные.
источник
Мы столкнулись с проблемой перенаправления привязки для NewtonSoft.Json. Мы посмотрели версию файла в свойствах файла win 10 «9.0.1.19813», посмотрели номер, и перенаправление продолжало терпеть неудачу. Дальнейшее расследование показало, что мы смотрели на версию файла, а не на версию сборки. Итак, мне интересно, не путают ли люди версию файла (которая часто меняется) и версию сборки (которую вы не видите в проводнике Windows 10). Чтобы увидеть сборочную версию DLL, вы можете запустить ее в PowerShell. Замените имя dll на то, для которого вы хотите найти версию.
Результат выше.
См. Ссылки:
Как я могу увидеть версию сборки .NET в Windows Vista и новее (WIndows 7, 2008)?
https://support.microsoft.com/en-nz/help/556041
источник