Wyjątek pamięci systemowej

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

Gdy programiści używają najnowszej wersji IronOCR na .NET Framework, występują przypadki, gdy uruchomienie programu skutkuje System.Memory Exception, jak pokazano poniżej.

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)

Chociaż ten problem nie jest bezpośrednio związany z samym IronOCR, istnieją znane problemy z kompatybilnością z zależnościami System.Memory. Nawet gdy zainstalowana jest nowsza wersja System.Memory (np. 4.4.5 lub późniejsza) — czy to jako część innej zależności, czy jako bezpośrednie odniesienie — środowisko uruchomieniowe wciąż może rzucać błędami związanymi z wersją.

Dzieje się tak, ponieważ niektóre zależności wymuszają ścisłe wiązanie wersji, co oznacza, że oczekują konkretnej wersji System.Memory, niezależnie od tego, czy jest dostępna nowsza, teoretycznie kompatybilna wersja. W efekcie błąd utrzymuje się, dopóki nie zastosujemy obejścia opisanego poniżej.

Rozwiązanie

Rozwiązaniem tego wyjątku jest zmodyfikowanie App.config za pomocą poniższego kodu.

 <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

Wyjaśnienie

Zmodyfikowany App.Config ma na celu zapobieżenie konfliktom wersji, które mogą się pojawić, gdy wiele zależności wymaga różnych wersji tego samego zestawu. Korzystając z tej konfiguracji, aplikacja załaduje odpowiednią wersję w czasie wykonywania. Przekierowanie zmusza wszystkie komponenty do używania wersji v4.0.1.2, eliminując w ten sposób możliwość wystąpienia wyżej wspomnianego wyjątku. Po zmodyfikowaniu App.Config proszę ponownie uruchomić aplikację, aby upewnić się, że program nie wywołuje kolejnego wyjątku.

Aby uzyskać więcej informacji i dyskusji na ten temat, można odwiedzić stronę GitHub, która szczegółowo opisuje wyjątek i obecne obejście tutaj.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.