Alternativas comunes a System.Drawing.Common (.NET 7 y versiones que no son Windows)

This article was translated from English: Does it need improvement?
Translated
View the article in English

Soluciones alternativas para evitar el error "System.Drawing.Common no es compatible con esta plataforma"

  1. La implementación de System.Drawing.Common no es posible en las plataformas Linux y macOS para .NET 6 y .NET 7.
  2. Recibirá un mensaje de excepción indicando "System.Drawing.Common no es compatible con esta plataforma".
  3. Establezca la configuración de tiempo de ejecución System.Drawing.EnableUnixSupport en true para .NET 6.
  4. Tenga en cuenta que el soporte ya no está disponible en .NET 7 también.
  5. 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 TypeInitializationException con PlatformNotSupportedException como 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);
' Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
$vbLabelText   $csharpLabel

.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

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 5,167,857 | Version: 2025.11 recién lanzado