c# - standard - No se pudo cargar el archivo o el ensamblaje ''Newtonsoft.Json, versión=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'' o una de sus dependencias
no se puede cargar el ensamblado newtonsoft json (10)
Tengo un proyecto WinJS que se construyó anteriormente en Windows 8.1 con VS 2013.
Recientemente, actualicé este proyecto a Universal Windows 10 creando un proyecto de Javascript Universal Windows 10 en blanco y luego agregué todos mis archivos del proyecto anterior.
Tengo Windows Runtime Components y también Class Library para SQLite.
Agregué Universal Windows Runtime Component y Universal Class Library y copié todos mis archivos del proyecto anterior a los lugares respectivos.
De alguna manera me las arreglé para eliminar todos los errores de construcción.
Instalé todo el SQLite-net requerido, SQLite para Universal Windows Platform, Newtonsoft, etc.
Pero cuando ejecuto la aplicación y llamo a un método nativo en Windows Runtime Component, se producen errores extraños como:
An exception of type ''System.IO.FileNotFoundException'' occurred in mscorlib.ni.dll but was not handled in user code.
Additional information: Could not load file or assembly ''Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'' or one of its dependencies. The system cannot find the file specified.
La versión de Newtonsoft es: 9.0.1
Mi archivo project.json de Windows Runtime Component tiene lo siguiente:
{
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0",
"Newtonsoft.Json": "9.0.1"
},
"frameworks": {
"uap10.0": {}
},
"runtimes": {
"win10-arm": {},
"win10-arm-aot": {},
"win10-x86": {},
"win10-x86-aot": {},
"win10-x64": {},
"win10-x64-aot": {}
}
}
Mi versión de Visual Studio es:
Intenté quitar todo el js de Newtonsoft y reinstalarlo pero no tuve suerte.
Creo que AutoCAD secuestró la mía. La solución que funcionó para mí fue secuestrarlo. Lo obtuve de https://forums.autodesk.com/t5/navisworks-api/could-not-load-file-or-assembly-newtonsoft-json/td-p/7028055?profile.language=en - yeah, Internet funciona de maneras misteriosas.
// in your initilizer ...
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
.....
private Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{
if (args.Name.Contains("Newtonsoft.Json"))
{
string assemblyFileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "//Newtonsoft.Json.dll";
return Assembly.LoadFrom(assemblyFileName);
}
else
return null;
}
En mi caso, fue un problema con el archivo de configuración web.config en mi máquina cuando actualicé la versión de newton VS corrigió automáticamente mi archivo web.config para que apunte a la nueva versión. Cuando lo subí a producción, el web.config existente apuntaba a la versión anterior.
Una vez que actualicé el web.config comenzó a funcionar nuevamente.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
Estoy usando Visual Studio 2013 Update 2 . En mi caso, tengo un proyecto web y un proyecto Web Api y un proyecto de prueba de unidad y otras bibliotecas de clase en una sola solución.
He pasado un par de días para resolver el problema. A continuación se muestra la solución paso a paso que he encontrado.
- Haga clic derecho en el proyecto Web Api . Seleccione " Establecer como proyecto de inicio "
- Haga clic derecho en el proyecto Web Api . Ir a Propiedades (Alt + Enter).
- En la pestaña Aplicación del menú del lado izquierdo, seleccione Aplicación
- Encuentra el marco de destino . Cámbielo a 4.5.1 y guárdelo. Sin embargo, está mostrando un error en la ventana "Lista de errores". Después de la reconstrucción, no hay ningún error.
- Elimine todos los paquetes
Newtonsoft.Json
de la solución utilizando la siguiente consulta de la Consola del Administrador de paquetes (para obtenerla Ver> Otra ventana> Consola del Administrador de paquetes ).
desinstalar el paquete newtonsoft.json -force
- Reinstale
Newtonsoft.Json
desde la Consola de Package Manager
paquete de instalación newtonsoft.json
- Si tiene la última actualización para Visual Studio 2013, es posible que no encuentre este problema. Como estoy usando la Actualización 2, entonces, al intentar instalar
Newtonsoft.Json
, encontré el siguiente error.
El paquete ''Newtonsoft.Json 10.0.3'' requiere la versión del cliente de NuGet ''2.12'' o superior, pero la versión actual de NuGet es ''2.8.50313.46''
- Para resolver este problema, necesitamos actualizar la Consola del Administrador de paquetes . Tengo que
Herramientas> Extensiones y actualizaciones ...> En el panel izquierdo ... seleccione Actualizaciones> Galería de Visual Studio .
Actualice la extensión del administrador de paquetes NuGet . Sigue los pasos que vienen después.
Visual Studio tomará un reinicio después de eso.
Ejecute el paso 6 de nuevo.
Después de la instalación packages.config se agregará con esta línea debajo
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net451" />
Después de la instalación, se agregará web.config con las siguientes líneas
<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>
Se ejecutará con éxito, si no hay otro error.
Hace un tiempo tuve un problema similar con una nueva aplicación ASP.NET Core. Resulta que una de las bibliotecas a las que se hace referencia utiliza una versión de Newtonsoft.Json que era inferior a 9.0.0.0. Así que actualicé la versión para esa biblioteca y el problema se resolvió. No estoy seguro si podrás hacer lo mismo aquí.
He experimentado problemas similares con mis proyectos ASP.NET Core. Lo que sucede es que el archivo .config en la carpeta bin / debug se genera con esto:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="6.0.0.0" newVersion="9.0.0.0" />
<bindingRedirect oldVersion="10.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
Si cambio manualmente el segundo bindingRedirect a esto, funciona:
<bindingRedirect oldVersion="9.0.0.0" newVersion="10.0.0.0" />
No estoy seguro de por qué sucede esto.
Estoy usando Visual Studio 2015 con .Net Core SDK 1.0.0-preview2-1-003177.
Hice una demostración básica y reproduje este problema. Parece que el componente WinRT no pudo encontrar el ensamblaje correcto de Newton.Json
. Temporalmente, la solución es agregar manualmente el archivo Newtonsoft.json.dll
. Puedes lograrlo siguiendo estos pasos:
Haga clic con el botón derecho en Referencias-> Agregar referencia-> Examinar ...-> Buscar C: / Users / .nuget / packages / Newtonsoft.Json / 9.0.1 / lib / portable-net45 + wp80 + win8 + wpa81 / Newtonsoft.json. dll-> Haga clic en el botón Agregar.
Reconstruye tu proyecto de Runtime Component y ejecuta. Este error debería haberse ido.
Nos tomó un día resolver este problema. La solución está obligando a su servicio web a usar la versión 11.0.0 en su archivo web.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-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
</assemblyBinding>
Pude resolver este problema en mi proyecto mvc de asp.net al actualizar mi versión de Newton.Json (versión anterior = 9.0.0.0 a la nueva versión 11.0.0.0) con el Administrador de paquetes.
Resolví este problema agregando Newtonsoft.Json a NuGet del proyecto de inicio.
También tuve el mismo problema, para resolver esto, verifique las Referencias de su proyecto si la versión de Newtonsoft.Json se actualizó (probablemente no), luego elimínela y verifique su Web.config o App.config aunque sea element dependAssembly se actualizó como sigue:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
Después de eso, reconstruya el proyecto nuevamente (la dll será reemplazada con la versión correcta)