Sistem Belleği İstisnası
Geliştiriciler .NET Framework üzerinde IronOCR'un en son sürümünü kullandığında, programı çalıştırmak bazen aşağıda gösterildiği gibi bir System.Memory Exception ile sonuçlanabilir.
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ü, aşağıdaki kod ile App.config'yi 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ık aynı derlemenin farklı sürümlerini gerektirdiğinde ortaya çıkabilecek sürüm çatışmalarını önlemeyi amaçlar. Bu yapılandırmayı kullanarak, uygulama çalışma zamanında uygun sürümü yükleyecektir. Yeniden yönlendirme, tüm bileşenleri v4.0.1.2 sürümünü kullanmaya zorlayarak, bahsi geçen istisna olasılığını ortadan kaldırır. Lütfen App.Config'yi değiştirdikten sonra, programın başka bir istisna oluşturmadığını doğrulamak 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.

