Ошибка анализа кода. Не удалось загрузить файл или сборку «System.Net.Http, версия = 2.0.0.0 в веб-API MVC4».

эта проблема точно такая же, как в этом сообщении http://forums.asp.net/t/1807797.aspx/1?System%20Net%20Http%20is%20not%20found и этот в StackOverflow

У меня есть все последние биты RTM, я запустил новый MVC 4 в .Net 4.5, добавил пакет nuget WebAPI, и теперь мой анализ кода завершается с ошибкой с той же ошибкой, о которой сообщается в приведенной выше ссылке.

CA0058 Ошибка выполнения анализа кода CA0058: не удалось найти указанную сборку «System.Net.Http, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a». Эта сборка требуется для анализа, и на нее ссылались: C:\Projects\InHouse\TimeRecorder\StopGap\TimeRec\bin\TimeRec.dll, C:\Projects\InHouse\TimeRecorder\StopGap\packages\Microsoft.AspNet.WebApi.Core. .4.0.20710.0\lib\net40\System.Web.Http.dll. [Ошибки и предупреждения] – (все страны)

Из того, что я могу найти, похоже, это произошло с версиями RC, потому что возник конфликт между платформой .NET 4.5 System.Net.Http и версией WebApi System.Net.Http.

Другие ответы на Ответ StackOverflow говорит о переходе с .Net 4.5 на 4.0, по понятным причинам это не мое предпочтительное решение!


person Matthew Hintzen    schedule 25.08.2012    source источник
comment
Я тоже столкнулся с этой проблемой, вы нашли решение?   -  person Lari Tuomisto    schedule 05.09.2012
comment
Я не могу воспроизвести проблему с битами VS 2012 RTM. Для меня странно то, что на каждом шаблоне MVC 4 в MVC4 уже установлен пакет веб-API. Почему вы должны установить пакет снова?   -  person Hongye Sun    schedule 23.09.2012
comment
Начиная с Visual Studio 2012, лучший обходной путь: title="использование Microsoft BCL async с анализом кода вызывает ошибки"> stackoverflow.com/questions/17298281/.   -  person David Kean    schedule 02.08.2013


Ответы (4)


Попробуйте следующее:

  1. Depending on your Visual Studio edition navigate to:
    • VS 2010:
      %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop
    • VS 2012:
      %ProgramFiles(x86)%\Microsoft Visual Studio 11.0\Team Tools\Static Analysis Tools\FxCop
  2. Откройте FxCopCmd.exe.config и измените AssemblyReferenceResolveMode с StrongName на StrongNameIgnoringVersion.
  3. Сохраните изменения и перестройте свой проект.
person Yao    schedule 11.10.2012
comment
Я CA0058 жаловался на то, что не нашел версию EntityFramework, на которую я якобы ссылался, но с тех пор обновил ее. Я был сбит с толку, но это запустило инструмент. Я предполагаю, что версия не имеет значения в этом случае, так что это хорошо для меня. - person Chris; 05.03.2013
comment
Это решает симптом, а не основную проблему. У нас достаточно таких задач, как есть, без добавления других! - person brumScouse; 26.06.2014
comment
не выглядит идеальным решением, так как может использовать любую версию сборки и могут быть проблемы с совместимостью. - person Anshul Nigam; 19.03.2015

В Visual Studio 2012 и более поздних версиях вместо изменения установочных файлов используйте указанный здесь обходной путь: Использование Microsoft.Bcl.Async с анализом кода вызывает ошибки.

person David Kean    schedule 02.08.2013

У меня была такая же проблема (не удалось построить локально и удаленно на Azure). Мне помог этот обходной путь: эталонная-правильная-net-4-5-сборки#" rel="nofollow">http://connect.microsoft.com/VisualStudio/feedback/details/760208/nuget-package-for-asp-net-mvc-4 -web-api-does-does-reference-correct-net-4-5-assemblies#

вот часть, которая вам нужна:

Скопируйте файлы System.Net.Http.dll и System.Net.Http.xml, содержащиеся в каталоге packages\Microsoft.Net.Http.2.0.20710.0\lib\net40, в каталог packages\Microsoft.AspNet.WebApi.Core.4.0. Каталог .20710.0\lib\net40. Поскольку отсутствующая сборка System.Net.Http.dll теперь находится в том же месте, что и сборка System.Web.Http.dll, на которую указывает ссылка, теперь анализ кода может правильно разрешить конфликтующую сборку System.Net.Http.

person pajics    schedule 24.04.2013

Проблема вызвана тем, что у вас есть зависимость от более новой версии System.Net.Http, чем та, которая требуется для одной из других упомянутых сборок.

Правильный способ решить эту проблему — добавить dependentAssembly редиректов к app.config проектам-нарушителям. Принятый ответ об отключении ошибок просто маскирует основную проблему.

Добавьте следующее в раздел runtime документа app.config, чтобы переназначить старую версию, которая не может быть разрешена, на версию, указанную в вашем проекте. Номера версий, очевидно, должны быть обновлены, чтобы соответствовать вашей ситуации.

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
person TheCodeKing    schedule 06.11.2013