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

C#使用notifyIcon编译报Icon类型程序集未引用错误解决方法

两个编译错误的核心原因是项目未正确引用System.Drawing.Icon类型所在的程序集,属于依赖缺失问题,和Designer.cs自动生成的代码本身逻辑无关,按项目类型对应操作即可修复:

修复步骤

.NET Core / .NET 5及以上版本WinForms项目

这类项目从.NET Core 3.0开始,System.Drawing相关能力被拆分到独立NuGet包,默认不会随WinForms项目模板自动引用:

  • 右键解决方案资源管理器里的项目「依赖项」节点,选择「管理NuGet程序包」
  • 搜索System.Drawing.Common,安装和你项目当前.NET大版本一致的稳定版本即可
  • 安装完成后重新生成项目,错误会直接消失

如果习惯直接编辑项目文件,双击项目名打开csproj编辑界面,添加如下引用即可:

<ItemGroup>
  <PackageReference Include="System.Drawing.Common" Version="8.0.0" />
  <!-- 版本号替换为和你项目.NET版本匹配的正式版即可 -->
</ItemGroup>

.NET Framework 传统WinForms项目

这类项目的System.Drawing属于框架内置程序集,不需要安装NuGet,手动添加程序集引用即可:

  • 右键项目的「引用」节点,选择「添加引用」
  • 在弹出窗口的「程序集→框架」分类下,找到System.Drawing项,勾选后点击确认
  • 重新生成项目即可

残留问题排查

如果添加引用后依然报错,按以下顺序排查:

  • 检查csproj配置中是否存在<UseWindowsForms>false</UseWindowsForms>配置,WinForms项目必须将该值设为true,开启后SDK会自动补全WinForms相关的基础依赖
  • 清理解决方案,手动删除项目根目录下的bin、obj缓存文件夹,重启Visual Studio后重新生成,避免旧版本编译缓存导致的类型识别异常
  • 如果是图标资源本身加载异常,可以先删除Designer中给notifyIcon赋值Icon的代码行,回到窗体设计器,选中notifyIcon控件重新在属性面板中指定图标文件,让设计器重新生成资源绑定代码即可

不要手动修改*.Designer.cs文件内的自动生成代码,后续设计器发生编辑时会自动覆盖手动修改的内容,所有配置优先通过设计器面板、项目配置入口调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:36:18