This one happens when an add-in:
– Creates a temporary toolbar using CommandBars.Add
– Creates a temporary CommandBarPopup on that toolbar
– Creates a command and tries to add a CommandBarButton from that command to that CommandBarPopup using Command.Add(CommandBarPopup.CommandBar)
The bug report is here:
VS 2010 Beta 2 Bug: adding CommandBarButton from Command to CommandbarPopup on Toolbar causes VS to hang
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=503871
The (VB.NET) code to reproduce the problem is:
Imports System Imports Microsoft.VisualStudio.CommandBars Imports Extensibility Imports EnvDTE Imports EnvDTE80 Public Class Connect Implements IDTExtensibility2 Private _applicationObject As DTE2 Private _addInInstance As AddIn Private _myCommandBarToolbar As CommandBar Private _myCommandBarPopup As CommandBarPopup Public Sub OnConnection(ByVal application As Object, ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, ByRef custom As Array) Implements IDTExtensibility2.OnConnection _applicationObject = CType(application, DTE2) _addInInstance = CType(addInInst, AddIn) Select Case connectMode Case ext_ConnectMode.ext_cm_AfterStartup InitializeAddIn() Case ext_ConnectMode.ext_cm_Startup ' OnStartupComplete will be called End Select End Sub Public Sub OnStartupComplete(ByRef custom As Array) Implements IDTExtensibility2.OnStartupComplete InitializeAddIn() End Sub Private Sub InitializeAddIn() Const MY_COMMAND_NAME As String = "MyCommand" Dim command As Command = Nothing Dim commandBars As CommandBars Dim commandBarControlObject As Object Try commandBars = CType(_applicationObject.CommandBars(), CommandBars) _myCommandBarToolbar = commandBars.Add(Name:="My toolbar", Position:=MsoBarPosition.msoBarTop) ' Create a commandbar popup _myCommandBarPopup = CType(_myCommandBarToolbar.Controls.Add(Type:=MsoControlType.msoControlPopup), CommandBarPopup) _myCommandBarPopup.Caption = "My CommandBarPopup" ' Try to retrieve existing command Try command = _applicationObject.Commands.Item(_addInInstance.ProgID & "." & MY_COMMAND_NAME) Catch ex As Exception End Try ' Create command If command Is Nothing Then command = _applicationObject.Commands.AddNamedCommand(_addInInstance, MY_COMMAND_NAME, "My command", "My tooltip", True, 59) End If ' This line hangs VS 2010 Beta 2 commandBarControlObject = command.AddControl(_myCommandBarPopup.CommandBar) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.ToString) End Try End Sub Public Sub OnDisconnection(ByVal disconnectMode As ext_DisconnectMode, ByRef custom As Array) Implements IDTExtensibility2.OnDisconnection Try If Not _myCommandBarPopup Is Nothing Then _myCommandBarPopup.Delete() End If If Not _myCommandBarToolbar Is Nothing Then _myCommandBarToolbar.Delete() End If Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.ToString) End Try End Sub Public Sub OnAddInsUpdate(ByRef custom As Array) Implements IDTExtensibility2.OnAddInsUpdate End Sub Public Sub OnBeginShutdown(ByRef custom As Array) Implements IDTExtensibility2.OnBeginShutdown End Sub End Class