2012-02-24 82 views
8

“No se pudo cargar el archivo o ensamblado 'Newtonsoft.Json, Version = 4.0.3.0, Culture = neutral PublicKeyToken = 30ad4fe6b2a6aeed' o uno de sus dependencias . La definición del manifiesto del ensamblaje ubicado no coincide con con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040) ".No se pudo cargar el archivo o ensamblado Newtonsoft.json.dll

'NewtonsoftJson.dll' es necesario para su publicación en twitter. La versión utilizada es 4.0.3.0.

Y el mismo conjunto (pero la versión de diferencia 4.0.0.0) se utiliza como el conjunto dependiente de facebook C# api (dll). Sin embargo, el conjunto anterior (4.0.3.0) no funciona para ambos casos (es decir, para publicar en Twitter y para iniciar sesión en Facebook). Para resolverlo, creó un proyecto separado para publicar en Twitter y hacer referencia al ensamblado (4.0.3.0) por separado (en el proyecto para la publicación de Twitter). Y se agregó otra versión (4.0.0.0) como referencia en el proyecto principal para Facebook. pero aún así viene el error. Si el proyecto de Twitter está desactivado y se ejecutó, el inicio de sesión de Facebook funciona bien y viceversa.

He hecho mucha investigación y he intentado lo siguiente.

eliminar archivos temporales de ASP.NET solución limpia reiniciar el ordenador

Incluso trataron de desinstalar el conjunto de GAC (sin embargo no es registrada allí).

Por favor, ayúdenme en esto ya que no está funcionando. Gracias, S

Respuesta

8

No está claro cuáles son las relaciones de los proyectos, o cuándo se produce este error, pero hay una suposición.

Tiene 3 proyectos, el proyecto de Facebook (refs versión 4.0.0.0), el proyecto de twitter (refs versión 4.0.3.0), y un proyecto principal que se refiere a ambos proyectos. Es posible que pueda compilar esta solución, pero cuando ejecute el ensamblado, el enlace fallará. ¿Por qué? porque el comportamiento predeterminado es copiar ensamblajes localmente antes de ejecutar. Lo que sucede es que el primer proyecto para construir copias para bin (decir Twitter) luego el segundo proyecto construye (facebook), luego main. Sin embargo, al final de esto, la versión 4.0.0.0 es la carpeta bin sentada. Cuando se ejecuta, tan pronto como se invoca algo de Twitter que intenta usar el ensamblado del problema, el enlace falla porque ya no tiene acceso a la versión 4.0.3.0 del ensamblado.

Hay un par de formas de evitar esto. Uno es registrar ambas asambleas en el GAC. Si eso no es factible, busque en assembly binding redirection en su archivo de configuración. Otra es registrarse para el AssemblyResolve event y cargar el ensamblaje mediante programación.

+0

Por favor, echar un vistazo a http://stackoverflow.com/questions/22490967/visual-studio-keeps-overwriting-newtonsoft-json-dll-with-an-older-version builing un proyecto, cambios ¡Versión de Newtonsoft.json.dll en el otro! – nsb

8

Añadir lo siguiente a su archivo app.config:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

dentro de sus etiquetas <configuration></configuration>

0

instalar el paquete Newtonsoft en todos los proyectos.

Install-Package Newtonsoft.Json -Version 8.0.3 
Cuestiones relacionadas