Implementation Strategies
You can extend Visual Studio with automation add-ins, VSPackages, Managed Extensibility Framework (MEF) component parts, or a combination of the three. Generally, add-ins 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 IDE 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.