コード例 #1
0
        protected virtual void Refresh()
        {
            // Let MSBuild know which configuration we are working with
            _project.SetConfiguration(_projectCfg.ConfigName);

            // Generate dependencies if such a task exist
            if (_project.BuildProject.Targets.ContainsKey(_targetName))
            {
                bool succeeded = false;
                _project.BuildTarget(_targetName, out succeeded);
                if (!succeeded)
                {
                    Debug.WriteLine("Failed to build target {0}", _targetName);
                    this._outputs.Clear();
                    return;
                }
            }

            // Rebuild the content of our list of output
            string outputType = _targetName + "Output";

            this._outputs.Clear();

            if (_project.CurrentConfig != null)
            {
                foreach (MSBuildExecution.ProjectItemInstance assembly in _project.CurrentConfig.GetItems(outputType))
                {
                    Output output = new Output(_project, assembly);
                    _outputs.Add(output);

                    // See if it is our key output
                    if (_keyOutput == null ||
                        String.Compare(assembly.GetMetadataValue("IsKeyOutput"), true.ToString(), StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        _keyOutput = output;
                    }
                }
            }

            _project.SetCurrentConfiguration();

            // Now that the group is built we have to check if it is invalidated by a property
            // change on the project.
            _project.OnProjectPropertyChanged += new EventHandler <ProjectPropertyChangedArgs>(OnProjectPropertyChanged);
        }