Supported with:
  • ArcGIS for Desktop Basic
  • ArcGIS for Desktop Standard
  • ArcGIS for Desktop Advanced
Library dependencies: Version, System, SystemUI, Geometry, GraphicsCore, Display, Server, Output, Geodatabase, GISClient, DataSourcesFile, DataSourcesGDB, DataSourcesOleDB, DataSourcesRaster, DataSourcesNetCDF, GeoDatabaseDistributed, GeoDatabaseExtensions, Carto, NetworkAnalysis, Location, GeoAnalyst, Animation, Maplex, Geoprocessing, NetworkAnalyst, Schematic, SpatialAnalyst, 3DAnalyst, GlobeCore, EngineCore, TrackingAnalyst, Framework

Additional library information: Contents, Object Model Diagram

The Desktop.Addins library provides the foundation for the add-in customization model.
The add-in customization model is a declaratively-based framework for creating a collection of customizations conveniently packaged in a single compressed file. Add-ins are easily shared between users, as they do not require installation programs or Component Object Model (COM) registration; add-ins are added to a system by simply copying them to a well-known folder and are removed by deleting them from this folder. Add-ins can also be shared between users within an organization using a centralized network share.
Add-ins are authored using .NET or Java along with Extensible Markup Language (XML). The XML describes the customizations, while the .NET or Java classes provide the custom behavior. The ArcObjects software development kit (SDK) includes an Add-Ins Wizard that integrates with development environments—such as Eclipse, Microsoft Visual Studio, and the free Express Editions of Visual Studio—to simplify development.
For more information on add-ins, see Building add-ins for ArcGIS for Desktop.

See the following sections for more information about this namespace:

Add-in types

ArcGIS for Desktop applications support a fixed set of add-in types, including the most popular types used in the classic COM-based extensibility model. The following add-in types are supported in the current release:
  • Buttons and tools
  • Combo boxes
  • Dockable windows
  • Menus and context menus
  • Multi-items
  • Toolbars
  • Tool palettes
  • Application extensions
  • Editor extensions

Add-in anatomy

Most add-ins have two parts: a declarative portion that identifies the customization and provides its static data—such as its caption and image—and an active portion, which is executable code that performs custom logic. There are exceptions however. For example, a toolbar is completely declarative; a toolbar by itself requires no special logic, it only needs to list its constituents. A button is quite different; although its name and caption can also be declared, something custom must occur when the button is clicked, and this is accomplished in its active portion. 
The active portion has traditionally been written using an interface approach, such as ICommand and ITool; however, to simplify development, add-ins take advantage of class inheritance. Add-ins, like buttons and tools, derive from abstract base classes that already fully satisfy their interface contracts. You can override the functions that are necessary to complete their custom actions. For example, a custom button will most likely only override OnClick.

Base classes

The ESRI.ArcGIS.Desktop.Addins library contains the following abstract base classes for the add-in types requiring an active portion:
  • Button
  • ComboBox
  • DockableWindow
  • Extension
  • MultiItem
  • Tool