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 casos donde al ejecutar el programa se produciría un System.Memory Exception, 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 a continuación.

 <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 versiones que pueden surgir cuando múltiples dependencias requieren diferentes versiones del mismo ensamblado. Al usar esta configuración, la aplicación cargará la versión adecuada en tiempo de ejecución. El redireccionamiento forza a todos los componentes a usar la versión v4.0.1.2, eliminando así la posibilidad de 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,896,332 | Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronOcr
ejecuta una muestra y observa cómo tu imagen se convierte en texto buscable.