System Memory Exception

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

開発者が.NET Framework上で最新版のIronOCRを使用する場合、プログラムを実行すると以下のようにSystem.Memory Exceptionが発生する場合があります。

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)

この問題はIronOCR自体とは直接関係ありませんが、System.Memoryの依存関係との互換性に問題があることが知られています。 System.Memoryの新しいバージョン(例えば、4.4.5以降)がインストールされている場合でも、他の依存関係の一部としてインストールされている場合でも、直接参照されている場合でも、ランタイムはバージョン関連のエラーを投げることがあります。

これは、一部の依存関係が厳密なバージョンバインディングを強制するためで、理論的に互換性のある新しいバージョンが存在するかどうかに関係なく、System.Memoryの特定のバージョンを期待することを意味します。 その結果、以下に説明する回避策を適用しない限り、エラーが発生します。

ソリューション

この例外の解決策は、App.configを以下のコードで修正することです。

 <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

説明

修正された App.Config は、複数の依存関係が同じアセンブリの異なるバージョンを必要とする場合に発生する可能性のあるバージョンの競合を防ぐことを目的としています。 この設定を使うことで、アプリケーションは実行時に適切なバージョンを読み込みます。リダイレクトによって、すべてのコンポーネントがバージョンv4.0.1.2を使うようになり、前述の例外の可能性がなくなります。 App.Configを変更した後、プログラムが別の例外を発生しないことを確認するためにアプリケーションを再実行してください。

このトピックに関する詳細な情報や議論については、例外と現在の回避策を詳しく説明したこちらの GitHub ページをご覧ください。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はいいですか?
Nuget ダウンロード 5,044,537 | バージョン: 2025.11 ただ今リリースされました