Почему Combres все еще ищет старую версию System.Web.Mvc?
Я использую Combres с моим проектом MVC 3 RC и получаю ошибку привязки сборки при развертывании на своем веб-сервере.
System.IO.FileLoadException
Не удалось загрузить файл или сборку 'System.Web.Mvc, версия =2.0.0.0, культура = нейтральная, PublicKeyToken=31bf3856ad364e35' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
<%= Html.CombresLink("commonJs") %>
Моя машина для разработки имеет сборки MVC 1 и 2 в GAC, поэтому там все работает нормально. Веб-сервер не имеет никакой версии MVC в GAC, и я собираю bin-версию сборки MVC 3. Мой проект ссылается на версию 3.0.0.0 System.Web.Mvc, и у меня есть следующий раздел в моем web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly xmlns="">
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Я думал, что этот раздел скажет Combres использовать версию 3.0.0.0 вместо этого. Почему мое приложение не может разрешить ссылку?
1 ответ
Я не думаю, что перенаправление связывания будет цепочкой - у вас есть ссылка на 1.0 где-то, и ваш конфиг говорит ей загрузить 2.0, которой не существует.
Вам нужно только одно перенаправление привязки со значением oldVersion "1.0.0.0-2.0.0.0"