System.Drawing.Common Alternatives (.NET 7 & Non-Windows)

This article was translated from English: Does it need improvement?
Translated
View the article in English

Solutions pour éviter que system.drawing.common ne soit pas pris en charge sur cette plate-forme

  1. L'implémentation de System.drawing.common n'est pas possible sur les plateformes Linux et MacOs pour .NET6 et .NET7

  2. Obtenir le message d'exception system.drawing.common n'est pas pris en charge sur cette plate-forme

  3. Définir la configuration d'exécution System.Drawing.EnableUnixSupport sur true pour .NET6

  4. Le support n'est plus disponible dans .NET7 également

  5. 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/