Exceção de Memória do Sistema

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

Quando os desenvolvedores usam a versão mais recente do IronOCR no .NET Framework, há casos em que executar o programa resultaria em um System.Memory Exception, conforme 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 esta 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>
XML

Explicação

A App.Config modificada visa prevenir conflitos de versão que podem surgir quando múltiplas dependências requerem diferentes versões do mesmo assembly. Ao usar esta configuração, o aplicativo carregará a versão apropriada em tempo de execução. O redirecionamento força todos os componentes a usar a versão v4.0.1.2, eliminando assim o potencial para a exceção mencionada anteriormente. Após modificar o App.Config, por favor, execute novamente o aplicativo para garantir que o programa não mostre 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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.