Подтвердить что ты не робот

System.Web.Mvc не работает должным образом после Windows Update

После вчерашнего обновления Windows у меня возникли проблемы с созданием моих проектов.

Related Windows Updates could be:
ASP.NET MVC 2.0: KB2993939
ASP.NET MVC 3.0: KB2993937
ASP.NET MVC 4.0: KB2993928
ASP.NET MVC 5.0: KB2992080
ASP.NET MVC 5.1: KB2994397

System.Web.Mvc-related errors

Все эти ошибки, похоже, связаны с пространством имен System.Web.Mvc, которое я проверил; он все еще связан с проектом под References. Что могло произойти с моим MVC-проектом во время обновления Windows, и как мне его исправить?

Вот журнал, который показывает текущие обновления:

16/10/2014's Windows Update

4b9b3361

Ответ 1

В последних обновлениях были добавлены номера версий

3.0.0.0 → 3.0.0.1 и 4.0.0.0 → 4.0.0.1

Мне пришлось удалить ссылку и снова добавить (System.Web.Mvc находится в Assemblies > Extensions из диалога Add Reference)

Ответ 2

У меня такая же проблема сегодня после обновления Windows. Есть мое решение.

Install-Package Microsoft.AspNet.Mvc -Version 5.2.0.0 -Project PROJECTNAME

Также вы можете попробовать использовать этот код, возможно, это поможет.

Uninstall-Package Microsoft.AspNet.Mvc -Force

Гудлак.

Ответ 3

Есть два способа исправить это:

Вариант 1: добавьте Microsoft.AspNet.Mvc с помощью NuGet

Используйте NuGet, чтобы добавить последнюю версию версии MVC, от которой зависит ваш проект. Microsft рекомендует этот подход.

Вариант 2: Обновить ссылку на сборку

Если вы добавите новую сопоставимую ссылку на свой проект, вы увидите, что сборки System.Web.Mvc теперь имеют версию x.0.0.1.


Источник: http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx

Я бы посоветовал не пытаться переустановить MVC. Несмотря на то, что это сработало для меня в конце, у вас возникнут проблемы с подключением NuGet с установщиком MVC.

Вам необходимо удалить NuGet до переустановки MVC, поскольку NuGet все еще присутствует, поэтому установщик MVC отказывается установить или сбой.

Кроме того, я не вижу, почему переустановка MVC не позволит Windows Update снова применить обновление после переустановки MVC.

Ответ 4

По мере того как патч увеличился, номер версии повысился (для MVC4 он поднялся с 4.0.0.0 до 4.0.0.1) путь ссылки в файлах проекта должен измениться с:

<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <Private>True</Private>
  <HintPath>..\bin\System.Web.Mvc.dll</HintPath>
</Reference>

к

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\bin\System.Web.Mvc.dll</HintPath>
</Reference>

Очевидно, отрегулируйте путь подсказки по мере необходимости и выполните аналогичные изменения для других версий MVC

Ответ 5

У нас та же проблема.
Microsoft изменила версию с 3.0.0 до 3.0.0.1
Я предполагаю, что это причина, по которой Visual Studio не может найти ссылку, потому что регулярная настройка - "Использовать конкретную версию - true".
В моем случае я не могу изменить параметр на false, потому что я использую Mvc4 на одном компьютере, и он автоматически будет использовать dll версии 4.

Решение заключается в удалении ссылки на проект System.Web.Mvc.dll и добавлении его снова. Затем VS будет использовать версию-3.0.0.1-DLL в качестве ссылки.

Ответ 7

Я попробовал mh28 решение, в котором было предложено следующее:

В последних обновлениях были добавлены номера версий

3.0.0.0 → 3.0.0.1 и 4.0.0.0 → 4.0.0.1

Мне пришлось удалить ссылку и снова добавить (System.Web.Mvc находится в Ассембли > Расширения относятся к диалогу Add Reference)

Кроме того, было также предложено запустить Найти и заменить во всем моем интересе; Я попробовал это, но потерпел неудачу. Кажется, что Найти и заменить не относится к файлам .csproj.

Что я сделал дальше, так это найти инструмент для замены текста (см. Ecobyte Replace Text) и запустить программу, используя следующие настройки:

Ecobyte Replace Text settings

Все мои проекты, построенные в соответствии с нормальными, после этого, и я не вижу никаких побочных эффектов (несмотря на то, что не вносил никаких изменений в файлы web.config). Я не уверен (и я не думаю), это лучшее решение, и я не думаю, что это серебряная пуля для всех проблем System.Web.Mvc, затронутых связанным с безопасностью Windows Update для .NET, но я подумайте, что это было бы полезно для конкретных случаев, когда есть много проектов для повторной ссылки.

Ответ 8

Попробуйте установить/восстановить ASP.NET MVC с помощью последних версий пакетов MSI, доступных из здесь.

Если вы используете bindingRedirect в web.config, это может потребоваться (в моих проектах не было), чтобы обновить разделы. См. ответ. Это все еще не помогает, я бы рекомендовал изучить другие файлы web.config в вашем проекте, например ~/Views/web.config.

Ответ 9

У меня была такая же проблема в последнее время.

После Windows Update - у моего проекта в Visual Studio неожиданно было 500+ ошибок - все это связано с system.web.mvc

Итак, я удалил ссылку и снова добавил ее - нашел в C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies

Отличные компиляции проекта.

Поместите его на сайт - получите "Невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации"

После долгих беспорядков я пошел на сайт, загрузил его версию - назовите его - он работал на моем ноутбуке И на сайте

уф!!!!!!!

Ответ 10

Эта проблема была для меня. Однако исправление было намного проще, чем использование nuget для исправления или обновления в web.config. Моя проблема была решена путем ручного обновления текста в {ProjectName}.csproj из

Ссылка Include = "System.Web.Mvc, Version = 3.0.0.1, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL"

to

Ссылка Include = "System.Web.Mvc, Version = 3.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL" , а также проверку изменений и запуск сборки в машине агента сборки, которая для меня была TeamCity.

Несмотря на то, что это вызвало ошибки сборки локально, он разрешил ошибки управления исходным кодом /Team City.

Я понимаю, что это не позволяет мне создавать локально, не внося изменений в файл csproj. Однако после того, как я проверил изменение, как я сделал выше (изменив его с 3.0.0.1 на 3.0.0.0), я могу обновить проект локально, чтобы использовать новую версию (3.0.0.1), и просто не проверять изменения в csproj, Я думаю, у кого-то может быть похожий сценарий.