public PublishProject(CommonProjectNode node, PublishProjectOptions options) { _statusBar = (IVsStatusbar)CommonPackage.GetGlobalService(typeof(SVsStatusbar)); _statusBar.SetText("Starting publish..."); _node = node; _options = options; }
bool IJProject.Publish(PublishProjectOptions options) { Debug.Assert(false, "Unexpected DefaultJProject.Publish() call"); return false; }
/// <summary> /// Publishes the project as configured by the user in the Publish option page. /// /// If async is true this function begins the publishing and returns w/o waiting for it to complete. No errors are reported. /// /// If async is false this function waits for the publish to finish and raises a PublishFailedException with an /// inner exception indicating the underlying reason for the publishing failure. /// /// Returns true if the publish was succeessfully started, false if the project is not configured for publishing /// </summary> public bool Publish(PublishProjectOptions publishOptions, bool async) { string publishUrl = publishOptions.DestinationUrl ?? GetProjectProperty(CommonConstants.PublishUrl); bool found = false; if (!String.IsNullOrWhiteSpace(publishUrl)) { var url = new Url(publishUrl); var publishers = CommonPackage.ComponentModel.GetExtensions<IProjectPublisher>(); foreach (var publisher in publishers) { if (publisher.Schema == url.Uri.Scheme) { var project = new PublishProject(this, publishOptions); Exception failure = null; var frame = new DispatcherFrame(); var thread = new System.Threading.Thread(x => { try { publisher.PublishFiles(project, url.Uri); project.Done(); frame.Continue = false; } catch (Exception e) { failure = e; project.Failed(e.Message); frame.Continue = false; } }); thread.Start(); found = true; if (!async) { Dispatcher.PushFrame(frame); if (failure != null) { throw new PublishFailedException(String.Format("Publishing of the project {0} failed", Caption), failure); } } break; } } if (!found) { var statusBar = (IVsStatusbar)CommonPackage.GetGlobalService(typeof(SVsStatusbar)); statusBar.SetText(String.Format("Publish failed: Unknown publish scheme ({0})", url.Uri.Scheme)); } } else { var statusBar = (IVsStatusbar)CommonPackage.GetGlobalService(typeof(SVsStatusbar)); statusBar.SetText(String.Format("Project is not configured for publishing in project properties.")); } return found; }