- It is extremely complicated to make the picture transparent. This problem lasts at least 10 years from the times of Visual Basic 5.0. Some times you need to use almost green (RGB=0,254,0), sometimes magenta (RGB=255,0,255), which is confusing and counterintuitive.
- It requires a satellite DLL, that can be native or managed (.NET) but in both cases is very complicated to create and register (native DLLs require Visual C++ which is alien to many VB.NET/C# developers and managed DLLs require Windows Explorer, Notepad, ResGen, Assembly Linker and whatever else (see the official solution from Microsoft at http://msdn2.microsoft.com/en-us/library/ms228771(VS.80).aspx).
The following links provide you feedback of the magnitute of the problem. Read the questions of forums, and the comments to blog posts explaining the solutions:
http://blogs.msdn.com/hlong/archive/2005/09/27/474522.aspx
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3112665&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3022255&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=188155&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3020962&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2833767&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1871235&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3016466&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2172354&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2702922&SiteID=1
etc.
http://blogs.msdn.com/craigskibo/archive/2004/01/08/48814.aspx
http://www.mztools.com/articles/2005/MZ2005007.aspx
In the new Visual Studio version (10.0):
1) Satellite DLLs (managed or native) should not be required. They may be OK for string localizations, but please don't force us to create satellite DLLs for pictures that could be in the own assembly add-in.
2) Provide an EnvDTE100.Commands.AddNamedCommandBar3 that accepts a System.Drawing.Icon as custom picture. Since icons have the concept of transparency (which bitmaps lack), no tricky magenta or almost green would be necessary.
3) Provide an EnvDTE100.Window3.SetTabPicture that accepts a System.Drawing.Icon.