已引用System.Drawing仍无法使用Bitmap,报CS0246错误求助
解决CS0246:找不到“Bitmap”类型或命名空间的问题
嘿,我太懂这种明明做了该做的步骤却还是报错的崩溃感了!你已经加了using System.Drawing也引用了程序集,却还是碰到CS0246找不到Bitmap的错误,给你几个我亲测有效的排查方向:
- 先看项目的目标框架版本:如果是.NET Core、.NET 5及以上的项目,
System.Drawing已经不是框架自带的组件了——你得去NuGet包管理器里搜索并安装System.Drawing.Common这个包才行,安装完再重新编译试试,大概率能解决。 - 确认程序集引用真的生效了:有时候看起来引用了,实际可能是版本不对或者没加载成功。右键你的项目→「管理NuGet程序包」,看看
System.Drawing.Common是不是在「已安装」列表里;如果是.NET Framework项目,要确认引用的是系统自带的System.Drawing.dll(路径一般是C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\vX.X\System.Drawing.dll),别不小心引用了其他同名的第三方dll。 - 核对using语句的拼写:别笑,有时候手滑真的会写错!比如把
System.Drawing写成System.Draw,或者大小写搞错了,仔细看一眼代码里的using指令,确保没拼写错误。 - 清理缓存再重建项目:VS的缓存偶尔会抽风,右键解决方案→「清理解决方案」,然后右键项目→「生成」,甚至重启一下VS,很多时候缓存导致的奇怪报错这样操作后就消失了。
- 如果是跨平台项目的特殊情况:要是你在Linux或macOS上跑.NET Core/.NET 5+的项目,
System.Drawing.Common从.NET 6开始默认不支持这些平台了。如果非要用,得在你的项目文件(.csproj)里加一段配置:
长远来看,更推荐用跨平台的图像处理库比如ImageSharp,但如果只是要解决当前的报错,先试试上面的配置。<PropertyGroup> <!-- 强制指定Windows运行时,适合只在Windows上部署的项目 --> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 或者开启Unix支持,不过这个配置在.NET 6+里是过时的,仅作临时方案 --> <EnableUnixSupport>true</EnableUnixSupport> </PropertyGroup>
内容的提问来源于stack exchange,提问作者Bob Bonanno
相关产品推荐
相关产品推荐

