Excepción de memoria del sistema

This article was translated from English: Does it need improvement?
Translated
View the article in English

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

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

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 5,246,844 | Versión: 2025.12 recién lanzado