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

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

从 .NET6 开始,微软已停止支持 Linux 和 macOS 上的 System.Drawing.Common。该库现在只能在 Windows 上运行。有关详细信息,请参阅 官方文件.

该平台不支持避免 system.drawing.common 的变通方法

.NET6

在非 Windows 操作系统上,会抛出以 PlatformNotSupportedException 为内部异常的 TypeInitializationException 异常。对于非 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 发布了 System.Drawing.Common 的开源替代程序,名为 IronSoftware.Drawing

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