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
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 17,803,474 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在滾動嗎?

想快速取得證據? PM > Install-Package IronPdf
運行範例看著你的HTML程式碼變成PDF檔。