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 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 17,803,474 | 版本: 2026.3 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。