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 .NET Framework, hay casos en los que ejecutar el programa generarí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 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 código App.Config modificado tiene como objetivo evitar 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. La redirección obliga a todos los componentes a usar la versión v4.0.1.2, eliminando así la posibilidad de la excepción mencionada. Después de modificar App.Config, 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,556,263 | Versión: 2026.3 recién lanzado
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.