System Memory Exception

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

Lorsque les développeurs utilisent la dernière version d'IronOCR sur le .NET Framework, il arrive que l'exécution du programme entraîne une System.Memory Exception, comme illustré ci-dessous.

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)

Bien que ce problème ne soit pas directement lié à IronOcr lui-même, il existe des problèmes de compatibilité connus avec les dépendances System.Memory. Même lorsqu'une version plus récente de System.Memory (par exemple, 4.4.5 ou plus) est installée - que ce soit dans le cadre d'une autre dépendance ou d'une référence directe - le moteur d'exécution peut toujours générer des erreurs liées à la version.

Cela s'explique par le fait que certaines dépendances appliquent une liaison de version stricte, ce qui signifie qu'elles attendent une version spécifique de System.Memory, indépendamment de la présence d'une version plus récente, théoriquement compatible. Par conséquent, l'erreur persiste à moins que nous n'appliquions la solution de contournement décrite ci-dessous.

Solution

La solution à cette exception consiste à modifier le App.config avec le code ci-dessous.

 <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

Explication

Le App.Config modifié vise à prévenir les conflits de version qui peuvent survenir lorsque plusieurs dépendances nécessitent des versions différentes du même assemblage. En utilisant cette configuration, l'application chargera la version appropriée au moment de l'exécution. La redirection oblige tous les composants à utiliser la version v4.0.1.2, éliminant ainsi le risque de l'exception susmentionnée. Après avoir modifié le App.Config, veuillez réexécuter l'application pour vous assurer que le programme ne soulève pas d'autre exception.

Pour plus d'informations et de discussions sur ce sujet, vous pouvez consulter la page GitHub qui détaille l'exception et la solution de contournement actuelle ici.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 5,044,537 | Version : 2025.11 vient de sortir