This documentation is archived and is not being maintained.

Add-in Developer Experience

There are typically three groups of developers who work on add-ins and their pipelines: host application developers, pipeline developers, and add-in developers.

Typically, organizations that develop host applications will also develop an SDK that describes the object model for add-in developers to program against. This SDK will include the add-in view assembly that contains the abstract base class or interface that the add-in must implement, as well as abstract base classes and interfaces that represent the types that are passed between the host and the add-in. this work can also include building the complete pipeline.

There are only a few requirements for the class that defines an add-in:

  • The class must have the AddInAttribute attribute. This attribute specifies the name of the add-in, and optionally a description, the publisher, and the version.

  • The class must derive from the add-in base class in the add-in view.

  • The class must implement the methods of the add-in base class.

Aside from these requirements, developing an add-in is like developing any other .NET Framework component. It is not necessary to understand the details of the pipeline. The add-in developer must implement only the methods in the add-in view.

The add-in developer can also develop and test add-ins without affecting other add-ins or the host because the add-in is isolated in its own application domain. Only the add-in view, contract and add-in-side adapters are loaded into the add-in's application domain.

Deployment is simple. All that is required is to copy the add-in assembly to its own folder in the add-in directory specified by the host. Many hosts will choose to call the Update method themselves, which makes add-in deployment a simple copy operation. Others will push that responsibility to add-in developers. In that case, the add-in will typically call the provided addinutil.exe assembly in the framework directory during installation.