利用ArcEngine10编写地图符号化和利用颜色模板时,需要利用ESRI.ArcGIS.Framework.dll,但在编写代码:
创建新符号:IStyleGalleryItem pStyleGalleryItem = new ESRI.ArcGIS.Framework.StyleGalleryItem()或者
创建新颜色模块:IColorPalette pColorPalette = new ESRI.ArcGIS.Framework.ColorPalette();
代码不会出错,但在运行后就会出现异常: Additional information: 检索 COM 类工厂中 CLSID 为 {14746474-1534-11D3-9F49-00C04F6BC709} 的组件失败,原因是出现以下错误: 80040111 ClassFactory 无法供应请求的类 (异常来自 HRESULT:0x80040111 (CLASS_E_CLASSNOTAVAILABLE))(如下图)。
找了两天,原因终于明白:这是因为引用了一些只能在Desktop使用的类。IStyleGalleryItem和IColorPalette,还有IStyleSelector等,它们所在的命名空间就是ESRI.ArcGIS.Framework。既然是使用了Desktop的类,那么在引用这些只就必须安装Desktop了,所以解决方法就是在程序入口处需把ArcGIS Desktop进行与程序互动,即在Programe.cs(以C#为例)文件中,添加ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
如下图:
这样问题就解决,就可生成颜色模块了,运行后如下: