System.Drawing.Common Alternatives (.NET 7 & Non-Windows)

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

Umgehungslösungen, um 'System.Drawing.Common wird auf dieser Plattform nicht unterstützt' zu vermeiden

  1. Die Implementierung von System.Drawing.Common ist auf Linux- und macOS-Plattformen für .NET 6 und .NET 7 nicht möglich.
  2. Sie erhalten eine Fehlermeldung, die besagt, dass 'System.Drawing.Common auf dieser Plattform nicht unterstützt wird.'
  3. Setzen Sie die Laufzeitkonfiguration System.Drawing.EnableUnixSupport auf wahr für .NET 6.
  4. Beachten Sie, dass der Support in .NET 7 ebenfalls nicht mehr verfügbar ist.
  5. Verwenden Sie die Open-Source-Bibliothek IronSoftware.Drawing, um System.Drawing.Common für .NET 7 zu ersetzen.

In .NET 6 und .NET 7 hat Microsoft die Unterstützung von System.Drawing.Common auf Linux und macOS eingestellt. Die Bibliothek funktioniert nur auf Windows-Plattformen gemäß der offiziellen Dokumentation.

  • Auf nicht-Windows-Betriebssystemen wird eine TypeInitializationException mit PlatformNotSupportedException als innere Ausnahme ausgelöst.
  • In .NET 6 gibt der Plattform-Analyzer zur Kompilierzeit Warnungen aus, wenn Code, der System.Drawing.Common referenziert, für nicht-Windows-Betriebssysteme kompiliert wird. Zusätzlich wird die folgende Laufzeitausnahme ausgelöst, es sei denn, eine Konfigurationsoption ist gesetzt:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception. --- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

Vorübergehende Umgehung in .NET 6:

Aktivieren Sie die Unterstützung für Nicht-Windows-Plattformen, indem Sie den Konfigurationsschalter System.Drawing.EnableUnixSupport zur Laufzeit in der runtimeconfig.json-Datei auf true setzen:

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

Fügen Sie den folgenden Code am Anfang Ihres Codes hinzu, um die Unix-Unterstützung programmgesteuert zu aktivieren:

// 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

Mit der Veröffentlichung von .NET 7 hat Microsoft die Umgehungslösung entfernt und die Unterstützung für System.Drawing.Common auf Linux und macOS vollständig entfernt.

Iron Software hat einen Open-Source-Ersatz für System.Drawing.Common namens IronSoftware.Drawing veröffentlicht. You can find it on NuGet and GitHub.

Um mehr zu erfahren, können Sie die Dokumentationsseite besuchen: IronSoftware Drawing Dokumentation

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 5,044,537 | Version: 2025.11 gerade veröffentlicht