Estoy jugando con mi proyecto mvc.Haciendo referencia a diferentes versiones de Json.NET dll
I Nugeted un paquete llamado SocialAuth.Net en el proyecto, que a su vez utiliza Newtonsoft.Json.dll 4.0.0.0 (mayores) como una de sus dependencias.
Luego porque también necesitaba Json.Net, quería una versión más nueva, So I Nugeted Json.NET, que tiene una versión más reciente 4.5.0.0 (más reciente).
Entonces ocurre el problema. En mi punto de vista de afeitar "ViewBag.Title = ...." se ha subrayado rojo que dice:
Warning 1 c:\users\admin\documents\visual studio 2010\Projects\WebApp\WebApp\Views\Home\Index.cshtml: ASP.NET runtime error: 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)
Esta es la parte de mi web.config JSON:
<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>
Así,
Fui a Referencias, revisé y encontré que Newtonsoft.Json era 4.0.0.0 (probablemente vino con SocialAuth.Net), y lo borré, y agregué la referencia 4.5.0.0 que obtuve de Nuget.
Entré en la carpeta WebApp/bin/debug/y eliminé todo, y luego reconstruí el proyecto.
Sin embargo, una vez que vuelve a generar la aplicación de web, el Newton.Json 4.0.0.0 vuelve a entrar en bin/debug/sin importar cómo me refiero manualmente a la nueva Nuget 4.5.0.0. y el mismo error regresa. Estoy atascado.
¿Tienes idea de cómo lidiar con este problema de dll? Gracias.
EDITAR -----------------------------------
Después de un poco de pensamiento, Entiendo que es porque primero Json.Net (newer 4.5) está vinculado primero, luego el anterior viene después cuando se construye. Entonces, el más viejo sobrescribe el más nuevo.
No estoy muy familiarizado con la instalación de GAC, pero sé que podría abrir esa lata de gusanos e instalar 2 versiones allí, lo que no quiero, porque eso significa que tengo que hacer eso en cada máquina que implemente. aplicación ¿Hay alguna manera de jugar con web.config y solucionar esto?
oldVersion = "0.0.0.0-4.5.0.0" debe ser oldVersion = "0.0.0.0-4.0.0.0" – user516883