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

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

À partir de .NET6, Microsoft a cessé de prendre en charge System.Drawing.Common sous Linux et macOS. Cette bibliothèque ne fonctionne désormais que sous Windows. Pour plus de détails, voir ledocumentation officielle.

Solutions pour éviter que system.drawing.common ne soit pas pris en charge sur cette plate-forme

.NET6

Sur les systèmes d'exploitation non Windows, une TypeInitializationException est lancée avec PlatformNotSupportedException comme exception interne. L'analyseur de plate-forme émet des avertissements au moment de la compilation pour les plates-formes non Windows. L'exception d'exécution suivante est levée à moins que vous ne définissiez une option de configuration :

System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.

    ---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

Solution temporaire dans .NET6 :

Activez le support des plates-formes non Windows en définissant le commutateur de configuration d'exécution System.Drawing.EnableUnixSupport à true dans le fichier runtimeconfig.json :

{

    "runtimeOptions": {

        "configProperties": {

            "System.Drawing.EnableUnixSupport": true

        }

    }

}

Ajoutez le code suivant au début de votre code :

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

.NET7 et supérieur

À partir de .NET7, Microsoft a complètement supprimé le support pour System.Drawing.Common sur Linux et macOS, y compris la solution de contournement précédemment disponible.

Iron Software a publié un remplacement open-source pour System.Drawing.Common, appelé IronSoftware.Drawing.