Extending the Development Environment

Extensibility is the capacity to extend or stretch the functionality of the development environment. Extensibility is not a new concept to development environments. Some language development packages give you the ability to add functionality to their user environments. However, the extent of control provided to you can be limited, or difficult to understand and implement.

The development environment provides you with a powerful, easy-to-understand modular system for customizing its environment through a programming interface known as the Extensibility object model. Its sole purpose is to allow you to "hook into" the workings of the development environment and create extensions known as add-ins. In addition to the object model provided by the common environment, each of the development languages provides an extensibility object model supporting the specific features of its environment.

The extensibility model consists of four related groups of individual code objects that control major facets of the common IDE. Each functional group enables you to create tools to customize the development environment and help you accomplish your programming tasks more quickly and easily. These groups are:

Each group consists of one or more collections and objects which together contribute to a particular purpose. For example, the primary function of the events object group is to provide events occurring in the development environment. One object in this group is the CommandBarEvents object, which allows you to trap events occurring on menus and toolbars. Another is the BuildEvents object, which exposes events occurring at the beginning and end of solution builds.

What does all this mean to you? This means that you don't have to settle for the constraints of the programming environment or rely on third-party extensions that don't do exactly what you want them to do. You might, for example, create add-ins to:

These are just a few ideas. Add-ins give you the freedom to create custom programming solutions to save you time and help you become more productive. Just think of the possibilities!