ArcGIS Desktop developers can build simple stand-alone applications using ArcObjects components available in ArcGIS Desktop, but will spend most of their time implementing custom components in a class library to customize or extend an ArcGIS Desktop application. This document helps you decide which project template you can use to start your development efforts.
The following screenshot shows Visual Studio's New Project dialog box where you can start to create custom ArcGIS Desktop projects:
Building stand-alone applications
Windows Application—Choose this template in the New Project dialog box to create stand-alone Windows form applications with embedded geographic information system (GIS) functionality. The output assembly is an executable file (.exe). For visual mapping functionality, the ArcGIS Desktop SDK includes two ArcGIS controls: MapControl and PageLayoutControl. The ArcReaderControl and ArcReaderGlobeControl are available with the Publisher extension. These controls can be dragged and dropped on a Windows form designer by ArcGIS Desktop developers.
To build robust ArcGIS applications using Windows forms that include additional ArcGIS controls (TOCControl, ToolbarControl, SceneControl, GlobeControl, LicenseControl, and SymbologyControl), an ArcGIS Engine Developer license is needed.
Some candidates for an ArcGIS Desktop Windows application include simple mapping applications, adding GIS functionality in an existing application, processing GIS datasets, and so on.
Console application—Choose this template to create nongraphical user interface (nonGUI) applications that have GIS functionality. Interaction with this type of application is done through the command prompt or the console window. The output assembly is an executable file (.exe). A candidate for an ArcGIS Desktop console application is batch processing GIS datasets.
Implementing custom components
Class library (General)—You can create a class library to embed GIS functionality into other applications. Use this project template to write a generic class library with custom components that are designed to work in any of the ArcGIS Desktop applications (ArcCatalog, ArcMap, ArcScene, and ArcGlobe) or even your custom ArcGIS Desktop application. The output assembly is a dynamic link library file (.dll). Some candidates for an ArcGIS Desktop class library (General) application includes commands, tools, custom layers, custom geoprocessing tools, geodatabase, and so on.
Many of these customizations can be accomplished with an ArcGIS Item template. For a series of VB.NET and C# walkthroughs for creating custom components to extend ArcGIS Desktop, refer to Introduction and walkthrough goals.
Targeting a specific ArcGIS Desktop application
Four class library project templates are available to pair up with ArcGIS Desktop applications (ArcCatalog, ArcMap, ArcScene, and ArcGlobe). When you select one of these templates, the ArcGIS Project wizard only shows assemblies that are commonly used in the target application. The debug application of the project is set to the selected ArcGIS Desktop application (not available in Visual Studio Express editions). The following are the available class library project templates:
Class library (ArcCatalog)—Some candidates for this class library project includes: a command button that launches a specialized data management dialog box and a custom view to interact with the data in the catalog tree.
Class library (ArcMap)—Some candidates for this class library project includes: a command button that zooms to specific predefined bookmarks on the map, a tool to place graphic elements on the map with mouse clicks, a feature editing tool, and so on.
Class library (ArcScene)—Some candidates for this class library project includes: a command button that zooms to generate a scene for a specific animation track, and a custom mouse interaction procedure for interacting with a track and tool.
Class library (ArcGlobe)—Some candidates for this class library project includes: a command button that rotates and zooms to specific predefined bookmarks on a globe, and a custom tool creating simple flight paths between two clicked locations on the globe.