System.Drawing.Common 的替代方案(.NET 7 及非 Windows 系統)

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

從 .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);
$vbLabelText   $csharpLabel

.NET 7 及更高版本

從 .NET 7 開始,微軟已完全移除對 Linux 和 macOS 上System.Drawing.Common的支持,包括先前可用的變通方法。

Iron Software 發布了 System.Drawing.Common 的開源替代品,名為IronSoftware.Drawing

欲了解更多信息,請訪問官方文件

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。

準備好開始了嗎?
Nuget 下載 17,012,929 | 版本: 2025.12 剛剛發布