Почему Combres все еще ищет старую версию System.Web.Mvc? - PullRequest
0 голосов
/ 07 января 2011

Я использую Комбинации с моим проектом 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 Ответ

2 голосов
/ 08 января 2011

Я не думаю, что перенаправление привязки будет цепочкой - у вас есть ссылка на 1.0 где-то, и ваш конфиг говорит ей загрузить 2.0, которого не существует.

Вам нужен только один перенаправления привязки с oldVersionустановлен на "1.0.0.0-2.0.0.0"

...