System.Drawing.Common 替代方案(.NET 7 和非 Windows)
.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);.NET 7 及更高版本
从 .NET 7 开始,Microsoft 完全移除了对 Linux 和 macOS 上的 System.Drawing.Common 的支持,包括之前可用的解决方法。
Iron Software 发布了一个用于 System.Drawing.Common 的开源替代品,名为IronSoftware.Drawing。
要了解更多,请访问官方文档。






