Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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();
                }
            }
        }
Ejemplo n.º 3
0
        /// <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();
            }
        }
Ejemplo n.º 4
0
        /// <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);
        }