public static CommandBarPopup add_TopMenu(this DTE2 dte, string text = "New Top Menu", string addAfterMenu = "Help")
        {
            var o2Timer = new O2Timer("Adding TopMenu").start();

            if (dte.isNull())
            {
                "[VS_Menus_ExtensionMethods][add_TopMenu] DTE object is null, so can't create Top Menu".error();
                return(null);
            }
            var existingMenu = dte.get_Menu(text);

            if (existingMenu.notNull())
            {
                "[VS_Menus_ExtensionMethods] add_TopMenu: there was already a menu called '{0}' so returning it".debug(text);
                return(existingMenu);
            }
            "[VS_Menus_ExtensionMethods] Creating new Top Menu called: {0}".info(text);
            //dynamic commandBars = dte.CommandBars;
            //var menuCommandBar = commandBars["MenuBar"];
            //get_CommandBarMenu
            //var position = (commandBars[addAfterMenu].Parent as CommandBarControl).Index;

            //The two lines above (using dynamic) has much worse performace then the ones below (from 1.8 sec to .1 sec)
            var menuCommandBar = dte.get_CommandBar("MenuBar");
            var position       = dte.get_CommandBarMenu(addAfterMenu).Index;


            var newMenu = (CommandBarPopup)menuCommandBar.Controls.Add(MsoControlType.msoControlPopup,
                                                                       System.Type.Missing,
                                                                       System.Type.Missing,
                                                                       ++position,
                                                                       true);

            newMenu.Caption = text;
            newMenu.Enabled = true;
            o2Timer.stop();
            return(newMenu);
        }
 public static CommandBarPopup get_CommandBarPopup(this DTE2 dte2, string menuName)
 {
     return(dte2.get_CommandBarMenu <CommandBarPopup>(menuName));
 }
 public static CommandBarControl get_CommandBarMenu(this DTE2 dte2, string menuName)
 {
     return(dte2.get_CommandBarMenu <CommandBarControl>(menuName));
 }