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

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

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

  1. L'implémentation de System.Drawing.Common n'est pas possible sur les plateformes Linux et macOS pour .NET 6 et .NET 7.
  2. Vous recevrez un message d'exception indiquant que " System.Drawing.Common n'est pas pris en charge sur cette plateforme. "
  3. Définissez la configuration d'exécution System.Drawing.EnableUnixSupport sur true pour .NET 6.
  4. Notez que la prise en charge n'est plus disponible dans .NET 7 non plus.
  5. Utilisez la bibliothèque open-source Iron Software.Drawing pour remplacer System.Drawing.Common pour .NET 7.

Dans .NET 6 et .NET 7, Microsoft a cessé de prendre en charge System.Drawing.Common sous Linux et macOS. Conformément à la documentation officielle, la bibliothèque ne fonctionnera que sur les plateformes Windows.

  • Sur les systèmes d'exploitation autres que Windows, une TypeInitializationException est levée avec PlatformNotSupportedException comme exception interne.
  • Dans .NET 6, l'analyseur de plateforme émet des avertissements lors de la compilation lorsque du code faisant référence à System.Drawing.Common est compilé pour des systèmes d'exploitation autres que Windows. De plus, l'exception d'exécution suivante est levée sauf si une option de configuration est définie :
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception. --- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

Solution de contournement 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 le code suivant au début de votre code pour activer par programmation la prise en charge d'Unix :

// Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
// Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
' Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
$vbLabelText   $csharpLabel

.NET 7

Avec la sortie de .NET 7, Microsoft a supprimé la solution de contournement, supprimant complètement la prise en charge de System.Drawing.Common sur Linux et macOS.

Iron Software a publié un remplacement open-source pour System.Drawing.Common , appelé IronSoftware.Drawing . Vous pouvez le trouver sur NuGet et GitHub .

Pour en savoir plus, vous pouvez consulter la page de documentation : Documentation de dessin Iron Software

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 5,167,857 | Version: 2025.11 vient de sortir