Availability of the DTE object, or, troubleshooting Visual Studio splash icons

[Go to main articles index]

Getting an icon on the VS splash screen helps give the final polish to a product. It should be simple enough following the documentation.

So, I set out to write that part and implemented it in a couple of hours. The best place to implement the IVsInstalledProduct interface is your VsPackage object itself.

Two hours after finishing the implementation, I could not get the ?!%#$ environment to display the icon. Everything seemed to be fine, but the icon would not appear. One reason it took me so long to figure it out is that I thought that the documentation must have been incomplete, wrong, or both at the same time.

To save you from running into the same problem, if you are doing the same, I'll tell you what I found out: my package's IVsPackage::SetSite() method, which is the main entry point for the package and the place where one naturally performs most initialization, was trying to get a reference to the DTE object (by querying for the service SDTE). And, during the "devenv /setup" run, the DTE object is not available! Of course, this made the SetSite() call fail, and the environment would not pursue anything with the package. Once this was fixed, the splash icon appeared nicely after the next proper and successful "devenv /setup" round.