System.Drawing.Common 替代方案(.NET 7 和非 Windows)

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

從 .NET6 開始,Microsoft 已停止在 Linux 和 macOS 上支援 System.Drawing.Common。 這個庫現在只能在Windows上運行。 有關更多細節,請參考官方文件.

避免系統不支援 system.drawing.common 的解決方法

.NET 6

在非Windows作業系統上,會拋出一個TypeInitializationException,其內部例外是PlatformNotSupportedException。 平台分析器會針對非Windows平台發出編譯時警告。 除非您設定配置選項,否則會拋出以下運行時異常:

System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.

    ---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

在 .NET6 中的臨時解決方案:

通過在 runtimeconfig.json 檔案中將 System.Drawing.EnableUnixSupport 運行時配置開關設置為 true,來啟用對非Windows平台的支持:

{

    "runtimeOptions": {

        "configProperties": {

            "System.Drawing.EnableUnixSupport": true

        }

    }

}

將以下代碼添加到您的代碼開頭:

System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);

.NET7 以上版本

從 .NET7 開始,微軟已完全取消對 Linux 和 macOS 上的 System.Drawing.Common 的支援,包括之前可用的解決方法。

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

*NuGet 套件

*GitHub 存儲庫

要了解更多信息,请访问官方文件