Systemspeicherausnahme
Wenn Entwickler die neueste Version von IronOCR auf dem .NET Framework verwenden, kann es vorkommen, dass die Ausführung des Programms zu einem System.Memory Exception führt, wie unten gezeigt.
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)
Obwohl dieses Problem nicht direkt mit IronOCR selbst zusammenhängt, gibt es bekannte Kompatibilitätsprobleme mit System.Memory-Abhängigkeiten. Selbst wenn eine neuere Version von System.Memory (z.B. 4.4.5 oder später) installiert ist—entweder als Teil einer anderen Abhängigkeit oder als direkte Referenz—kann die Laufzeit weiterhin versionsbedingte Fehler auslösen.
Dies geschieht, weil einige Abhängigkeiten strikte Versionsbindung erzwingen, was bedeutet, dass sie eine spezifische Version von System.Memory erwarten, unabhängig davon, ob eine neuere, theoretisch kompatible Version vorhanden ist. Infolgedessen bleibt der Fehler bestehen, es sei denn, wir wenden die unten beschriebene Problemumgehung an.
Lösung
Die Lösung für diese Ausnahme besteht darin, den Code App.config durch den folgenden Code zu ersetzen.
<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>
Erklärung
Das geänderte App.Config soll Versionskonflikte verhindern, die auftreten können, wenn mehrere Abhängigkeiten unterschiedliche Versionen derselben Assembly erfordern. Durch die Verwendung dieser Konfiguration lädt die Anwendung zur Laufzeit die entsprechende Version. Die Umleitung zwingt alle Komponenten zur Verwendung der Version v4.0.1.2, wodurch das Risiko der oben genannten Ausnahme beseitigt wird. Nachdem Sie den App.Config geändert haben, führen Sie die Anwendung bitte erneut aus, um sicherzustellen, dass das Programm keine weitere Ausnahme auslöst.
Für weitere Informationen und Diskussionen zu diesem Thema können Sie die GitHub-Seite besuchen, die die Ausnahme und die aktuelle Problemumgehung hier im Detail beschreibt.

