71 votos

¿Como puedo yo solucionar Asamblea conflictos de versión con JSON.NET tras actualizar referencias de paquete NuGet en un nuevo proyecto ASP.NET MVC 5?

Que crea un nuevo proyecto web de ASP.NET MVC 5 VS 2013 (actualización 1) actulizar todos los paquetes de NuGet. Cuando construyo el proyecto, me sale la siguiente ADVERTENCIA:

warning MSB3243: No way to resolve conflict between "Newtonsoft.Json, Version=6.0.0.0,  Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed".

Cuando web.config, sin embargo, veo que una redirección de enlace en su sitio:

  <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>

Que es exactamente lo que informa la advertencia.

¿Como puedo solucionar esta advertencia?

90voto

Jim Lamb Puntos 10474

Aquí los pasos que he utilizado para fijar la advertencia:

  • Descargar proyecto en VS
  • Edit .archivo csproj
  • Buscar todas las referencias a Newtonsoft.Json de la asamblea
    • Encontrado dos, uno a v6 y uno a la v5
    • Sustituir la referencia a la v5 v6
  • Cargar proyecto
  • Construir y aviso de la asamblea de referencia fracaso
  • Ver las Referencias y ver que ahora hay dos Newtonsoft.Json. Quitar uno de los que no consigue resolver.
  • Reconstruir - sin advertencias

Esperemos que esto ayude a alguien que golpea a esta advertencia.

26voto

McGaz Puntos 159

He tenido este problema ya que he actualizado los paquetes, que incluyen Microsoft.AspNet.WebApi que tiene una referencia a Newtonsoft.Json 4.5.6 y yo ya tenía instalada la versión 6. No era lo suficientemente inteligente como para utilizar la versión 6.

Para resolver esto, después de que el WebApi actualización que me abrió las Herramientas > NuGet Package Manager > Paquete de la Consola de Administrador y ejecutar:

 Update-Package Newtonsoft.Json

El registro mostró que la 6.0.x y 4.5.6 versiones fueron todos los actualiza a la última versión y que todo estaba bien.

Tengo la sensación de que esto vendrá de nuevo.

13voto

user3167744 Puntos 79

He encontrado para eliminar esta sección de la solución de archivo de proyecto el problema.

<ItemGroup>
<Reference Include="Newtonsoft.Json">
  <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>

8voto

ZeroDotNet Puntos 117

Si ninguna de las obras mencionadas, trate de usar esto en el web.config o 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-6.0.0.0" newVersion="6.0.0.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

0voto

Nick Niebling Puntos 72

Tuve problema similar y sólo quería publicar una respuesta para otros en mi situación.

Tengo una solución de ejecución de un ASP.NET Aplicación Web con varias otras clases de C# lib proyectos.

Mi ASP.NET Aplicación Web no estaba usando json, pero otros proyectos donde.

Esta es la forma en que me fijo es:

  1. De hecho estoy seguro que todos los proyectos donde el uso de la última versión (6) usando NuGet Actualización en todos los proyectos que actualmente se utiliza cualquier versión de json - esto no soluciono el problema
  2. He añadido json para la aplicación web usando NuGet - se ha solucionado el problema (déjame sumergirse en por qué):

Paso 2 fue, ante todo, la adición de una información de configuración para json, que sugieren que todos los proyectos, el uso de la última versión (6) no importa qué versión tienen. La adición de la asamblea de la unión a la Web.Config es más probable que la corrección.

Sin embargo, el paso 2 también limpio som código de la herencia. Resultó que previamente hemos utilizado una versión antigua (5) de json en nuestra Web de la Aplicación y el NuGet carpetas no se eliminan cuando la referencia (sospecho que: manualmente) quitado. La adición de la última json (6), eliminado las carpetas antiguas json (v5). Esto podría ser parte de la solución de problemas.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: