Conflicto de la Asamblea de Newtonsoft.Json

Uso Netonsoft.Json en mi proyecto. Funciona bien hasta que empiece a integrar Paypal SDK en mi proyecto. Mi código es el siguiente.

String AccessToken = new PayPal.OAuthTokenCredential("", "").GetAccessToken(); ---->>>> This Line Throwing An Error PayPal.Api.Payments.Address add = new PayPal.Api.Payments.Address(); add.city = TextBoxCity.Text; add.line1 = TextBoxAddress.Text; add.phone = TextBoxPhoneNumber.Text; add.postal_code = TextBoxZipcode.Text; add.state = TextBoxState.Text; PayPal.Api.Payments.CreditCard cc = new PayPal.Api.Payments.CreditCard(); cc.number = TextBoxCreditCardNumber.Text; cc.first_name = TextBoxFirstName.Text; cc.last_name = TextBoxLastName.Text; cc.expire_month = Convert.ToInt16(TextBoxExpiryMonth.Text); cc.expire_year = Convert.ToInt16(TextBoxExpiryYear.Text); cc.cvv2 = TextBoxCVVNumber.Text; cc.billing_address = add; cc.Create(AccessToken); 

y obtengo un error como el siguiente

  System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

Busco en Internet y encontré alguna solución para cambiar el archivo de configuración. SO cambio mi archivo de configuración de la siguiente manera

        

También juego con propiedades de ensamblaje como Copy Local, Specific Version pero nada me ayuda a resolver esto. ¿Cómo puedo resolver un conflicto de ensamblaje?

Acabo de tener el mismo problema y lo resolví actualizando el Newtonsoft.Json a la última versión usando

 Update-Package Newtonsoft.Json 

y luego ir a Web.config y agregar:

     

+1 a zbarrier por su solución. He aquí por qué funcionó …

+1 a zbarrier por su respuesta que me ayudó a resolver mi problema. Los problemas de referencia de la asamblea son los peores … así que pensé que publicaría los pasos que tomé, así como algunas cosas que aprendí, y espero que ayude:


  1. INTENTO FALLIDO : Pegué las siguientes líneas en mi web.config :

             

    ^^^^^ NO FUNCIONÓ


  1. SOLUCIÓN: navegó a ~/Bin/Newtonsoft.Json.dll y abrió el archivo en Visual Studio. De forma predeterminada, la interfaz para el archivo muestra una carpeta con el nombre del ensamblaje: hice doble clic para expandirlo y eventualmente vi esto: interfaz de archivo de ensamblaje Luego, hice doble clic en el ícono 1 [Neutral] que me llevó a la información de la asamblea, que se ve aquí: información del archivo de ensamblaje

    La línea que dice Assembly Version es lo que deberá ingresar en el atributo newVersion de la etiqueta . Así que tomé la sección que pegué (en el paso uno) y cambié el “5.0.8” a “6.0.0.0”. Mi nueva sección se ve así:

              

    ^^^^^ ¡FUNCIONÓ! Finalmente…


Otras notas en caso de que alguien todavía esté confundido:

  • la etiqueta va dentro de la etiqueta en el web.config. La sección que muestro arriba se pegó directamente debajo de la etiqueta de apertura de la sección de mi web.config.
  • el atributo xmlns representa el espacio de nombres XML correspondiente. Esto es utilizado por los desarrolladores del ensamblaje para evitar problemas con tags conflictivas. En este caso, debe sentirse seguro utilizando los xmlns="schemas-microsoft-com:asm.v1" enumerados anteriormente.
  • puede alterar el atributo oldVersion para reenviar versiones adicionales del ensamblado. Por ejemplo, probablemente edite el mío para que se parezca más a la respuesta de zbarrier .
  • el publicKeyToken es otro atributo que prácticamente se mantiene igual cuando se trata de Newtonsoft.Json. El publicKeyToken es solo una versión abreviada de la clave pública, como un título para un libro, y en este caso realmente no cambia. Si alguna vez desea conocer la clave pública para un ensamblaje, simplemente abra el Developer Command Prompt que se puede encontrar en el menú de inicio, luego use el símbolo del sistema para navegar hasta la ubicación del archivo de ensamblaje (en este caso ~\Bin\ ), y ejecuta el comando sn -T assembly_file_name . Entonces, en este caso, el comando fue sn -T Newtonsoft.Json.dll . Deberías obtener una respuesta como esta: respuesta del comando sn Como puede ver, la clave pública de Newtonsoft ( 30ad4fe6b2a6aeed ) se encuentra justo allí al final.

Me encontré con el mismo problema para la versión de assembly 6.0.1. Pegué las siguientes líneas en el web.config como lo indicó Harold:

     

Luego eliminé la referencia del proyecto a Newtonsoft.Json y borré la referencia a Newtonsoft.Json en el archivo packages.config.

Abrí el administrador de Nuget y reinstalé Newtonsoft.Json.

La instalación cambió la configuración de web.config a lo siguiente y todo funcionó bien:

     

Al principio, pensé que mi caso era la misma referencia de ensamblaje anterior … hice la desinstalación, la reinstalación, la instalación forzada, la reconstrucción, el ensamblaje de redirección agregado, etc.

Nada funcionó hasta que descubrí que otra asamblea estaba causando el problema.

En mi caso, mi código estaba fallando cuando llamé al método HttpClient.PostAsJsonAsync (requestURI, T). El error sobre la Referencia de la Asamblea me desató porque mi Solución tiene múltiples proyectos y en la que algunos de los proyectos utilizaron una versión anterior … terminaron perdiendo mucho tiempo hasta que …

Mi solución:

  • Se eliminó el System.Net.Http.Formatting existente de mis Referencias
  • Instaló el paquete de instalación Microsoft.AspNet.WebApi.Client – que instaló la Http.Formatting requerida.

Una vez instalado, PostAsJsonAsync () funcionó como se esperaba.

Espero que esto le ahorre a alguien el tiempo que he perdido buscando una solución.

Me enfrenté al mismo problema, he instalado Newtonsoft.Json v9.0.1, sandcastle detiene la comstackción mostrando el mismo error pero con la diferencia de versión: “No se pudo cargar el archivo o el ensamblado” Newtonsoft.Json, Version = 6.0.0.0, ”

lo que funcionó: encontrar / crear un proyecto con newtonsoft.json con la versión que solicita SandCastle, agregar el archivo “Newtonsoft.Json.dll” como referencia al proyecto SC y luego comstackr. (puedes encontrar el dll en la carpeta bin del proyecto)