System.Drawing.Common 的替代方案(.NET 7 及非 Windows 系統)
從.NET 6 開始,微軟已停止在 Linux 和 macOS 上支援 System.Drawing.Common。 該庫現在只能在 Windows 系統上運行。 更多詳情請參閱官方文件。
避免"System.Drawing.Common 在此平台上不受支援"錯誤的解決方法
.NET 6
在非 Windows 作業系統上,會拋出 TypeInitializationException 異常,其中 PlatformNotSupportedException 為內部異常。 平台分析器會對非 Windows 平台發出編譯時警告。 除非您設定了配置選項,否則將拋出以下運行時異常:
System.TypeInitializationException:類型"Gdip"的類型初始值設定項引發了例外狀況。
---- System.PlatformNotSupportedException:System.Drawing.Common 在非 Windows 平台上不支援。
.NET 6 中的暫存解決方法:
透過在 runtimeconfig.json 檔案中將 System.Drawing.EnableUnixSupport 執行時間設定開關設定為 true,啟用對非 Windows 平台的支援:
{
"runtimeOptions": {
"configProperties": {
"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);
' Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
.NET 7 及更高版本
從.NET 7 開始,微軟已完全移除對 Linux 和 macOS 上 System.Drawing.Common 的支持,包括先前可用的解決方法。
Iron Software發布了 System.Drawing.Common 的開源替代品,名為 IronSoftware.Drawing。
欲了解更多信息,請訪問官方文件。

