/// <summary>
        /// Event raised when the build of an individual project is done.
        /// </summary>
        /// <param name="projectName">The project name.</param>
        /// <param name="projectConfig">The project config.</param>
        /// <param name="platform">The platform.</param>
        /// <param name="solutionConfig">The solution config.</param>
        /// <param name="success">True if project build was successful, otherwise false.</param>
        private void BuildEvents_OnBuildProjConfigDone(string projectName, string projectConfig, string platform, string solutionConfig, bool success)
        {
            var project= Path.GetFileName(projectName);
            ProjectInfo projectInfo;
            if (project != null && _availableProjectsDict.TryGetValue(project, out projectInfo))
            {
                var config = new BuildConfig(projectInfo, projectConfig, platform, solutionConfig) { ItsSuccessFlag = success };

                if (projectInfo.ItsStartupProjectFlag)
                    _eventAggregator.PublishEvent(_eventAggregator.StartupProjectBuildFinished, config);
                else
                {
                    var fileName = Path.GetFileName(project);
                    if (fileName != null && fileName.Equals(InstallerProjectName, StringComparison.CurrentCultureIgnoreCase))
                        _eventAggregator.PublishEvent(_eventAggregator.InstallerProjectBuildFinished, config);
                    else
                        _eventAggregator.PublishEvent(_eventAggregator.IndividualProjectBuildFinished, config);
                }
            }
        }
        /// <summary>
        /// Event raised when the build of an individual project begins.
        /// </summary>
        /// <param name="project">The project.</param>
        /// <param name="projectConfig">The project config.</param>
        /// <param name="platform">The platform.</param>
        /// <param name="solutionConfig">The solution config.</param>
        private void BuildEvents_OnBuildProjConfigBegin(string project, string projectConfig, string platform, string solutionConfig)
        {
            ProjectInfo projectInfo;
            if (_availableProjectsDict.TryGetValue(project, out projectInfo))
            {
                var config = new BuildConfig(projectInfo, projectConfig, platform, solutionConfig);

                if (projectInfo.ItsStartupProjectFlag)
                    _eventAggregator.PublishEvent(_eventAggregator.StartupProjectBuildStarted, config);
                else
                {
                    //TODO find a way to use a guid instead
                    var fileName = Path.GetFileName(project);
                    if (fileName != null &&
                        fileName.Equals(InstallerProjectName, StringComparison.CurrentCultureIgnoreCase))
                        _eventAggregator.PublishEvent(_eventAggregator.InstallerProjectBuildStarted, config);
                    else
                        _eventAggregator.PublishEvent(_eventAggregator.IndividualProjectBuildStarted, config);
                }
            }
        }
 private void StartupProjectBuildFinishedEventHandler(object sender, BuildConfig e)
 {
     _fileSystemSerivce.StartScanAsync(e.ItsProjectInfo.ItsProjectPaths.ItsOutputPath, true, ItsInstallerProjectManagementService.ItsWixFile);
 }