public void AddInManager_CallInitializeOnceForAction() { var a1 = CreatePackageActionForManager(); var a2 = CreatePackageActionForManager(); var dte = CreateDTE(); var addIn = CreateAddIn(); mock.ReplayAll(); var manager = new CustomAddInManager(dte, addIn, null, Assembly.GetExecutingAssembly()); Trace.WriteLine("Addin two actions."); manager.Add(a1); manager.Add(a2); // initialize actions - only the first one should be executed // the rest should be discarded by the manager itself: Trace.WriteLine("Calling application init of AddIn manager for the first time."); manager.ApplicationInit(true); Trace.WriteLine("Calling for the second time."); manager.ApplicationInit(true); // release manager's resources: Trace.WriteLine("Calling application exit."); manager.ApplicationExit(true); // check if the initialization has been called at most 2-times: Trace.WriteLine("Validating number of calls."); ThrowCounterException(2); }
/// <summary>Implements the OnConnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being loaded.</summary> /// <param term='application'>Root object of the host application.</param> /// <param term='connectMode'>Describes how the Add-in is being loaded.</param> /// <param term='addInInst'>Object representing this Add-in.</param> /// <seealso class='IDTExtensibility2' /> public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { if (manager == null) { customizator = new TytanCustomizator(); manager = new CustomAddInManager((DTE2)application, (AddIn)addInInst, customizator, Assembly.GetExecutingAssembly()); //if (connectMode != ext_ConnectMode.ext_cm_UISetup) customizator.Initialize(manager); // register all known refactoring IPackageActions: manager.Add(new InitConstructorRefactor()); manager.Add(new ExtractPropertyRefactor()); //manager.Add(new ExpandEnumRefactor()); // manager.Add(new ExtractResourceRefactor()); manager.Add(new AssignReorderRefactor()); manager.Add(new MultiRenameRefactor()); manager.Add(new InsertionGuidRefactor()); manager.Add(new InsertionClassNameAction()); manager.Add(new InsertionPathRefactor()); manager.Add(new InsertionDatabaseRefactor()); if (manager.Version == ShellVersions.VS2005) { manager.Add(new OpenWindowsExplorer()); } manager.Add(new VisualStudioCloseQuestion()); manager.Add(new ReferenceProjectAction()); // manager.Add(new NativeImagePreviewPackageTool()); manager.Add(new CommandViewPackageTool()); manager.Add(new RegistryViewPackageTool()); manager.Add(new EnvironmentVarsPackageTool()); manager.Add(new DebugViewPackageTool()); manager.Add(new AboutBoxAction()); } // initialize VS IDE commands: manager.ApplicationInit(true /* connectMode == ext_ConnectMode.ext_cm_UISetup */); customizator.AfterApplicationInit(true); }