System.Drawing.Common 替代方案(.NET 7 和非 Windows)
.NET 6 开始,微软已停止支持 Linux 和 macOS 上的 System.Drawing.Common。 这个库现在只能在 Windows 上工作。 有关更多详情,请参阅官方文档。
避免"System.Drawing.Common 不支持此平台"错误的解决方法
.NET 6
在非Windows操作系统中,会抛出PlatformNotSupportedException作为内部异常。 平台分析器会为非 Windows 平台发出编译时警告。 除非您设置一个配置选项,否则会抛出以下运行时异常:
System.TypeInitializationException:'Gdip' 类型初始值设定项抛出了一个异常。
---- System.PlatformNotSupportedException:System.Drawing.Common 不支持非 Windows 平台。
.NET 6 的临时解决方法:
通过在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);
' 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。
要了解更多,请访问官方文档。

