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);