Alternativas comunes a System.Drawing.Common (.NET 7 y versiones que no son Windows)
Soluciones alternativas para evitar el error "System.Drawing.Common no es compatible con esta plataforma"
- La implementación de System.Drawing.Common no es posible en las plataformas Linux y macOS para .NET 6 y .NET 7.
- Recibirá un mensaje de excepción indicando "System.Drawing.Common no es compatible con esta plataforma".
- Establezca la configuración de tiempo de ejecución System.Drawing.EnableUnixSupport en true para .NET 6.
- Tenga en cuenta que el soporte ya no está disponible en .NET 7 también.
- Use la biblioteca de código abierto Iron Software.Drawing para reemplazar System.Drawing.Common para .NET 7.
En .NET 6 y .NET 7, Microsoft ha dejado de soportar System.Drawing.Common en Linux y macOS. La biblioteca solo funcionará en plataformas Windows según la documentación oficial.
- En sistemas operativos no Windows, se lanza una
TypeInitializationExceptionconPlatformNotSupportedExceptioncomo excepción interna. - En .NET 6, el analizador de plataforma emite advertencias en tiempo de compilación cuando se compila un código que referencia System.Drawing.Common para sistemas operativos no Windows. Además, se lanza la siguiente excepción en tiempo de ejecución a menos que se establezca una opción de configuración:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception. --- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.Solución temporal en .NET 6:
Habilite el soporte para plataformas no-Windows estableciendo el interruptor de configuración de tiempo de ejecución System.Drawing.EnableUnixSupport a true en el archivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}Agregue el siguiente código al comienzo de su código para habilitar programáticamente el soporte 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);.NET 7
Con el lanzamiento de .NET 7, Microsoft ha eliminado la solución, eliminando completamente el soporte para System.Drawing.Common en Linux y macOS.
Iron Software ha lanzado un reemplazo de código abierto para System.Drawing.Common, llamado IronSoftware.Drawing. Puede encontrarlo en NuGet y GitHub.
Para obtener más información, puede visitar la página de documentación: Documentación de Iron Software Drawing






