라벨이 COM인 게시물 표시

How to deploy .NET components with COM

이미지
.NET 환경에서 ArcGIS Component(Component Object Model (COM) )를 이용하여 ICommand, ITool 등의 인터페이스를 확장한 클래스 라이브러리 프로젝트(*.DLL)를 개발해야 하는 경우가 종종 있습니다. 이 경우 배포 프로그램 내에 COM을 등록하는 설정이 필요하며, 다음은 Visual Studio 설치 프로젝트를 이용하여 배포하는 방법을 기술합니다. 배포 프로젝트에는 다양한 추가작업을 수행할 수 있으나, 이 문서에는 COM 등록을 위한 핵심적인 내용만을 대상으로 하며 사용한 개발도구는 다음과 같습니다. ▣ 개발도구 -    Visual Studio .NET C# 2008 -    ArcGIS SDK(Engine) 9.3 ▣ 반드시 기억할 것! 만약에 ArcGIS COM 컴포넌트를 이용한 커스텀 프로젝트를 배포한 후 ArcGIS를 제거하고자 할 경우 반드시 커스텀 프로젝트를 먼저 제거해야 합니다. 커스텀 프로젝트의 설치 및 제거시에 ArcGIS 컴포넌트(ESRI.ArcGIS.System.dll 등 커스텀 프로그램에서 참조로 사용한 어셈블리)를 필요로 하기 때문입니다. 만약 ArcGIS 컴포넌트들이 없을 경우 설치 및 제거에 실패합니다. ▣ 목 차 1.    소개    3 2.    COM Custom Install Program 작성    4 2.1.    배포할 커스텀 프로젝트 준비    4 1.1.1.    프로젝트 작성 및 준비    4 1.1.2.    COM Installer Class 추가    5 1.2.    설치 프로젝트 생성    7 1.2.1.    설치 프로젝트 생성    7 1.2.2.    ...

Release COM References

이미지
ArcObjects를 이용하여 Table(FeatureLayer, ITable, IFeatureClass 등)을 Query할 때 Search, Update 메쏘드를 활용한다. 공간 및 속성조건을 설정하기 위해 IQueryFilter(속성조건), ISpatialFilter(공간 및 속성조건)를 활용하며 결과는 ICursor, IFeaureCursor를 반환한다. 가끔 Cursor를 Loop문 안에 반복적으로 사용하는 경우(아래 예)가 있으며, 이 경우 Shapefile의 경우를 제외하고 Personal Geodatabase(Access, 일반적으로 255번째 발생), GeoDatabase(SDE)의 경우 예외없이 COMException이 발생한다. 여기에서는 이 해결방안을 알아보도록 한다. [code c#] IFeatureCursor afCursor = sourceFc.Search(null, true); IFeature aFeature = afCursor.NextFeature(); while (aFeature != null) {     IQueryFilter filter = new QueryFilterClass();     filter.WhereClause = string.Format("{0} = {1}", sourceFc.OIDFieldName, aFeature.OID);     IFeatureCursor bfCursor = ipInputFc.Search(filter, true);     IFeature bFeature = bfCursor.NextFeature();     if (bFeature != null)     {         System.Diagnostics.Debug.WriteLine(bFeature.OID);     }     aFeature = afCursor.NextF...