Ошибка анализа кода Не удалось загрузить файл или сборку "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.
- Сохраните изменения и перестройте проект.
Ответ 2
Из Visual Studio 2012 и выше вместо изменения файлов установки используйте обходной путь, указанный здесь: Использование Microsoft.Bcl.Async с анализом кода вызывает ошибки.
Ответ 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>