Alternatives de System.Drawing.Common pour le logiciel OCR IronOCR (.NET 7 & Non-Windows)
Solutions de contournement pour éviter l'erreur " System.Drawing.Common n'est pas pris en charge sur cette plateforme "
- L'implémentation de System.Drawing.Common n'est pas possible sur les plateformes Linux et macOS for .NET 6 et .NET 7.
- Vous recevrez un message d'exception indiquant que " System.Drawing.Common n'est pas pris en charge sur cette plateforme. "
- Définissez la configuration d'exécution System.Drawing.EnableUnixSupport sur true for .NET 6.
- Notez que la prise en charge n'est plus disponible dans .NET 7 non plus.
- Utilisez la bibliothèque open-source IronSoftware.Drawing pour remplacer System.Drawing.Common for .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 non Windows, une exception
TypeInitializationExceptionest levée avecPlatformNotSupportedExceptioncomme 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 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 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)
.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

