Обновление Windows вызвало прекращение работы MVC3 и MVC4

Я единственный, кто установил Windows Update (8.1) 15 октября, и вдруг MVC перестает работать из-за этого предупреждения?

Предупреждение 1 Не удалось устранить эту ссылку. Не удалось найти сборку "System.Web.Mvc, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL". Убедитесь, что сборка существует на диске. Если эта ссылка требуется для вашего кода, вы можете получить ошибки компиляции.

Кажется, что это обновление Windows устанавливает более новую версию MVC с номером версии 4.0.0.1 и удаляет старую версию из папки программных файлов.

Кто-нибудь знает, как исправить это без обхода для каждого проекта?

Ответ 1

Лучшим решением является обновление DLL до версии 4.0.0.1. Попробуйте использовать nuget:

Install-Package Microsoft.AspNet.Mvc -Version 4.0.40804 -Project <your project name>

Это автоматически обновит

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
  </dependentAssembly>

Вам просто нужно отредактировать версию System.Web.Mvc вручную в:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Ответ 2

Нам пришлось вручную прикоснуться к каждому .csproj, чтобы обновить версию от 4.0.0.0 до 4.0.0.1, чтобы наши сборки продолжались. Очень боль.

Новые ссылки должны выглядеть так:

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

Ответ 3

После обновления произошла такая же проблема:

Обновление безопасности для Microsoft ASP.NET MVC 4.0 (KB2993928)
http://support.microsoft.com/kb/2993928

Но только для проекта со ссылкой на System.Web.Mvc, не установленным пакетом.

Мой коллега, который не установил Microsoft ASP.NET MVC 4.0 Runtime и не получил обновления, не беспокоился и по-прежнему ссылался на 4.0.0.0, а не 4.0.0.1

Я вручную изменил ссылку на 4.0.0. 1, после регистрации мой коллега все еще мог строить с ссылкой на 4.0.0. 0.
(Работайте как с Win7 Pro SP1, VS2013 Pro Update 3)

Ответ 4

Смотрите этот блог, рекомендуется обновить соответствующий пакет NuGet:

http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx

Цитата:

Проблема может быть решена путем реализации одного из следующих решения:

  • (Предпочитаемый) Установите Microsoft.AspNet.Mvc из галереи NuGet (это установит перенаправление привязки в ваш web.config). Ты можешь сделать это из диспетчера пакетов NuGet или консоли NuGet внутри Visual Студия:

    Установочный пакет Microsoft.AspNet.Mvc -Version -Project PROJECTNAME

    Версия MVC 4: 4.0.40804.0

    Версия MVC 3: 3.0.50813.1

  • Вручную обновите ссылку на System.Web.MVC.dll(не используйте тот, что есть в GAC).

    Попробуйте добавить ссылку Добавить ссылку → Ассемблеры → Расширения.

Ответ 6

Для веб-проекта вам может потребоваться обновить конфигурацию в файле web.config:

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.1"/>
  </dependentAssembly>

Ответ 7

Хорошо,

Для меня это было два простых шага:

Сначала я изменил все ссылки на System.Web.Mvc с 4.0.0.0 до 4.0.0.1,

Затем мне пришлось перейти к свойствам System.Web.Mvc(возможно, из-за того, что я удалил и повторно добавил его) и изменил локальную копию на true.

Надеюсь, это поможет кому-то.

Ответ 8

Вам нужно изменить все ссылки на System.Web.Mvc в своем решении. Просто удалите их и добавьте новую версию 4.0.0.1.

Также в свойствах измените copy local на true.

И в web.config добавьте привязку привязки, чтобы указать на новую версию mvc:

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

Ответ 9

Если вы по-прежнему получаете ту же ошибку после попытки решения @Krzysztof или любых других ответов выше, одна работа вокруг может сработать для вас - удалить MVC Runtime 4.0