Alternativas a System.Drawing.Common (.NET 7 y no Windows)
A partir de .NET6, Microsoft ha dejado de dar soporte a System.Drawing.Common en Linux y macOS. Esta biblioteca ahora sólo funcionará en Windows. Para más detalles, consulta la documentación oficial.
Las soluciones para evitar system.drawing.common no son compatibles con esta plataforma
#.NET6
En los sistemas operativos que no son Windows, se lanza una TypeInitializationException
con PlatformNotSupportedException
como la excepción interna. El analizador de plataformas emite advertencias en tiempo de compilación para las plataformas que no son Windows. 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 .NET6:
Habilite el soporte para plataformas que no son Windows configurando 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
}
}
}
Añade el siguiente código al principio de tu código:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
.NET7 y superior
A partir de .NET7, Microsoft ha eliminado por completo el soporte para System.Drawing.Common
en Linux y macOS, incluyendo la solución alternativa que estaba disponible anteriormente.
Iron Software ha lanzado un reemplazo de código abierto para System.Drawing.Common, llamado IronSoftware.Drawing
.
- Paquete NuGet
Para obtener más información, visite la documentación oficial