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
========