Обновление 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).
Попробуйте добавить ссылку Добавить ссылку → Ассемблеры → Расширения.
Ответ 5
Смотрите это: Microsoft Asp.Net MVC Security Update MS14-059 сломал мою сборку! MS blogged об этом, поскольку это, очевидно, принесло много путаницы
Ответ 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