Версия сборки GAC для использования на основе Web.Config

75
8

Добрый день


У меня есть проект, который использует пользовательские сборки в GAC:
Чтобы иметь возможность использовать это, я добавил ссылку на мой проект в


C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL\JOHN.CommonLib\v4.0_1.0.0.0__9cd884563ebafb62\JOHN.CommonLib.dll

(CopyLocal = False; SpecificVersion = False)
Кроме того, я добавил это в файл Web.Config


<compilation debug="false" strict="true" explicit="true" targetFramework="4.0" >
<assemblies>
<add assembly="JOHN.CommonLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9cd884563ebafb62"/>
</assemblies >
</compilation >

Он работает как ожидалось. Проблема заключается в том, что я устанавливаю новую версию
Я устанавливаю новую версию в GAC и изменяю Web.Config соответственно


<add assembly="JOHN.CommonLib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=9cd884563ebafb62"/>

JOHN.CommonLib - это библиотека классов тестеров, которая возвращает версию "1.0" или "2.0" в зависимости от версии.


Проблема. Если я скомпилирую с использованием 1.0, используемые ею webapps всегда показывают "1.0", даже если я изменяю Web.Config между 1.0 и 2.0
Я хотел бы, чтобы мое веб-приложение использовало версию, которую я пишу в своем Web.Config


Любые идеи?
Я также останавливаю и запускаю AppPool между изменением Web.Config.

спросил(а) 2021-01-19T17:55:09+03:00 2 месяца, 3 недели назад
1
Решение
87

Для сильных именованных сборок приложение всегда будет привязывать (если возможно) к версии, с которой она была построена. Чтобы переопределить эту привязку, вам нужно указать перенаправление привязки для сборки. Существует несколько способов сделать это - см. Ссылку . Таким образом, один из способов использования файла конфигурации app/web - например,

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="JOHN.CommonLib"
publicKeyToken="9cd884563ebafb62"
culture="en-us" />
<!-- Assembly versions can be redirected in application,
publisher policy, or machine configuration files. -->
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

ответил(а) 2021-01-19T17:55:09+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема