/// <summary> /// Release state and resources for all instantiated guidance extensions in the current solution state. /// </summary> public void Close() { // // If we're really in the RunStarted portion of a template wizard, we ignore // Close calls which are generated by VS events // if (InTemplateWizard > 0) { return; } ClearAllExtensions(); this.solutionState = null; this.ActiveGuidanceExtension = null; if (BlackboardManager.Current != null) { BlackboardManager.Current.Clear(); } InstantiatedExtensionsChanged(this, EventArgs.Empty); RaisePropertyChanged(x => x.InstantiatedGuidanceExtensions); IsOpenedChanged(this, EventArgs.Empty); RaisePropertyChanged(x => x.IsOpened); }
/// <summary> /// Initializes the manager with a given solution state. /// </summary> public void Open(ISolutionState solutionState) { Guard.NotNull(() => solutionState, solutionState); // // Ok, now let's load any guidance extensions we find from the "Solution State" which is // stored in the .SLN file's Solution Globals // this.Close(); this.solutionState = solutionState; IsOpenedChanged(this, EventArgs.Empty); RaisePropertyChanged(x => x.IsOpened); using (tracer.StartActivity(Resources.GuidanceManager_TraceOpenFromSolutionState)) { // Ignore guidance extensions that are not installed. var availableSolutionExtensions = solutionState .InstantiatedGuidanceExtensions .Where(state => this.IsInstalled(state.ExtensionId)) .Select(state => new { Registration = this.InstalledGuidanceExtensions.First(reg => reg.ExtensionId == state.ExtensionId), State = state }); try { if (availableSolutionExtensions.ToArray <object>().Length > 0) { InTemplateWizard = InTemplateWizard + 1; ForceActiveExtensionChanged(); InTemplateWizard = InTemplateWizard - 1; } } catch (Exception) { } finally { InTemplateWizard = 0; } if (BlackboardManager.Current != null) { BlackboardManager.Current.Initialize(); } foreach (var extension in availableSolutionExtensions) { using (tracer.StartActivity(Resources.GuidanceManager_TraceInitializeExtension, extension.State.InstanceName, extension.State.ExtensionId)) { try { var ext = this.InitializeExtension(extension.State.ExtensionId, extension.State.InstanceName, extension.Registration, extension.State.Version, false); // isInstantiation ext.PostInitialize(); this.ActiveGuidanceExtension = ext; // If extension initialized fine and there was a version mismatch, consider it upgraded. if (extension.State.Version != extension.Registration.ExtensionManifest.Header.Version) { solutionState.Update(extension.State.ExtensionId, extension.State.InstanceName, extension.Registration.ExtensionManifest.Header.Version); } } catch (Exception ex) { tracer.Error(ex, Resources.GuidanceManager_TraceFailedExtensionInitialization); } } } if (this.instantiatedGuidanceExtensions.Count == 1) { this.ActiveGuidanceExtension = this.InstantiatedGuidanceExtensions.First(); } } }
/// <summary> /// Initializes the manager with a given solution state. /// </summary> public void Open(ISolutionState solutionState) { Guard.NotNull(() => solutionState, solutionState); // // Ok, now let's load any guidance extensions we find from the "Solution State" which is // stored in the .SLN file's Solution Globals // this.Close(); this.solutionState = solutionState; IsOpenedChanged(this, EventArgs.Empty); RaisePropertyChanged(x => x.IsOpened); using (tracer.StartActivity(Resources.GuidanceManager_TraceOpenFromSolutionState)) { // Ignore guidance extensions that are not installed. var availableSolutionExtensions = solutionState .InstantiatedGuidanceExtensions .Where(state => this.IsInstalled(state.ExtensionId)) .Select(state => new { Registration = this.InstalledGuidanceExtensions.First(reg => reg.ExtensionId == state.ExtensionId), State = state }); try { if (availableSolutionExtensions.ToArray<object>().Length > 0) { InTemplateWizard = InTemplateWizard + 1; ForceActiveExtensionChanged(); InTemplateWizard = InTemplateWizard - 1; } } catch (Exception) { } finally { InTemplateWizard = 0; } if (BlackboardManager.Current != null) BlackboardManager.Current.Initialize(); foreach (var extension in availableSolutionExtensions) { using (tracer.StartActivity(Resources.GuidanceManager_TraceInitializeExtension, extension.State.InstanceName, extension.State.ExtensionId)) { try { var ext = this.InitializeExtension(extension.State.ExtensionId, extension.State.InstanceName, extension.Registration, extension.State.Version, false); // isInstantiation ext.PostInitialize(); this.ActiveGuidanceExtension = ext; // If extension initialized fine and there was a version mismatch, consider it upgraded. if (extension.State.Version != extension.Registration.ExtensionManifest.Header.Version) solutionState.Update(extension.State.ExtensionId, extension.State.InstanceName, extension.Registration.ExtensionManifest.Header.Version); } catch (Exception ex) { tracer.Error(ex, Resources.GuidanceManager_TraceFailedExtensionInitialization); } } } if (this.instantiatedGuidanceExtensions.Count == 1) this.ActiveGuidanceExtension = this.InstantiatedGuidanceExtensions.First(); } }
/// <summary> /// Release state and resources for all instantiated guidance extensions in the current solution state. /// </summary> public void Close() { // // If we're really in the RunStarted portion of a template wizard, we ignore // Close calls which are generated by VS events // if (InTemplateWizard > 0) return; ClearAllExtensions(); this.solutionState = null; this.ActiveGuidanceExtension = null; if (BlackboardManager.Current != null) BlackboardManager.Current.Clear(); InstantiatedExtensionsChanged(this, EventArgs.Empty); RaisePropertyChanged(x => x.InstantiatedGuidanceExtensions); IsOpenedChanged(this, EventArgs.Empty); RaisePropertyChanged(x => x.IsOpened); }