背景
在windows平台下,创建net6.0的C#程序,引用NuGet包:System.Drawing.Common,运行代码Image image = new Bitmap(2000, 1024)
会报错:“System.Drawing.Common is not supported on this platform.”。如下截图:
网上或者官方搜索到的答案:
- 网上搜索到:引入本地System.Drawing.Common的dll。虽然问题解决了,但根本原因没有找到。再说了,写C#程序非必要情况,应该都会直接在NuGet上下载,不会去找一个路径,再去添加引用。
- 官方解释的是:在非windows平台下使用System.Drawing.Common的解决方案。但我这里是windows平台。
这个问题,目前在网上搜了一圈,没有对应的解决方案,deepseek也不行。相信大家遇到这个问题,在网上应该也没有查到相应的解决方案吧。
在此,我把解决这个问题的解决方案分享出来,供大家参考:
- 方案一(不建议使用):降平台版本,net6.0降到framework 4.8版本。
但这种方案需要重新建一个framework 4.8版本的工程,而且framework平台下CommunityToolkit.Mvvm的Fody功能用不了,太难受了。 - 方案二:NuGet下载System.Drawing.Common的版本不能高于9.0.0。这也是各种踩坑各种验证找到的。
我对比了下9.x.x版本与8.x.x版本的区别,发现8.x.x版本多了个传递包:Microsoft.Win32.SystemEvents。