系统内存异常
当开发人员在 .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>解释
修改后的App.Config旨在防止多个依赖项需要同一程序集的不同版本时可能出现的版本冲突。 通过此配置,应用程序将在运行时加载相应的版本。重定向强制所有组件使用v4.0.1.2版本,从而消除上述异常的可能性。 修改App.Config后,请重新运行应用程序,以确保程序不会引发其他异常。
有关此主题的更多信息和讨论,您可以访问 GitHub 页面,详细说明异常和当前的解决方法 这里。






