ArcGIS Engine控件运行许可学习总结

ArcGIS Engine控件运行许可



Runtime绑定:
在ArcGIS Engine10.0中,许可方式发生了一定的变化,ArcGis10有一个新的要求---runtime绑定。就是在任何ArcObjects代码(包括许可初始化代码)被执行前,指定相称的ArcGIS产品---


ArcGIS Desktop或者ArcGIS Engine应用程序。
         建立runtime绑定的APIs位于程序集ESRI.ArcGIS.Version的类ESRI.ArcGIS.RuntimeManager中,该程序集随着任何ArcGIS10 runtime一起安装于全局程序集缓存(Global Assembly 


Cache(GAC))中。安装了ArcObjects.NETSDK,默认的程序集ESRI.ArcGIS.Version位于C:/Program Files/ArcGIS/DeveloperKit10.0/DotNet文件夹下。可以在VisualStudio IDE中将该程序集添


加为项目引用。
 
利用LicenseControl将ArcGIS9.3应用程序迁移至ArcGIS10:
         使用LicenseControl,迁移ArcGIS 9.3Desktop或者Engine应用程序至ArcGIS 10,执行以下步骤:
1、  安装ArcObjects.NETSDK;
2、  升级VisualStudio的项目至Visual Studio 2008或以上版本;
3、  确保设置所有ESRI程序集的SpecificVersion属性为False;
4、  加ESRI.ArcGIS.Version程序集至项目;
5、  加ESRI.ArcGIS.ADF.Local程序集至项目;
6、  在使用其他任何ArcObjects代码之前,添加下面的代码语句:
 
[C#]中:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
[VB.NET]中:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
 
 
利用ESRI.ArcGIS.esriSystem.AoInitialize类将ArcGIS9.3应用程序迁移至ArcGIS 10:
         在代码中使用ESRI.ArcGIS.esriSystem.IAoInitialize类也可以执行runtime绑定。有两种方法,步骤分别为:
 
手工编写runtime绑定代码方案步骤:
1、  安装ArcObjects.NETSDK;
2、  升级VisualStudio的项目至Visual Studio 2008或以上版本;
3、  确保设置所有ESRI程序集的SpecificVersion属性为False;
4、  加ESRI.ArcGIS.Version程序集至项目;
5、  加ESRI.ArcGIS.ADF.Local程序集至项目;
6、  在使用其他任何ArcObjects代码之前,添加下面的代码语句:
 
[C#]中:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
[VB.Net]中:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
 
利用ArcGISLicense Initializer Wizard生成runtime绑定代码步骤:
1、  安装ArcObjects.NET SDK;
2、  升级VisualStudio的项目至Visual Studio 2008或以上版本;
3、  确保设置所有ESRI程序集的SpecificVersion属性为False;
4、  加ESRI.ArcGIS.Version程序集至项目;
5、  加ESRI.ArcGIS.ADF.Local程序集至项目;
6、  在Visual Studio中通过Add ArcGIS License Checking命令,运行ArcGIS LicenseInitialzer Wizard。
 
尽管在开发ArcGIS 9.3项目时运行过ArcGIS License Initialzer,迁移至ArcGIS 10时仍然需要再次运行ArcGISLicense Initializer,因为ArcGIS License Initializer生成的代码有些已经


被改变了,如下图
7、  在使用其他任何ArcObjects代码之前,添加下面的代码语句:


[C#]中:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
[VB.NET]中:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);


http://blog.csdn.net/zhai56565/article/details/8116292/
========

ArcGIS 二次开发中的几个小问题

问题一: IPoint point = new PointClass();   //显示这一句有错误,错误提示为“IPoint point = new PointClass();”
解决办法为:把ESRI.ArcGIS.Geometry的属性中“嵌入互操作类型”改为“False”。OK!


 问题二:  按照以下代码,在VS窗体中加载mxd文档,但是不能显示。窗体显示区为空白。 
  private void 加载地图文档ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            loadMapDocument();
        }
        //加载地图文档
        private void loadMapDocument()
        {
            System.Windows.Forms.OpenFileDialog openFileDialog;
            openFileDialog = new OpenFileDialog();
            openFileDialog.Title = "打开地图文档";
            openFileDialog.Filter = "map documents(*.mxd)|*.mxd";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                if (axMapControl1.CheckMxFile(filePath))
                {
                    axMapControl1.MousePointer = esriControlsMousePointer.esriPointerHourglass;
                    axMapControl1.LoadMxFile(filePath, 0, Type.Missing);
                    axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault;
                    loadEagleEyeDocument(filePath);
                    axMapControl1.Extent = axMapControl1.FullExtent;
                }
                else
                {
                    MessageBox.Show(filePath + "不是有效的地图文档");
                }
            }
        }
解决方法为:
        public Form1()
        {
            ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
            ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.Engine); 
            InitializeComponent();
        }
加上高亮显示这行代码之后,果断能正常显示。
========

错误:命名空间“ESRI.ArcGIS”中不存在类型或命名空间名称“RuntimeManager”.是否缺少程序集引用



本来没有添加有问题的这句代码,运行报错说ArcGIS not specified。然后网上搜了一下,都是说要添加这样一句代码。添加以后,编译报错:


最初怀疑是AE没有安装好,但是查了一下ArcGIS管理器,是可以的呀:


我也在VS里面添加了AE相关空间的引用,“工具箱”可以显示:


但是添加到窗体里面的控件有Note,提示我需要ArcGIS的product license


我也遇到过这个问题,我添加了ESRI.Arcgis.Version引用后问题就解决了,你可以试试。


从“工具箱”→“ArcGIS Windows Forms”中选择控件“LicenseControl”控件,拖到窗口中,系统会自动为程序添加需要的引用,等待数秒,这个错误就可以解决


我也遇到过这个问题,我添加了ESRI.Arcgis.Version引用后问题就解决了,你可以试试。


为什么我的没有Arcgis.Version的引用


我也没有这个DLL,怎么回事啊


应该是版本问题,估计9.X的没有,新版本有。


添加了ESRI.Arcgis.Version引用


我发现把这句给注释掉就可以运行了。


为什么我的vs2008里面在添加引用的时候,看不到ESRI.ARCGIS.version呢?先装的vs,后装的arcgis,这个怎么能?望指导


ESRI.ArcGIS.Version.dll,添加引用时浏览到以下位置:
C:\Program Files (x86)\Common Files\ArcGIS\bin
添加即可
========

ESRI.ArcGIS.RuntimeManager.Bind返回false解决方法



使用arcengine,电脑是X64系统时,ESRI.ArcGIS.RuntimeManager.Bind会返回false,将项目属性的目标平台设为X86即可,具体原因未知。http://forums.arcgis.com/threads/60805-
arcserver-licensing
========

你可能感兴趣的:(转载,.Net,GIS)