samples下代码报错,常见原因应该是使用开发工具版本过高和工程路径修改之类的原因。以下问题是使用了VS2012&ArcMap10.2
报错1:
错误 1 未能从程序集 ESRI.ArcGIS.AddIns.SDK, Version=10.2.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86 加载任务“ValidateAddInXMLTask”。Could not load file or assembly 'Microsoft.VisualStudio.Shell.9.0, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 系统找不到指定的文件。 请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。 AlgorithmicColorRamp
解决:
以前根据一篇博客解决过这个问题,后来时间久了又忘了。再次加深下印象。
bug起源:
C:Program Files (x86)MSBuildEsri目录下分别有两套addins和server的targets,而我们用VS模板生成的SOE项目,项目文件XXX.csproj默认采用的是:
解决方法:
修改项目文件XXX.csproj
<Import Project="$(MSBuildExtensionsPath)ESRIESRI.ArcGIS.AddIns.Server.11.targets" Condition="Exists('$(MSBuildExtensionsPath)ESRIESRI.ArcGIS.AddIns.Server.11.targets')" />
保存重新加载,重新生成就OK了
有时候也有可能是没有targets,直接注释带targets的那行代码就OK。
报错2:
不包含适合于入口点的静态“Main”方法
解决:
缺少main方法。可能是一个AddIn插件,调试方法见【传送门】。
报错3:
The assembly {0} contains no classes marked with the ServerObjectExtension attribute. Empty AddIn will not be generated.
解决:
程序集没有包含SOE(ServerObjectExtension)文件,空的插件不会被生成。需要重新改了proj文件。
<Import Project="$(MSBuildExtensionsPath)ESRIESRI.ArcGIS.AddIns.11.targets" Condition="Exists('$(MSBuildExtensionsPath)ESRIESRI.ArcGIS.AddIns.11.targets')" />
解决这个问题应该就能生成esriAddIn文件了。[详情]
报错4:
: error : 未能加载项目文件。“<”(十六进制值 0x3C)是无效的特性字符。第 147 行,位置 3。
解决:
删除那一行的代码