Alternativas comunes a System.Drawing.Common (.NET 7 y versiones que no son Windows)
A partir de .NET 6, Microsoft ha dejado de soportar System.Drawing.Common en Linux y macOS. Esta biblioteca ahora solo funcionará en Windows. Para más detalles, consulte la documentación oficial.
Soluciones para evitar el error "System.Drawing.Common no es compatible con esta plataforma"
.NET 6
En sistemas operativos que no sean Windows, se lanza un TypeInitializationException con un PlatformNotSupportedException como excepción interna. El analizador de plataforma emite advertencias de tiempo de compilación para plataformas no-Windows. La siguiente excepción de tiempo de ejecución se lanza a menos que configure una opción de configuración:
System.TypeInitializationException : El inicializador de tipo para 'Gdip' lanzó una excepción.
---- System.PlatformNotSupportedException : System.Drawing.Common no es compatible con plataformas no-Windows.
Resolución temporal en .NET 6:
Habilite la compatibilidad con plataformas que no sean Windows configurando el parámetro de configuración de tiempo de ejecución System.Drawing.EnableUnixSupport en true en el archivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}
Además, agregue la siguiente línea al inicio de su código para habilitar la configuración programáticamente:
// Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
// Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
' Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
.NET 7 y superior
A partir de .NET 7, Microsoft eliminó por completo la compatibilidad con System.Drawing.Common en Linux y macOS, incluida la solución alternativa disponible anteriormente.
Iron Software ha lanzado un reemplazo de código abierto para System.Drawing.Common, llamado IronSoftware.Drawing.
Para saber más, visite la documentación oficial.

