Alternativas para System.Drawing.Common (.NET 7 e sistemas não Windows)

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

Soluções alternativas para evitar "System.Drawing.Common não é suportado nesta plataforma"

  1. A implementação de System.Drawing.Common não é possível em plataformas Linux e macOS for .NET 6 e .NET 7.
  2. Você receberá uma mensagem de exceção indicando "System.Drawing.Common não é suportado nesta plataforma."
  3. Defina a configuração de runtime System.Drawing.EnableUnixSupport para true for .NET 6.
  4. Note que o suporte não está mais disponível no .NET 7.
  5. Use a biblioteca de código aberto IronSoftware.Drawing para substituir System.Drawing.Common no .NET 7.

No .NET 6 e .NET 7, a Microsoft parou de suportar System.Drawing.Common em Linux e macOS. A biblioteca só funcionará em plataformas Windows conforme a documentação oficial.

  • Em sistemas operacionais não-Windows, é lançada uma TypeInitializationException com PlatformNotSupportedException como a exceção interna.
  • No .NET 6, o analisador de plataforma emite avisos de tempo de compilação quando o código que faz referência a System.Drawing.Common é compilado para sistemas operacionais não Windows. Além disso, a seguinte exceção de runtime é lançada, a menos que uma opção de configuração seja definida:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception. --- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

Solução temporária no .NET 6:

Habilite o suporte para plataformas não-Windows definindo o interruptor de configuração de runtime System.Drawing.EnableUnixSupport para true no arquivo runtimeconfig.json:

{
  "runtimeOptions": {
    "configProperties": {
      "System.Drawing.EnableUnixSupport": true
    }
  }
}

Adicione o seguinte código ao início do seu código para habilitar programaticamente o suporte a 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);
$vbLabelText   $csharpLabel

.NET 7

Com o lançamento do .NET 7, a Microsoft removeu a solução alternativa, eliminando completamente o suporte para System.Drawing.Common em Linux e macOS.

A Iron Software lançou uma substituição de código aberto para System.Drawing.Common, chamada IronSoftware.Drawing. Você pode encontrá-la no NuGet e no GitHub.

Para saber mais, você pode visitar a página de documentação: Documentação do IronSoftware Drawing

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.