Nuestra aplicación C# usa .Net Framework 4.7.2 y estamos tratando de implementar JsonSerializer en System.Text.Json. Podemos construir la solución sin ningún problema, pero cuando intentamos ejecutar la aplicación, obtenemos el siguiente error
Error al resolver: System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Excepción detectada durante la ejecución: Main System.IO.FileLoadException: No se pudo cargar el archivo o ensamblado 'System.Runtime.CompilerServices.Unsafe , Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' o una de sus dependencias. La definición del manifiesto del ensamblado ubicado no coincide con la referencia del ensamblado. (Excepción de HRESULT: 0x80131040) Nombre de archivo: 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' en System.Span`1..ctor(T[] array) en System .Text.Json.JsonSerializer.Deserialize[TValue](String json, Type returnType, JsonSerializerOptions options) en Project.Class1.Main(String[] args) en D:\Project\Class1.cs:line 36
Mirando la versión de System.Rutime.CompilerServices.Unsafe que está instalada en NuGet, es 5.0.0 y dentro de nuestro archivo app.config, tenemos lo siguiente:
<?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>Ahora, dado que 4.0.4.1 está dentro del rango de la versión anterior, asumiría que debería redirigir a 5.0.0.0 en lugar de buscar 4.0.4.1, pero debo estar equivocado. También traté de cambiar la versión anterior a "4.0.4.1", pero eso no ayudó.
Si trato de cambiar la versión de System.Runtime.CompilerServices.Unsafe a la versión del paquete 4.5.3, que corresponde a la versión 4.0.4.1, entonces System.Text.Json debe degradarse de 5.0.2 a 2.0.0.11. Esta versión no contiene JsonSerializer, por lo que no funcionará con nuestra aplicación.
¿Hay alguna forma en que podamos redirigir con éxito de buscar la versión anterior (4.0.4.1) a buscar la última versión que está instalada (5.0.0.0)? Cualquier comentario o sugerencia es apreciada!