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);.NET 7 及更高版本
從 .NET 7 開始,微軟已完全移除對 Linux 和 macOS 上System.Drawing.Common的支持,包括先前可用的變通方法。
Iron Software 發布了 System.Drawing.Common 的開源替代品,名為IronSoftware.Drawing 。
欲了解更多信息,請訪問官方文件。






