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

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. Die Implementierung von System.drawing.common ist auf Linux und MacOs Plattform für .NET6 und .NET7 nicht möglich

  2. Ausnahmemeldung von system.drawing.common wird auf dieser Plattform nicht unterstützt abrufen

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

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

  5. Verwendung der Open-Source-Bibliothek IronSoftware.Drawing als Ersatz für System.Drawing.Common für NET7

    In .NET6 und .NET7 hat Microsoft die Unterstützung von Linux und MacOs eingestellt, undSystem.Drawing.Common funktioniert nur unter 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 Abhilfe 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]

Weitere Informationen:https://ironsoftware.com/open-source/csharp/drawing/docs/