У меня проблема с использованием старой сборки GAC вместо новой версии сборки в корзине.
Сервер:
Assembly version: ASP.NET MVC 3 RC 1 (3.0.11029.0)
Full name: System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Code base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Web.Mvc/v4.0_3.0.0.0__31bf3856ad364e35/System.Web.Mvc.dll
Deployment: GAC-deployed
Машина для разработки:
Assembly version: Unknown version (3.0.20105.0)
Full name: System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Code base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Web.Mvc/v4.0_3.0.0.0__31bf3856ad364e35/System.Web.Mvc.dll
Deployment: GAC-deployed
Более новая версия RTM (3.0.20105.0) находится в каталоге bin приложения. Тем не менее, приложение использует тот, что находится в GAC, вместо локального бункера. Мой опыт работы с приложениями Windows заключается в том, что развернутая локальная библиотека DLL всегда имеет приоритет, потому что GAC проверяется, только если DLL не найдена в том же каталоге, что и приложение. Это соглашение не относится к веб-приложению.
Как заставить его использовать развернутую библиотеку DLL новой версии bin (3.0.20105.0)?
Edit:
Я действительно пытался перенаправить привязку так:
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="3.0.11029.0" newVersion="3.0.20105.0" />
Я пробовал несколько вариантов старой версии, например 0.0.0.0-4.0.0.0
. Во всех моих попытках обычно он либо загружал старую версию, либо выдавал мне сообщение об исключении:
Could not load file or assembly 'System.Web.Mvc' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference.
В журнале привязок не было ошибок, за исключением последних двух строк:
WRN: Comparing the assembly name resulted in the mismatch: Build Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.