Решение ASP.NET MVC4 не удается создать после установки KB2993928

У нас есть решение ASP.NET MVC 4 с несколькими ссылками, которые строились без проблем уже около 2 лет. Однако после установки KB2993928 и KB2993937 этим утром мы не можем запустить FxCop на этом решении на наших машинах Windows 7.

У меня такое чувство, потому что это обновление изменило DLL-версию сборки System.Web.Mvc в GAC. Это связано с тем, что в GAC я могу в настоящее время найти 3 разных DLL System.Web.Mvc, которые все обновлены сегодня.

Ошибка, которую мы получаем в сборке, выглядит следующим образом:

6>MSBUILD : error : CA0001 : The following error was encountered while reading module 'FrontEnd.Implementation': Assembly reference cannot be resolved: System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. [C:\Project\FrontEnd\02-Implementation\02-Implementation.csproj]
6>MSBUILD : error : CA0058 : The referenced assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be found. This assembly is required for analysis and was referenced by: S:\Deliverables\FrontEnd\bin\FrontEnd.Implementation.dll. [C:\Project\FrontEnd\02-Implementation\02-Implementation.csproj]

Поскольку мы используем ASP.NET MVC 4, эта версия 3.0 DLL ссылается косвенно на одну из наших ссылок. Например, RazorGenerator ссылается на версию 3.0.0.0. Возможно, и другие. Из того, что я могу сказать, нет новой версии RazorGenerator.

Версии System.Web.Mvc, которые я вижу в GAC: 3.0.50813.1, 4.0.40804.0 и 5.0.20821.0.

Я удалил ссылку на System.Web.Mvc из наших проектов и добавил Mvc как пакет NuGet. Это исправляет нашу компиляцию, но FxCop по-прежнему не работает из-за косвенных ссылок.

Если какая-либо дополнительная информация требуется, пожалуйста, дайте мне знать.

Ответ 1

Если эта проблема вызвана ссылками, которые, в свою очередь, имеют зависимости от этих конкретных сборок, вы можете исправить это, принудив FxCop использовать только StrongName и игнорировать номер версии. Это решение описано здесь.

Конечно, реальным решением было бы обновить ссылочные сборки (с косвенными зависимостями) до более новых версий.

Ответ 2

Решение:

  • Удалите MVC Framework с помощью "Программы и функции" (в зависимости от того, какую версию вы используете)
  • Переустановите MVC Framework (http://www.asp.net/mvc/mvc4)

Должна исправить проблему - никаких изменений в сборке/решениях не требуется.

Ответ 3

Это было сделано с помощью обновления для системы безопасности 15 октября из Центра обновления Windows. Вам также нужно будет запускать обновления на серверах сборки.

Ссылка на обновление: http://www.microsoft.com/en-ie/download/details.aspx?id=44533

Это обновление также исправляет и другие версии.

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

Ответ 4

Удалите все ссылки на System.Web.MVC, а затем повторно добавьте их, вручную просмотрев DLL (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.Mvc\v4.0_5.1.0. 0__31bf3856ad364e35\System.Web.MVC.dll на нашей машине). Гораздо быстрее, чем повторная установка MVC, если это только что сняло ваш производственный сервер!

Ответ 6

Я использовал следующее решение, и он отлично работает:

fooobar.com/info/31478/...

(не забудьте выбрать проект по умолчанию в консоли диспетчера пакетов для каждого проекта с ошибкой сборки)