public IProgressEvents Run()
{
Debug.Assert(this.host.ActiveSection != null, "Expect the section to be attached at least until this method returns");
Debug.Assert(this.projectSystem.GetSolutionProjects().Any(), "Expecting projects in solution");
IProgressEvents progress = ProgressStepRunner.StartAsync(this.host,
this.host.ActiveSection.ProgressHost,
controller => this.CreateWorkflowSteps(controller));
this.DebugOnly_MonitorProgress(progress);
return progress;
}