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
Il n'est pas possible d'implémenter System.drawing.common sur les plateformes Linux et MacOs pour .NET6 et .NET7
Obtenez le message d'exception de system.drawing.common n'est pas pris en charge sur cette plateforme
Définissez la configuration d'exécution System.Drawing.EnableUnixSupport sur true pour .NET6
Le support n'est plus disponible dans .NET7 également
Utilisez 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 sur 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.
Solution temporaire dans .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/