System.Drawing.Common Alternatives (.NET 7 & Non-Windows)
Solutions pour éviter que system.drawing.common ne soit pas pris en charge sur cette plate-forme
L'implémentation de System.drawing.common n'est pas possible sur les plateformes Linux et MacOs pour .NET6 et .NET7
Obtenir le message d'exception system.drawing.common n'est pas pris en charge sur cette plate-forme
Définir la configuration d'exécution System.Drawing.EnableUnixSupport sur true pour .NET6
Le support n'est plus disponible dans .NET7 également
Utiliser la bibliothèque open-source IronSoftware.Drawing pour remplacer System.Drawing.Common pour NET7
Dans .NET6 et .NET7, Microsoft a cessé de prendre en charge Linux et MacOs, et System.Drawing.Common ne fonctionnera que sous Windows.
- Sur les systèmes d'exploitation non Windows, une exception TypeInitializationException est levée avec PlatformNotSupportedException comme exception interne.
- Dans .NET 6, l'analyseur de plate-forme émet des avertissements au moment de la compilation lorsque le code de référencement est compilé pour des systèmes d'exploitation autres que Windows. En outre, 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.
Temporary work-around in .NET6:
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 le code suivant au début de votre code :
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
nET7
Avec la sortie de .NET7, Microsoft a supprimé la solution de contournement en supprimant complètement la prise en charge de System.Drawing.Common sous Linux et MacOs.
Iron Software a publié un logiciel libre remplaçant System.Drawing.Common, appelé IronSoftware.Drawing. [NuGet] [GitHub]
Pour en savoir plus : https://ironsoftware.com/open-source/csharp/drawing/docs/