You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11下System.Drawing.Common报PlatformNotSupportedException求助

解决Windows 11下System.Drawing.Common平台不支持的问题

方案一:配置项目启用Windows专属框架(适用于.NET 6+)

在项目的.csproj文件中修改目标框架为Windows专属版本,同时启用Windows Forms支持:

<PropertyGroup>
  <TargetFramework>net6.0-windows</TargetFramework>
  <!-- 若使用.NET 7/8,对应改为net7.0-windows/net8.0-windows -->
  <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

如果不需要Windows Forms,也可以指定运行时标识来限定Windows平台:

<PropertyGroup>
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  <!-- 可根据系统架构替换为win-x86或win-arm64 -->
</PropertyGroup>

方案二:删除无效的开关配置

你添加的AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);是针对Linux、macOS等非Windows平台的兼容开关,在Windows系统下完全无效,直接删除该行代码即可。

方案三:替换为跨平台图像库(长期推荐)

如果有跨平台需求,或不想受System.Drawing的平台限制,可改用以下成熟的替代库:

  • ImageSharp:纯.NET编写的跨平台图像库,API简洁,支持所有主流图像格式
  • SkiaSharp:Google Skia图形引擎的.NET绑定,性能优异,支持复杂图形操作

以ImageSharp加载并编辑PNG的示例代码:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;

// 加载PNG文件
using var image = Image.Load<Rgba32>(file);
// 执行编辑操作(示例:调整图片大小)
image.Mutate(x => x.Resize(200, 200));
// 保存修改后的文件
image.Save("output.png");

报错原因说明

从.NET 6开始,微软将System.Drawing.Common标记为Windows专属库。即使在Windows系统上,若项目目标框架是通用的net6.0(而非Windows专属的net6.0-windows),运行时会默认禁用该库的支持,从而抛出PlatformNotSupportedException。

内容的提问来源于stack exchange,提问作者PS Jahn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:15:31