System.Drawing.Common Alternatives (.NET 7 & Non-Windows)
À 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
.
- Package NuGet
Pour en savoir plus, visitez la documentation officielle