IronBarcode - Alternatywa dla System.Drawing.Common

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

Iron Software posiada źródło otwarte jako zastępstwo dla System.Drawing.Common o nazwie IronDrawing. Aby dowiedzieć się więcej o IronDrawing, kliknij tutaj.

Począwszy od .NET 6, System.Drawing.Common będzie działać tylko w systemie Windows.

  • W systemach operacyjnych innych niż Windows, chyba że ustawisz przełącznik konfiguracji czasu wykonywania, zostanie zgłoszony wyjątek TypeInitializationException z PlatformNotSupportedException jako wewnętrznym wyjątkiem.
  • W .NET 6, analizator platformy emituje ostrzeżenia w czasie kompilacji, gdy kod odniesienia jest kompilowany dla systemów operacyjnych innych niż Windows. Dodatkowo pojawi się następujący wyjątek runtime, chyba że ustawisz opcje konfiguracji:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.
          ---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms. See https://aka.ms/systemdrawingnonwindows for more information.
Stack Trace:
            at System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String filename, IntPtr& bitmap)
          /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): at System.Drawing.Bitmap..ctor(String filename, Boolean useIcm)
          /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): at System.Drawing.Bitmap..ctor(String filename)
          /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): at System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+MoveNext()
          /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
----- Inner Stack Trace -----
          /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): at System.Drawing.LibraryResolver.EnsureRegistered()
          /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): at System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
          /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): at System.Drawing.SafeNativeMethods.Gdip..cctor()

Tymczasowe obejście problemu: Włącz obsługę platform innych niż Windows poprzez ustawienie przełącznika konfiguracji czasu wykonania System.Drawing.EnableUnixSupport na true w pliku runtimeconfig.json:

{
  "runtimeOptions": {
    "configProperties": {
      "System.Drawing.EnableUnixSupport": true
    }
  }
}

To rozwiązanie jest aktualnym rozwiązaniem od Microsoft w zakresie wsparcia System.Drawing w .NET 6: https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only

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 2,145,441 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package BarCode
uruchom przykład zobacz, jak twoje ciągi zamieniają się w kody kreskowe.