/* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Apache License, Version 2.0. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Apache License, Version 2.0, please send an email to * vspython@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Apache License, Version 2.0. * * You must not remove this notice, or any other, from this software. * * ***************************************************************************/ using System.Collections.Generic; using System.Runtime.InteropServices; namespace Microsoft.VisualStudio.Project { /// /// Defines abstract package. /// [ComVisible(true)] public abstract class ProjectPackage : Microsoft.VisualStudio.Shell.Package { #region fields /// /// This is the place to register all the solution listeners. /// private List solutionListeners = new List(); #endregion #region properties /// /// Add your listener to this list. They should be added in the overridden Initialize befaore calling the base. /// public IList SolutionListeners { get { return this.solutionListeners; } } #endregion #region methods protected override void Initialize() { base.Initialize(); // Subscribe to the solution events this.solutionListeners.Add(new SolutionListenerForProjectOpen(this)); this.solutionListeners.Add(new SolutionListenerForBuildDependencyUpdate(this)); this.solutionListeners.Add(new SolutionListenerForProjectReferenceUpdate(this)); foreach (SolutionListener solutionListener in this.solutionListeners) { solutionListener.Init(); } } protected override void Dispose(bool disposing) { // Unadvise solution listeners. try { if (disposing) { foreach (SolutionListener solutionListener in this.solutionListeners) { solutionListener.Dispose(); } } } finally { base.Dispose(disposing); } } #endregion } }