Excepción de memoria del sistema
Cuando los desarrolladores utilizan la última versión de IronOCR en el .NET Framework, hay ocasiones en que ejecutar el programa resulta en una Excepción de memoria del sistema, como se muestra a continuación.
Could not load file or assembly 'System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)Aunque este problema no está directamente relacionado con IronOCR en sí, se conocen desafíos de compatibilidad con las dependencias de System.Memory. Incluso cuando se instala una versión más nueva de System.Memory (por ejemplo, 4.4.5 o posterior), ya sea como parte de otra dependencia o como una referencia directa, el tiempo de ejecución puede seguir generando errores relacionados con la versión.
Esto ocurre porque algunas dependencias imponen un enlace estricto de versión, lo que significa que esperan una versión específica de System.Memory, independientemente de si hay una versión más nueva y teóricamente compatible presente. Como resultado, el error persiste a menos que apliquemos la solución alternativa descrita a continuación.
Solución
La solución a esta excepción es modificar el App.config con el código siguiente.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>Explicación
El App.Config modificado tiene como objetivo prevenir conflictos de versión que pueden surgir cuando múltiples dependencias requieren diferentes versiones de la misma asamblea. Mediante el uso de esta configuración, la aplicación cargará la versión apropiada en tiempo de ejecución. La redirección obliga a todos los componentes a usar la versión v4.0.1.2, eliminando así el potencial para la excepción mencionada anteriormente. Después de modificar el App.Config, por favor vuelva a ejecutar la aplicación para asegurarse de que el programa no genere otra excepción.
Para obtener más información y discusiones sobre este tema, puede visitar la página de GitHub que detalla la excepción y la solución alternativa actual aquí.






