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, veuillez consulter la documentation 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 levé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 la prise en charge des plateformes non-Windows en définissant le commutateur de configuration d'exécution System.Drawing.EnableUnixSupport sur 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é la prise en charge de 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.