Visual Studio CommandBars don't have unique names
Just in case you are not aware of this yet (I found a problem related to this today in the MSDN forum), Visual Studio CommandBars don't have unique names, which means that retrieving a specific commandbar such as "Project" with this code can fail returning a commandbar that you didn't expect:
In fact, there are 3 or 4 commandbar named "Project" in Visual Studio 2005 and 2008, as this macro will show:
Dim sMsg As String
For Each objCommandBar As CommandBar In CType(DTE.CommandBars, Microsoft.VisualStudio.CommandBars.CommandBars)
If objCommandBar.Name = "Project" Then
sMsg = ""
For Each objCommandBarControl As CommandBarControl In objCommandBar.Controls
sMsg &= objCommandBarControl.Caption & Microsoft.VisualBasic.ControlChars.CrLf
The same happen with the "View" commandbar and others.
CommandBars are truly identified by Guid/Id pairs, and Dr.eX posted the workaround to this problem some time ago:
Using IVsProfferCommands to retrieve a Visual Studio CommandBar