Alternativas para System.Drawing.Common (.NET 7 e sistemas não Windows)
A partir do .NET 6, a Microsoft deixou de oferecer suporte ao System.Drawing.Common no Linux e no macOS. Esta biblioteca agora só funcionará no Windows. Para obter mais detalhes, consulte a documentação oficial .
Soluções alternativas para evitar o erro "System.Drawing.Common não é compatível com esta plataforma"
.NET 6
Em sistemas operacionais não Windows, um TypeInitializationException é lançado com um PlatformNotSupportedException como a exceção interna. O analisador de plataforma emite avisos em tempo de compilação para plataformas que não sejam Windows. A seguinte exceção de tempo de execução será lançada, a menos que você defina uma opção de configuração:
System.TypeInitializationException: O inicializador de tipo para 'Gdip' gerou uma exceção.
---- System.PlatformNotSupportedException: System.Drawing.Common não é compatível com plataformas que não sejam Windows.
Solução alternativa temporária no .NET 6:
Ative o suporte para plataformas não Windows configurando o switch de configuração de tempo de execução System.Drawing.EnableUnixSupport para true no arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}
Além disso, adicione a seguinte linha no início do seu código para habilitar a configuração programaticamente:
// Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
// Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
' Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
.NET 7 e superior
A partir do .NET 7, a Microsoft removeu completamente o suporte para System.Drawing.Common no Linux e macOS, incluindo a solução alternativa anteriormente disponível.
A Iron Software lançou uma substituição de código aberto para System.Drawing.Common, chamada IronSoftware.Drawing.
Para saber mais, consulte a documentação oficial .

