Alternatywy dla System.Drawing.Common (.NET 7 i systemy inne niż Windows)
Począwszy od .NET 6, Microsoft przestał wspierać System.Drawing.Common na Linux i macOS. Ta biblioteka będzie teraz działać tylko na Windows. Aby uzyskać więcej szczegółów, odnieś się do oficjalnej dokumentacji.
Ominięcia błędu 'System.Drawing.Common is not supported on this platform'
.NET 6
Na systemach operacyjnych innych niż Windows, zgłaszany jest TypeInitializationException jako wewnętrzny wyjątek PlatformNotSupportedException. Analizator platformy generuje ostrzeżenia w czasie kompilacji dla platform innych niż Windows. Zgłaszany jest następujący wyjątek wykonawczy, chyba że ustawiona jest opcja konfiguracji:
System.TypeInitializationException: Inicjalizator typu 'Gdip' zgłosił wyjątek.
---- System.PlatformNotSupportedException: System.Drawing.Common nie jest wspierany na platformach innych niż Windows.
Tymczasowe obejście w .NET 6:
Włącz wsparcie dla platform innych niż Windows, ustawiając przełącznik konfiguracji wykonawczej System.Drawing.EnableUnixSupport na true w pliku runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}
Dodatkowo, dodaj następującą linię na początku swojego kodu, aby programowo włączyć konfigurację:
// 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 i wyżej
Począwszy od .NET 7, Microsoft całkowicie usunął wsparcie dla System.Drawing.Common na Linux i macOS, w tym wcześniej dostępne obejście.
Iron Software wydało zamiennik open-source dla System.Drawing.Common, nazwany IronSoftware.Drawing.
Aby dowiedzieć się więcej, odwiedź oficjalną dokumentację.

