c# - libreria - newtonsoft json version
Paquete de montaje de Newtonsoft.json no coincide la versiĆ³n (10)
Consiguió el error anterior: en Visual Studio 2013 Para corregir: En el paquete mamnager Ejecute: Install-package newtonsoft.json Esto agregará una nueva línea en packages.config <package id="Newtonsoft.Json" version="6.0.5" targetFramework="net45" />
Eliminar la línea anterior que podría apuntar a la versión anterior en packages.config. Elimine el directorio de la versión anterior en el directorio de empaquetadores. Elimine la referencia de NewtonSoft.Json y léala apuntando a la última versión. Root webconfig tendrá el siguiente <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
una vez que todo esté listo. Cerrar y reabrir el estudio visual. Esto debería arreglarlo. Tuve el mismo error al instalar PM> install-package durandal.starterkit. Usé el método anterior para corregirlo.
Estoy tratando de usar SocketIO4Net para crear un cliente socket.io en .net. Itseems SocketIO4Net tiene una dependencia de Newtonsoft.Json> = 4.0.8. También estoy usando la biblioteca PushSharp que tiene una dependencia Newtonsoft.Json de> = 4.5.10. Obtuve NewtonSoft.Json 4.5.11 cuando instalé PushSharp por primera vez y pensé que esta versión también debería ser compatible con SocketIO4Net, ya que es una versión superior, pero recibo este error cada vez que intento conectarme al servidor socket.io.
No se pudo cargar el archivo o el ensamblaje ''Newtonsoft.Json, Version = 4.0.8.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia del ensamblaje. (Excepción de HRESULT: 0x80131040)
Me he estado golpeando la cabeza todo el día con estos problemas de dependencia, estaría muy agradecido si alguien me pudiera orientar en la dirección correcta.
En mi caso, eliminé el paquete con NuGet e instalé uno nuevo. Luego, elimine la referencia de Referencias y agregue de nuevo manualmente. Funciona como el encanto. Espero resolver para ti.
Estaba trabajando en un viejo proyecto recientemente. Necesitaba actualizar nuestro Newtonsoft.Json.dll, ya que tenía que utilizar una API "nueva" que requería una versión más nueva, pero aún tenía otras DLL que requerían la versión anterior.
bindingRedirect que dices? No Seguía quejándose del desajuste manifiesto.
Separar las etiquetas codeBase ? No Seguía quejándose del desajuste manifiesto.
El problema era, aparentemente, que la versión anterior de Newtonsoft.Json.dll (3.0.0.0) NO tiene un PublicKeyToken , pero la versión "nueva" (4.5.7.1) TIENE un PublicKeyToken . Por lo tanto, no pudieron compartir la misma etiqueta dependiente de montaje.
Esto es lo que terminé con:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="" culture="neutral"/>
<codeBase version="3.0.0.0" href="bin/Newtonsoft_Old/Newtonsoft.Json.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<codeBase version="4.5.0.0" href="bin/Newtonsoft.Json.dll" />
</dependentAssembly>
He solucionado este problema fácilmente: no había copiado el archivo de configuración XML de la carpeta de compilación.
¡Me aseguré de que el archivo de configuración xml también se incluyera junto con mi programa y todo funcionó bien!
Las soluciones anteriores son correctas, pero hay un punto más que no debe olvidarse: el contenido de app.config era el mismo que las soluciones anteriores.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Pero es una buena idea verificar si está actualizado. En mi caso, Newtonsoft.JSON (v.6.0.4) ha llegado a depender de otro paquete.
Hay dos opciones;
- Actualizar (paquete Newtonsoft.JSON) últimas versiones.
- Actualice el archivo app.config en los números de versión .
Y último consejo, si está trabajando con más de un proyecto, por ejemplo. Ejecute dll y verifique ambas versiones si hay Newtonsoft.JSON.
Ponga una redirección de ensamblaje en su aplicación / web.config;
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" PublicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="1.0.0.0-4.5.11.0" newVersion="4.5.11.0" />
</dependentAssembly>
Tenga en cuenta que los números de versión deben coincidir con la versión que ha instalado.
Puede modificar la configuración de enlace de ensamblaje y agregar una redirección. Consulte Redireccionar versiones de ensamblaje en MSDN.
Básicamente, desea agregar el siguiente fragmento de app.config
a su archivo app.config
o web.config
:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json"
publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<!--
Assembly versions can be redirected in application,
publisher policy, or machine configuration files.
-->
<bindingRedirect oldVersion="1.0.0.0-4.5.11.0" newVersion="4.5.11.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
EDITAR
¿Por qué necesita redireccionar versiones de ensamblaje? Aunque SocketIO4Net es compatible con las versiones más recientes de Newtonsoft.Json, se compiló contra una versión única (4.0.8 en su caso). Esta versión se almacena en el archivo DLL y se utiliza para cargar archivos DLL de los que depende SocketIO4Net.
Tenga en cuenta que las dependencias de NuGet no son lo mismo que las dependencias de DLL / runtime: la dependencia de NuGet en Newtonsoft.Json> = 4.0.8 solo significa que se le permitirá instalar SocektIO4Net en un proyecto que tiene una versión más nueva de Newtonsoft.Json, que tiene nada que ver con la configuración de tiempo de ejecución.
Dicho esto, las versiones recientes de NuGet deberían agregar redireccionamientos de enlace de ensamblaje automáticamente si su proyecto tiene el archivo app.config o web.config.
Solución encontrada, intente con:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Tenía este mismo problema.
Solo lo resolvió.
Ocurrió después de que NuGet se usó para instalar Ext.NET, que tiene una dependencia para Newtonsoft.JSON.
Ya había un archivo Newtonsoft.JSON.dll en la carpeta / bin (y obviamente una referencia a él en el archivo web.config) sin verificar que inicié el procedimiento de instalación de paquetes de NuGet mientras realizaba la depuración (por lo que probablemente el archivo tenía un bloqueo).
En la ventana de error de tiempo de ejecución, le indicará en el seguimiento de la pila con qué parte del manifiesto tiene un problema, la mía era la versión principal, así que revisé la versión del paquete de instalación. y fue 1 versión principal. Encontró el archivo original de NuGet en: "[ruta física] /../ packages / Newtonsoft.Json. [Version] / lib / [. Net version] /"
Tanto Manifest como Library estaban allí, así que lo copió en la carpeta / bin, actualizó la información del ensamblado raíz web.config y funcionó.
Muestras de código: Antes
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
Después
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
Espero que esto ayude
Solo sucedió esto con TeamCity y me imagino que otros pronto experimentarán esto. Esto probablemente se aplica a la mayoría de los servidores de compilación que extraen paquetes de NuGet.
Todas las respuestas que dicen hacer redirecciones son correctas. Sin embargo, aún debe definir el número de versión correcto. Mi proyecto estaba usando Newtonsoft.Json 7.0
, sin embargo, acababan de lanzar 8.0
y TeamCity estaba bajando 8.0
que estaba causando problemas solo en el servidor y no localmente. Todas mis redirecciones se establecieron en 7.0
.
Asegúrese de que la aplicación implementada realmente obtenga la versión correcta de NuGet y no solo la más reciente y la mejor. O actualice su configuración para que apunte a la versión más reciente.