Alternatywy dla System.Drawing.Common (.NET 7 i systemy inne niż Windows)

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

Rozwiązania umożliwiające uniknięcie błędu 'System.Drawing.Common nie jest obsługiwane na tej platformie'

  1. Implementacja System.Drawing.Common nie jest możliwa na platformach Linux i macOS w .NET 6 i .NET 7.
  2. Pojawi się komunikat wyjątku wskazujący, że 'System.Drawing.Common nie jest obsługiwane na tej platformie'.
  3. Ustaw konfigurację czasu wykonania System.Drawing.EnableUnixSupport na true dla .NET 6.
  4. Należy zauważyć, że wsparcie nie jest już dostępne także w .NET 7.
  5. Użyj biblioteki open-source IronSoftware.Drawing jako zamiennika dla System.Drawing.Common w .NET 7.

W .NET 6 i .NET 7, Microsoft zaprzestał wsparcia dla System.Drawing.Common na Linux i macOS. Biblioteka będzie działała tylko na platformach Windows zgodnie z oficjalną dokumentacją.

  • Na systemach operacyjnych innych niż Windows zostanie rzucony TypeInitializationException z PlatformNotSupportedException jako wewnętrzny wyjątek.
  • W .NET 6, analizator platformy emituje ostrzeżenia w czasie kompilacji, gdy kod odwołujący się do System.Drawing.Common jest kompilowany dla systemów operacyjnych innych niż Windows. Dodatkowo zostanie rzucony następujący wyjątek w czasie wykonania, chyba że zostanie ustawiona opcja konfiguracyjna:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception. --- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

Tymczasowe obejście w .NET 6:

Włącz wsparcie dla platform innych niż Windows, ustawiając przełącznik konfiguracji czasu wykonania System.Drawing.EnableUnixSupport na true w pliku runtimeconfig.json:

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

Dodaj następujący kod na początku swojego kodu, aby programowo włączyć wsparcie dla Unix:

// Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
// Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
' Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
$vbLabelText   $csharpLabel

.NET 7

Z wydaniem .NET 7, Microsoft usunął obejście, całkowicie usuwając wsparcie dla System.Drawing.Common na Linux i macOS.

Iron Software wydało open-source'owy zamiennik dla System.Drawing.Common, o nazwie IronSoftware.Drawing. Możesz go znaleźć na NuGet i GitHub.

Aby dowiedzieć się więcej, odwiedź stronę dokumentacji: IronSoftware Drawing Documentation

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.