Exceção de Memória do Sistema
Quando os desenvolvedores usam a versão mais recente do IronOCR no .NET Framework, há casos em que a execução do programa resulta em um erro System.Memory Exception, como mostrado abaixo.
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)
Embora este problema não esteja diretamente relacionado ao IronOCR em si, há desafios de compatibilidade conhecidos com dependências do System.Memory. Mesmo quando uma versão mais nova do System.Memory (por exemplo, 4.4.5 ou posterior) está instalada, seja como parte de outra dependência ou como uma referência direta, o tempo de execução ainda pode lançar erros relacionados à versão.
Isso ocorre porque algumas dependências impõem vínculo estrito de versão, o que significa que esperam uma versão específica do System.Memory, independentemente de uma versão mais nova, teoricamente compatível, estar presente. Como resultado, o erro persiste a menos que apliquemos a solução alternativa descrita abaixo.
Solução
A solução para essa exceção é modificar o App.config com o código abaixo.
<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>
Explicação
A versão modificada do App.Config visa evitar conflitos de versão que podem surgir quando múltiplas dependências requerem versões diferentes do mesmo assembly. Ao utilizar essa configuração, o aplicativo carregará a versão apropriada em tempo de execução. O redirecionamento força todos os componentes a usarem a versão v4.0.1.2, eliminando assim a possibilidade da exceção mencionada anteriormente. Após modificar o App.Config, execute o aplicativo novamente para garantir que o programa não gere outra exceção.
Para mais informações e discussões sobre este tópico, você pode visitar a página do GitHub que detalha a exceção e a solução alternativa atual aqui.

