/// <summary>
        /// Updates the taskbar status based on the current build conditions.
        /// </summary>
        private void updateTaskbarStatus()
        {
            //TaskbarItemProgressState progressState = TaskbarItemProgressState.None;

            //a failed build should always be indicated in the taskbar.
            if (HasBuildFailed)
            {
                //progressState = TaskbarItemProgressState.Error;
            }
            else
            {
                if (IsBuildActive)
                {
                    if (IsProgressIndeterminate)
                    {
                        //progressState = TaskbarItemProgressState.Indeterminate;
                    }
                    else
                    {
                        //progressState = TaskbarItemProgressState.Normal;
                    }
                }
            }

            //TaskbarItemInfo.ProgressState = progressState;
            //TaskbarItemInfo.ProgressValue = ProgressPercentage;
            if (_buildStatusWindow == null)
            {
                _buildStatusWindow = new BuildStatusWindow();
            }

            _buildStatusWindow.SetProgress((int)ProgressPercentage);
        }
        /// <summary>
        /// Build is done.
        /// </summary>
        private void buildDone()
        {
            if (_buildStatusWindow == null)
            {
                _buildStatusWindow = new BuildStatusWindow();
            }

            _buildStatusWindow.SetProgress(100);

            IsProgressIndeterminate = false;
            // a failed build needs to displayed in the taskbar.
            ProgressPercentage = HasBuildFailed ? 100 : 0;
            IsBuildActive      = false;

            System.Threading.Thread.Sleep(1000);
            _buildStatusWindow.Close();
        }
        /// <summary>
        /// A build has begun.
        /// </summary>
        /// <param name="scope">The scope.</param>
        /// <param name="action">The action.</param>
        private void buildBegin(vsBuildScope scope, vsBuildAction action)
        {
            BuildAction           = action;
            BuildScope            = scope;
            NumberOfProjectsBuilt = 0;

            if (scope == vsBuildScope.vsBuildScopeSolution)
            {
                NumberOfProjectsToBeBuilt = getNumberOfProjectsToBeBuilt();
                IsProgressIndeterminate   = false;
            }
            else
            {
                NumberOfProjectsToBeBuilt = 0;
                IsProgressIndeterminate   = true;
            }

            // reset the field directly. the property won't allow a "true" to be changed to a "true".
            _hasBuildFailed    = false;
            IsBuildActive      = true;
            ProgressPercentage = 0;
            _buildStatusWindow = new BuildStatusWindow();
            _buildStatusWindow.Show();
        }