json.net postsharp

json.net - AssemblyLoadException en PostSharp en la versión de lanzamiento



(2)

Tengo un par de proyectos que incluyen el paquete json.net 6.0.3 NuGet. Cuando agrego:

using Newtonsoft.Json;

Recibo el siguiente error al construir:

1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: excepción no controlada (3.1.48.0, 32 bit, CLR 4.5, versión): PostSharp.Sdk.CodeModel.AssemblyLoadException: no se puede encontrar el ensamblado ''newtonsoft.json, version = 4.5. 0.0, culture = neutral, publickeytoken = 30ad4fe6b2a6aeed ''. [No coincide la versión] 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: ======================================================================================================== === 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: Encontrar el ensamblado con identidad de enlace ''newtonsoft.json, version = 4.5.0.0, culture = neutral, publickeytoken = 30ad4fe6b2a6aeed''. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: archivo encontrado ''F: / packages / Newtonsoft.Json.6.0.3 / lib / net45 / Newtonsoft.Json.dll'' con identidad ''newtonsoft.json, versión = 6.0.0.0, culture = neutral, publickeytoken = 30ad4fe6b2a6aeed, processorarchitecture = msil ''. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: falta de coincidencia de referencia para ''F: / packages / Newtonsoft.Json.6.0.3 / lib / net45 / Newtonsoft.Json.dll'' [VersionMismatch]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''C: / ProgramData / PostSharp / 3.1.48 / bin.Release / Newtonsoft.Json.exe'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''C: / ProgramData / PostSharp / 3.1.48 / bin.Release / Newtonsoft.Json.dll'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''C: / ProgramData / PostSharp / 3.1.48 / bin.Release / Newtonsoft.Json.winmd'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''F: / bin / release / TwinkyTalk / Newtonsoft.Json.exe'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: archivo encontrado ''F: / bin / release / TwinkyTalk / Newtonsoft.Json.dll'' con identidad ''newtonsoft.json, version = 6.0.0.0, culture = neutral , publickeytoken = 30ad4fe6b2a6aeed, processorarchitecture = msil ''. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: Falta de coincidencia de referencia para ''F: / bin / release / TwinkyTalk / Newtonsoft.Json.dll'' [VersionMismatch]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''F: / bin / release / TwinkyTalk / Newtonsoft.Json.winmd'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''F: / TwinkyTalk / obj / Release / Newtonsoft.Json.exe'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''F: / TwinkyTalk / obj / Release / Newtonsoft.Json.dll'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''F: / TwinkyTalk / obj / Release / Newtonsoft.Json.winmd'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de sondeo ''C: / Archivos de programa (x86) / Reference Assemblies / Microsoft / Framework.NETFramework / v4.5.1 / Newtonsoft.Json.exe'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de sondeo ''C: / Archivos de programa (x86) / Reference Assemblies / Microsoft / Framework.NETFramework / v4.5.1 / Newtonsoft.Json.dll'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de sondeo ''C: / Archivos de programa (x86) / Reference Assemblies / Microsoft / Framework.NETFramework / v4.5.1 / Newtonsoft.Json.winmd'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de sondeo ''C: / Archivos de programa (x86) / Reference Assemblies / Microsoft / Framework.NETFramework / v4.5.1 / Facades / Newtonsoft.Json.exe'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de sondeo ''C: / Archivos de programa (x86) / Assemblies de referencia / Microsoft / Framework.NETFramework / v4.5.1 / Facades / Newtonsoft.Json.dll'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: ubicación de prueba ''C: / Archivos de programa (x86) / Assemblies de referencia / Microsoft / Framework.NETFramework / v4.5.1 / Facades / Newtonsoft.Json.winmd'' porque este directorio se agregó explícitamente a la ruta de búsqueda [Archivo no encontrado]. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: Buscando en GAC para Newtonsoft.Json, Versión = 4.5.0.0, Cultura = neutral, PublicKeyToken = 30ad4fe6b2a6aeed, processorArchitecture = x86. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: Buscando en GAC para Newtonsoft.Json, Versión = 4.5.0.0, Cultura = neutro, PublicKeyToken = 30ad4fe6b2a6aeed, processorArchitecture = msil. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: Buscando en GAC para Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: LOG: No se encontró el ensamblado ''newtonsoft.json, version = 4.5.0.0, culture = neutral, publickeytoken = 30ad4fe6b2a6aeed''. 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: ================================= ======================== 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: en PostSharp.Sdk.CodeModel.Domain. GetAssembly (IAssemblyName assemblyName, BindingOptions bindingOptions) 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: en PostSharp.Sdk.CodeModel.AssemblyRefDeclaration. ^ 5YpB0scd (BindingOptions _0) 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099 : en PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask. ^ SgrhoGlQ (AssemblyRefDeclaration _0) 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: en PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask. ^ + GwnKh4ZYHu3 () 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: en PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.Execute () 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: en PostSharp.Sdk.Extensibility.Project.ExecutePhase (Fase de cadena) 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: en PostSharp.Sdk.Extensibility.Project.Exec ute () 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: en PostSharp.Hosting.PostSharpObject.ExecuteProjects () 1> F: / TwinkyTalk / TwinkyTalk.csproj: error PS0099: en PostSharp.Hosting.PostSharpObject.InvokeProject ( ProjectInvocation projectInvocation).

No pude encontrar ninguna referencia a "''newtonsoft.json, version = 4.5.0.0," en el proyecto, no estoy seguro de por qué está buscando eso.

Intenté establecer la propiedad del proyecto "Build Host" PostSharp en managed pero obtuve la misma excepción.


Resulta que mientras la excepción venía de PostSharp, el remedio estaba actualizando todos los paquetes NuGet.


Esto generalmente puede suceder cuando algunas bibliotecas de terceros comparten una versión anterior del ensamblado (Newtonsoft.Json en este caso). El problema se resuelve especificando una redirección de enlace en su archivo web.config / app.config.

<dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0"/> </dependentAssembly>

Sin embargo, también debe indicar a PostSharp dónde buscar la configuración de redireccionamiento vinculante. Puede hacer esto estableciendo la propiedad PostSharpHostConfigurationFile en su archivo * .csproj:

<PropertyGroup> <PostSharpHostConfigurationFile>web.config</PostSharpHostConfigurationFile> </PropertyGroup>

Hay otra pregunta similar en SO ( PostSharp AssemblyLoadException Autofac ) y una publicación de blog relevante .