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
пространство имен, которое я проверял; это все еще связано с проектом под References
, Что могло пойти не так с моим проектом MVC во время Центра обновления Windows, и как мне его исправить?
Вот журнал, который указывает на обновления, администрируемые сегодня:
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.
Я бы посоветовал против попыток прямо переустановить 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, но я думаю, что это было бы полезно для конкретных случаев, когда нужно ссылаться на множество проектов.