2014-10-15 6 views
10

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

У меня такое чувство, потому что это обновление изменило 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 по-прежнему не работает из-за косвенных ссылок.

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

+0

Ьгу добавить привязку сборки для MVC4 http://stackoverflow.com/questions/10402005/aspnet-compiler-finding-wrong-version-of-system-web-webpages-1-0-0-0-instead-of –

+0

Такая же проблема для MVC3. –

+0

MajoB: Я пробовал это, но это для времени исполнения, я думаю. В настоящее время моя проблема заключается в том, чтобы даже построить (или запустить FxCop). –

ответ

1

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

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

1

Решение:

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

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

+0

Я попробую это. Должны ли мы это сделать и на нашем сервере сборки? –

+0

Скорее всего. Мы еще не закрепили наш сервер сборки, но я не вижу, как вы можете избежать этого шага. –

+0

Я уже пробовал это, но он устанавливает 4.0.20710.0, и мне нужно вернуться к 4.0.30319.0. Любые советы по этому поводу? –

1

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

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

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

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

+1

Это не решит нашу проблему с косвенными ссылками на старые DLL. –

1

Удалите все ссылки на 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, если это только что спустило ваш производственный сервер!

+0

Мы сделали это (кроме того, что я добавил пакет NuGet для MVC, как я думаю, это лучшее решение), но проблема остается в том, что у нас есть косвенные ссылки на более старую версию. Мы не можем это исправить. –

+0

Мы использовали это, чтобы «вернуть» обновление. (wuse \ uninstall не будет работать). Спасибо – Julian

1

Обновления безопасности обновляют сборку версии system.web.mvc.dll. Вам нужно обновить свой csproject, чтобы исправить версию. Проверить этот пост: ASP.NET MVC security patch to version 3.0.0.1 breaks build

+1

Это не решит нашу проблему с косвенными ссылками на старые DLL. –

0

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

https://stackoverflow.com/a/26490590

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

+0

Опять же, поскольку наша проблема связана с косвенными ссылками, это не решает проблему в этом случае. –

 Смежные вопросы

  • Нет связанных вопросов^_^