Sistem Belleği İstisnası
Geliştiriciler .NET Framework üzerinde IronOCR'nin en son sürümünü kullandıklarında, aşağıda gösterildiği gibi programın çalıştırılması System.Memory Exception hatasına neden olabilir.
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)
Bu sorun doğrudan IronOCR ile ilgili olmasa da, System.Memory bağımlılıkları ile bilinen uyumluluk zorlukları vardır. Daha yeni bir System.Memory sürümü (örneğin 4.4.5 veya daha sonrası) başka bir bağımlılığın parçası olarak veya doğrudan bir referans olarak yüklendiğinde bile, çalışma zamanı, sürümle ilgili hataları yine de atabilir.
Bu, bazı bağımlılıkların sıkı sürüm bağlamasını yürüttüğünden dolayı, daha yeni, teorik olarak uyumlu sürüm olsa bile belirli bir System.Memory sürümünü bekledikleri için meydana gelir. Sonuç olarak, aşağıda açıklanan geçici çözümü uygulamadığımız sürece hata devam eder.
Çözüm
Bu istisnanın çözümü, App.config'yi aşağıdaki kodla değiştirmektir.
<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>
Açıklama
Değiştirilen App.Config, birden fazla bağımlılığın aynı derlemenin farklı sürümlerini gerektirmesi durumunda ortaya çıkabilecek sürüm çakışmalarını önlemeyi amaçlamaktadır. Bu yapılandırma kullanıldığında, uygulama çalışma zamanında uygun sürümü yükleyecektir. Yönlendirme, tüm bileşenlerin v4.0.1.2 sürümünü kullanmasını zorlar ve böylece yukarıda bahsedilen istisnanın ortaya çıkma olasılığını ortadan kaldırır. App.Config'yi değiştirdikten sonra, programın başka bir istisna oluşturmadığından emin olmak için uygulamayı yeniden çalıştırın.
Bu konuyla ilgili daha fazla bilgi ve tartışma için istisnayı ve mevcut geçici çözümü ayrıntılandıran GitHub sayfasını burada ziyaret edebilirsiniz.

