System.Drawing.Common-Alternativen (.NET 7 & Nicht-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 for .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 true for .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 for .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-Ausnahme mit PlatformNotSupportedException als innerer 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 Laufzeitkonfigurationsschalter System.Drawing.EnableUnixSupport in der Datei runtimeconfig.json 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);
$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. Sie können es auf NuGet und GitHub finden.

Um mehr zu erfahren, können Sie die Dokumentationsseite besuchen: Iron Software 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,556,263 | Version: 2026.3 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronOcr
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Bild zu durchsuchbarem Text wird.