Converting DPack add-ins to VSIP package tales, part 1

For those of you not familiar with VSIP, it stands for Visual Studio Integration Package. The VSIP SDK (I use it with managed extensions) allows one to create a single package to distribute to VS.NET users. VSIP SDK (or just VSIP) allows for much tighter IDE integration than it’s possible with add-ins.

It’s a lot easier to define new menus, add new commands and place those commands in groups or onto already existing menus. VSIP packages use resource DLLs for that with a special .ctc file to set it all up. DPack has 6 add-ins that perform a lot of similar tasks: to enable commands most of them check if there is a solution, if there is at least one project in it and if there is a file open in the editor. All these tasks can be simply “described” in the VSIP .ctc file, including the command context and visibility. In other words, all of the add-in in-code context validation logic is no longer needed and that part is taken care of by the IDE. This leads to better package vs. add-ins performance and more consistent overall user experience.

The good:

Packages can have the same access to EnvDTE, relying on existing code model automation objects. What this means is that most/all of DPack add-in drivers will be convreted more or less as-is. Noteable exceptions are error handling and logging, which would have to be reworked. I already have two add-ins, Code Navigator and Bookmarks converted for the new package.

One other cool thing is that VSIP helper assemblies come with the source code. One can learn some interesting and helpfull info from that.

The bad:

Conversion is a relativly slow process due to a (diminishing) lurning curve.

The ugly:

If you get stuck with VSIP you are stuck for good. There is help that comes with SDK but it tells you what this function or construct is, but it doesn’t tell you a lot on how to apply it. Then there are samples, but… You only get four managed samples and most of them don’t illustrate some of the important areas VSIP users run into, such as intricacies of the .ctc file creation. BTW, I find .ctc file the most difficult and frustrating part to master (I’m not quite there yet).

There is also a private MS VSIP newsgroup but it doesn’t seem that MS provides much support there anymore. I’ve posted few times there but haven’t gotten much help so far. They must be busy with VS.NET 2005 but it doesn’t really help to solve my current VSIP problems.

That’s it for now.

Sergey @ USysWare