System.Drawing.Common-Alternativen (.NET 7 & Nicht-Windows)

19. Januar 2022
Aktualisiert 20. Oktober 2024
Teilen Sie:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Workarounds zur Umgehung von system.drawing.common wird auf dieser Plattform nicht unterstützt

  1. Implementierung von System.drawing.common ist nicht möglich auf Linux- und MacOS-Plattformen für .NET6 und .NET7.

  2. Erhalten Sie die Ausnahmemeldung von System.Drawing.Common wird auf dieser Plattform nicht unterstützt

  3. Setzen Sie die Laufzeitkonfiguration von System.Drawing.EnableUnixSupport auf true für .NET6

  4. Unterstützung auch in .NET7 nicht mehr verfügbar

  5. Verwenden Sie die Open-Source-Bibliothek IronSoftware.Drawing, um System.Drawing.Common für NET7 zu ersetzen.

    In .NET6 und .NET7 hat Microsoft die Unterstützung für Linux und MacOS eingestellt, und System.Drawing.Common funktioniert nur auf Windows.

    • Auf Nicht-Windows-Betriebssystemen wird eine TypeInitializationException-Ausnahme mit PlatformNotSupportedException als innere Ausnahme ausgelöst.
    • In .NET 6 gibt der Plattformanalysator Kompilierzeitwarnungen aus, wenn referenzierender Code für Nicht-Windows-Betriebssysteme kompiliert wird. Außerdem wird die folgende Laufzeitausnahme ausgelöst, es sei denn, Sie setzen eine Konfigurationsoption:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

Vorübergehende Lösung in .NET6:

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

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

Fügen Sie den folgenden Code an den Anfang Ihres Codes:

System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);

.NET7

Mit der Veröffentlichung von .NET7 hat Microsoft die Umgehungslösung abgeschafft und die Unterstützung für System.Drawing.Common in Linux und MacOs vollständig entfernt.

Iron Software hat einen Open-Source-Ersatz für System.Drawing.Common veröffentlicht, IronSoftware.Drawing. [NuGet] [GitHub]

Um mehr zu erfahren: https://ironsoftware.com/open-source/csharp/drawing/docs/