项目场景:
ArcGIS Desktop 10.2 + VS2012 开发 ArcMap Add-in。工程能顺利 生成*.esriAddIn,并能安装到默认 AddIns 目录(ArcGIS 会把 add-in 复制/解包到 C:\Users\<你>\Documents\ArcGIS\AddIns\Desktop10.x\…)。
问题描述
编译生成 bin\Debug\khidi_hydroGIS_Addin.esriAddIn 正常,但安装阶段噩耗:
-
VS 提示 Failed to register Add-in;
-
双击或用安装器时弹窗:*Failed to register Add-in .esriAddIn。

-
双击*.esriAddIn也报错,无法安装,如图
-

-
把
.esriAddIn改名.zip又能正常打开(说明包并没坏)。
原因分析(一句话结论)
坑在中文!
工程里有个 Button 用了中文名,顺带它的 图标文件也叫中文名。
为什么最容易误判?
因为网上 90% 的帖子(包括本站)都在讲“压根没生成 .esriAddIn”——那通常是 VS2012 的.11.targets指向问题;但我这里已经生成了,栽在安装阶段。
解决方案(真·有效)
统一英文命名 → 清缓存 → 重新装
- 把
Images/下所有图标、Config.esriaddinx里image=、id、class等全部改英文/下划线(比如横断面拟合.png→crosssec_fit.png)。
踩坑记录(这些都试过,但在本案里没救)
-
换路径 / 极短纯英文目录 / 解除阻止:能避开很多 I/O 限制,但挡不住中文文件名本体问题。
-
修 targets / SDK:VS2012 工程需要
ESRI.ArcGIS.AddIns.11.targets;这招是“不生成包”时的常规修复,本案已生成所以无效。 -
权限/复制失败:确有官方解释“注册失败多半是复制到 My Documents\ArcGIS\AddIns 无权限/被占用”,但这次不是权限,是文件名。
经验总结
-
别整花活,英文走天下。 图标、ID、类名、路径全用英文和下划线,心情舒畅、安装器不发飙。
-
先确认场景:
-
没生成包 → 看
*.csproj的.11.targets(VS2012/2013 要带 11;VS2015+ 反而不要 11)。 -
已生成但装不上 → 先查命名字符与缓存,再谈权限。
-
-
为什么用10.2:ArcGIS 10.2以前的pj模式与以后的不同,vs里能调试。
19万+

被折叠的 条评论
为什么被折叠?



