2012-08-25 22 views
28

este problema es exactamente el mismo que este post http://forums.asp.net/t/1807797.aspx/1?System+Net+Http+is+not+found y éste on StackOverflowerror de análisis de código no puede cargar el archivo o ensamblado 'System.Net.Http, versión = 2.0.0.0 en la Web API MVC4

Tengo toda la los últimos bits RTM, se inició un MVC 4 nuevo en .Net 4.5, se agregó el paquete nuget WebAPI y ahora mi análisis de código falla con el mismo error que el informado en el enlace anterior.

CA0058 Código de error que ejecuta Análisis CA0058: El ensamblaje de referencia 'System.Net.Http, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' no se pudo encontrar. Se requiere este montaje para el análisis y se hace referencia por: 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. [errores y advertencias] - (global)

De lo que puedo encontrar a este parecían ocurrir con las versiones RC porque había un conflicto entre el .NET 4.5 System.Net.Http marco y la versión del WebAPI de la System.Net.Http.

Las otras respuestas sobre el StackOverflow response hablan sobre la degradación de .Net 4.5 a 4.0, por razones obvias, ¡esta no es mi solución preferida!

+0

Tengo este problema también, ¿ha encontrado una solución? –

+0

No puedo reproducir el problema con VS 2012 RTM bits. Una cosa extraña para mí es que todas las plantillas MVC 4 en MVC4 ya tienen instalado el paquete de API web. ¿Por qué tienes que instalar el paquete nuevamente? –

+0

Iniciando en Visual Studio 2012, una mejor solución es: http://stackoverflow.com/questions/17298281/using-microsoft-bcl-async-with-code-analysis-causes-errors/17935400#17935400. –

Respuesta

71

Pruebe lo siguiente:

  1. Dependiendo de su edición de Visual Studio vaya a:
    • 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. abierto FxCopCmd.exe.config y cambiar AssemblyReferenceResolveMode de StrongName a StrongNameIgnoringVersion.
  3. Guarde el cambio y reconstruya su proyecto.
+0

Esto funcionó para mí, gracias! –

+0

Tuve 'CA0058' quejándose de no encontrar una versión de EntityFramework a la que supuestamente me estaba refiriendo, pero desde entonces me he actualizado. Estaba desconcertado, pero esto hizo funcionar la herramienta. Voy a adivinar que la versión no importa en este caso, así que esto es bueno para mí. – Chris

+1

Esto resuelve el síntoma, no el problema subyacente. ¡Ya tenemos suficiente de este tipo de problemas sin agregar otros! – brumScouse

2

He tenido el mismo problema (no se pudo crear de forma local y remota en azul). Esta solución me ayudó: 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#

aquí es la pieza que necesita:

Copiar los archivos System.Net.Http.dll y System.Net.Http.xml contenidas en los paquetes \ Microsoft.Net. Directorio Http.2.0.20710.0 \ lib \ net40 al directorio packages \ Microsoft.AspNet.WebApi.Core.4.0.20710.0 \ lib \ net40. Como el ensamblado System.Net.Http.dll que falta ahora está en la misma ubicación que el ensamblado System.Web.Http.dll al que se hace referencia, el análisis de código ahora puede resolver correctamente el ensamblado System.Net.Http en conflicto.

0

El problema se debe a que tiene una dependencia en una versión más reciente de System.Net.Http, que la requerida por uno de los otros ensamblados a los que se hace referencia.

La forma correcta de resolver este problema es agregar dependentAssembly redireccionamientos al app.config de proyectos ofensivos. La respuesta aceptada de deshabilitar los errores simplemente enmascara un problema subyacente.

Agregue lo siguiente a la sección runtime de app.config para reasignar la versión anterior que no se puede resolver a la versión a la que se hace referencia en su proyecto. Los números de versión obviamente deben actualizarse para corresponder a su situación.

<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> 
+0

La solución mencionada anteriormente no funcionó para mí, –

Cuestiones relacionadas