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

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 información, consulte el documentación oficial.

Las soluciones para evitar system.drawing.common no son compatibles con esta plataforma

.NET6

En sistemas operativos no Windows, se lanza una TypeInitializationException con PlatformNotSupportedException como 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:

Active la compatibilidad con plataformas distintas de Windows estableciendo el parámetro de configuración en tiempo de ejecución System.Drawing.EnableUnixSupport en 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 la compatibilidad con System.Drawing.Common en Linux y macOS, incluida la solución alternativa disponible anteriormente.

Iron Software ha lanzado un sustituto de código abierto para System.Drawing.Common, llamado IronSoftware.Drawing.