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

Curtis Chau
Curtis Chau
Updated: 9 maja 2026

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 wyrzucany jest 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.
Text

Tymczasowe obejście w .NET 6:

Włącz obsługę platform innych niż Windows, ustawiając przełącznik konfiguracyjny System.Drawing.EnableUnixSupport na true w pliku runtimeconfig.json:

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

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);

.NET 7

Wraz 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, możesz odwiedzić stronę dokumentacji: Iron Software Drawing Documentation

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ęczników.

Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 6,357,159Wersja:2026.11właśnie wydany