ArcGIS Engine控件运行许可学习总结
生活随笔
收集整理的這篇文章主要介紹了
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文件夾下??梢栽赩isualStudio 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
========
總結
以上是生活随笔為你收集整理的ArcGIS Engine控件运行许可学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些stl格式的点云的显示结果
- 下一篇: NotePad++学习总结