You can extend Visual Studio with automation add-ins, macros, VSPackages, Managed Extensibility Framework (MEF) component parts, or a combination of the four. Generally, add-ins and macros are easier to develop, but are less powerful, than VSPackages or MEF component parts. Add-ins can call extensibility interfaces, and VSPackages and MEF component parts can access the Visual Studio automation model. You can combine several different approaches to create an effective solution.
VSPackages can be written in unmanaged or managed code. We recommend that you write new VSPackages in managed code by using the managed package framework (MPF). Almost anything that can be written in unmanaged code can be implemented more easily and securely in managed code. However, legacy applications written in unmanaged code will continue to run in Visual Studio.
Simple extensions can add tool windows or send information to Visual Studio UI elements, such as the status bar or output window. More complex applications can be written as Visual Studio hierarchies, such as the Server Explorer. Still more power can be obtained by implementing a project, editor, or designer. For example, Visual C# and Visual Basic are themselves implemented as language services.
Related Sections
- Visual Studio SDK and Automation 
 Discusses using automation, VSPackages, or a combination to create Visual Studio extensibility applications.
- Visual Studio SDK and Managed Code 
 Compares the different ways to write a VSPackage in managed code.
- Visual Studio Integration Concepts 
 Discusses the basics of VSPackages and how to use a service.
- User Interfaces 
 Discusses common UI application elements in Visual Studio, such as the Status and Output windows.
- Hierarchies in Visual Studio 
 Gives an overview of Visual Studio hierarchies, which appear in the integrated development environment (IDE) as trees of nodes.
- Projects (Visual Studio SDK) 
 Provides an overview of project and solution classes.
- Editors 
 Shows how to extend the code and text editor, and how to create custom editors and designers.
- Language Services 
 Shows how to create language services.
- Visual Studio SDK Reference 
 Reference documentation for the VSSDK.