Alternativas a System.Drawing.Common (.NET 7 y no Windows)

17 de marzo, 2022
Actualizado 20 de octubre, 2024
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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.