Обновление Windows привело к тому, что MVC3 и MVC4 перестали работать
Я единственный, кто установил Windows Update (8.1) 15 октября, и вдруг MVC перестает работать из-за этого предупреждения?
Предупреждение 1 Не удалось разрешить эту ссылку. Не удалось найти сборку "System.Web.Mvc, версия =4.0.0.0, культура = нейтральная, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL". Убедитесь, что сборка существует на диске. Если эта ссылка требуется вашим кодом, вы можете получить ошибки компиляции.
Похоже, что это обновление Windows устанавливает более новую версию MVC с номером версии 4.0.0.1 и удаляет старую версию из папки программных файлов.
Кто-то знает, как это исправить, не сканируя каждый проект?
9 ответов
Лучшее решение - обновить 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" />
Мы должны были вручную дотронуться до каждого .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" />
Была такая же проблема после обновления:
Обновление безопасности для 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)
Пожалуйста, смотрите этот блог, рекомендуемый способ - обновить соответствующий пакет NuGet:
Цитировать:
Проблема может быть решена путем реализации одного из следующих решений:
(Предпочтительно) Установите Microsoft.AspNet.Mvc из галереи NuGet (это установит перенаправление привязки в вашем файле web.config). Вы можете сделать это из диспетчера пакетов NuGet или из консоли NuGet в Visual Studio:
Пакет установки Microsoft.AspNet.Mvc -Version -Project ИМЯ ПРОЕКТА
Версия MVC 4: 4.0.40804.0
Версия MVC 3: 3.0.50813.1
Обновите вручную ссылку на System.Web.MVC.dll (не используйте ее в GAC).
Попробуйте диалоговое окно Добавить ссылку -> Сборки -> Расширения.
Смотрите это: Обновление безопасности Microsoft Asp.Net MVC MS14-059 сломало мою сборку! MS написал об этом в блоге, так как это, очевидно, принесло много путаницы
Для веб-проекта вам также может потребоваться обновить конфигурацию в файле 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>
Вам нужно изменить все ссылки на System.Web.Mvc в вашем решении. Просто удалите их и добавьте новую версию 4.0.0.1.
Также в свойствах изменить copy local
к истине.
А в файле 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>
Хорошо,
Для меня это было два простых шага:
Сначала я изменил все ссылки на System.Web.Mvc с 4.0.0.0 на 4.0.0.1,
Затем я должен был перейти к свойствам System.Web.Mvc (возможно, потому что я удалил и повторно добавил его) и изменить копию local на true.
Надеюсь, это полезно для кого-то.
Если вы все еще получаете ту же ошибку после попытки решения @Krzysztof или любого другого ответа выше, один из способов, который может вам помочь, это удалить MVC Runtime 4.0