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

эта проблема точно такая же, как и этот пост http://forums.asp.net/t/1807797.aspx/1?System+Net+ Http + is + not + found и этот qaru.site/info/64755/...

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

CA0058 Ошибка анализа кода выполнения CA0058: ссылочная сборка 'System.Net.Http, Version = 2.0.0.0, Culture = neutral, 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.

Другие ответы на qaru.site/info/64755/... говорят о понижении с .Net 4.5 до 4.0, по понятным причинам, это не мое предпочтительное решение!

Ответ 1

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

  • В зависимости от версии Visual Studio перейдите к:
    • 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
  • Откройте FxCopCmd.exe.config и измените AssemblyReferenceResolveMode от StrongName до StrongNameIgnoringVersion.
  • Сохраните изменения и перестройте проект.

Ответ 3

У меня была та же проблема (не удалось создать локально и удаленно на лазури). Это обходное решение помогло мне: http://connect.microsoft.com/VisualStudio/feedback/details/760208/nuget-package-for-asp-net-mvc-4-web-api-does-not-reference-correct-net-4-5-assemblies#

вот часть, в которой вы нуждаетесь:

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

Ответ 4

Проблема возникает из-за того, что вы зависите от более новой версии 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>