/// <summary> /// Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded. /// </summary> /// <param name='application'> /// Root object of the host application. /// </param> /// <param name='connectMode'> /// Describes how the Add-in is being loaded. /// </param> /// <param name='addIn'> /// Object representing this Add-in. /// </param> /// /// <param name='custom'> /// Array of parameters that are host application specific. /// </param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addIn, ref Array custom) { _application = (DTE2)application; _addIn = (AddIn)addIn; try { if (connectMode == ext_ConnectMode.ext_cm_Startup || connectMode == ext_ConnectMode.ext_cm_AfterStartup) { _listener = CreateTraceListener(); _env = new ControllerEnvironment(new WindowHandle(_application.MainWindow.HWnd), _listener); _controller = CreateController(); _controller.OnConnectionStateChange += OnConnectionStateChange; CreateCommands(); CreateToolWindow(); _listener.WriteLine("Addin initialized"); if (connectMode == ext_ConnectMode.ext_cm_AfterStartup) { OnStartupComplete(ref custom); } } } catch (Exception ex) { if (_listener != null) { _listener.WriteLine(ex); } } }
internal void Init(DTE2 applicationObject, Controller controller, ControllerEnvironment env) { if (applicationObject == null) { throw new ArgumentNullException("applicationObject"); } if (controller == null) { throw new ArgumentNullException("controller"); } if (env == null) { throw new ArgumentNullException("env"); } if (_application != null) { throw new InvalidOperationException("Already initialized"); } _application = applicationObject; _controller = controller; _env = env; _controller.OnConnect += Controller_OnConnect; _controller.OnDisconnect += Controller_OnDisconnect; _controller.OnAssignmentTimeStarted += Controller_OnCurrentAssignmentChanged; _controller.OnAssignmentTimeStopped += Controller_OnCurrentAssignmentChanged; _controller.OnListRefresh += Controller_OnListRefresh; }