Recently I found the above displayed Visual Studio Extensibility Platform chart from microsoft.
Most of the things are clear to me. However, I am wondering about the Package API and the VSL (Visual Studio Library).
I tried to find more, but was not able to find any information.
Things I do not quite understand:
- What exactly is the Package API?
- What exactly is the VSL?
- What is the relation between the InteropAssemblies/ VSL and the Package API? Do the InteropAssemblies wrap the access to the Package API?
- Why should one use the VSL when implementing a native package? What are the benefits?
Does anybody have more information about these subjects or does somebody know some resources?
The "Package API" is the set of COM interfaces exposed in the Visual Studio SDK. These are the raw extensibility interfaces for the Visual Studio shell. Almost all the interfaces start with 'IVs' (for example IVsShell, IVsHierarchy, IVsSolution, etc...) If you have the Visual Studio 2010 SDK installed, take a look at the contents of %SDKInstall%\VisualStudioIntegration\Common\IDL for more detail.
You can think of VSL as an ATL-inspired framework for creating native Visual Studio packages. If you create a C++ Visual Studio Package from the included template, the output will be using VSL. The advantage of it is that it minimizes the amount of 'plumbing' code you need to write for a given feature (adding a new ToolWindow for example).
The Interop Assemblies are for .NET/COM interoperability. They provide the right method signatures and structure for managed (C#/VB/F#) code to call into the Package API.
The Visual Studio Extensibility center on MSDN is a good place to start for more links to documentation, blogs, articles, etc... that should help you along.