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 .NET 6, Microsoft a cessé de prendre en charge System.Drawing.Common sur Linux et macOS. Cette bibliothèque ne fonctionnera désormais que sous Windows. Pour plus de détails, consultez la documentation officielle.

Solutions de contournement pour éviter l'erreur "System.Drawing.Common n'est pas pris en charge sur cette plate-forme"

.NET 6

Sur les systèmes d'exploitation non Windows, une TypeInitializationException est levée avec une PlatformNotSupportedException comme exception interne. L'analyseur de plate-forme émet des avertissements de 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 : L'initialiseur de type pour 'Gdip' a levé une exception.

---- System.PlatformNotSupportedException : System.Drawing.Common n'est pas pris en charge sur les plates-formes non-Windows.

Solution temporaire dans .NET 6 :

Activez la prise en charge des plates-formes 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 également la ligne suivante au début de votre code pour activer la configuration de manière programmatique :

// Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
// Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
' Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
$vbLabelText   $csharpLabel

.NET 7 et versions ultérieures

À partir de .NET 7, 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.

Pour en savoir plus, visitez la documentation officielle.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 16,154,058 | Version : 2025.11 vient de sortir