Ok, you can find a full detailed comparison here (there are also links to the previous parts in the series).
But basically, add-ins were available as the VS extension type from the very first versions of the VS and built as the COM components. Later on, some limitations were discovered in that approach, so the new extensibility feature was created -- namely VS SDK package.
Probably, if you are building an extension for VS 2008+ you should target the VS SDK package as the newer technology. Another strong point of the VS package is better integration with the Visual Studio.
Whatever you do, add-ins are an
external thing for Visual Studio while
VSPackages are a completely integrated
part of the IDE.
You still might consider building an add-in, if
- you need access to high-level extensibility API, as opposed to low-level fundamental API available from a VS package;
- you develop in Visual Basic (templates for VS Package are available only in C# / Visual C++);
- you want to automate a simple task / common scenario, then add-in will probably require less development effort.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…