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

После вчерашнего обновления 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

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

Вот журнал, который указывает на обновления, администрируемые сегодня:

Обновление Windows от 16/10/2014

10 ответов

Решение

Последние обновления имеют увеличенные номера версий

3.0.0.0 -> 3.0.0.1 и 4.0.0.0 -> 4.0.0.1

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

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

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

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

Uninstall-Package Microsoft.AspNet.Mvc -Force

Удачи.

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

Вариант 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 снова применить обновление после переустановки MVC.

По мере увеличения патча номер версии увеличился с (для 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.

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

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

в

Ссылка включает = "System.Web.Mvc, версия =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, Я полагаю, у кого-то может быть похожий сценарий.

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

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

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

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

Переустановите сборку MVC

ссылка для скачивания: http://www.microsoft.com/en-US/download/details.aspx?id=30683

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

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

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

Отлично - проект компилируется.

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

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

уф!!!!!!!

Я попробовал mth, которое предложило следующее:

Последние обновления имеют увеличенные номера версий

3.0.0.0 -> 3.0.0.1 и 4.0.0.0 -> 4.0.0.1

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

Вдобавок ко всему, было также предложено запустить поиск и замену во всех областях моих интересов; Я попробовал это, но не получилось. Похоже, что Find and Replace не относится к файлам.csproj.

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

Экобайт Заменить настройки текста

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

Другие вопросы по тегам