private async void BuildJobWithDefaultParameters(JenkinsJob job)
        {
            try
            {
                await JenkinsJobManager.BuildJobWithDefaultParameters(job, SelectedJenkinsServer.Url);

                ForceReload(false);
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
            }
        }
        public async Task BuildJob(string jobUrl, string solutionUrl)
        {
            try
            {
                await JenkinsJobManager.BuildJob(jobUrl, solutionUrl);
            }
            catch (WebException ex)
            {
                Logger.Log(ex);

                var resp = ex.Response as HttpWebResponse;
                if (resp != null)
                {
                    Logger.LogInfo(string.Format(Resources.WebExceptionMessage, "Build job", resp.StatusDescription));
                }
                else
                {
                    Logger.LogInfo(string.Format(Resources.WebExceptionMessage, "Build job", ex.Status));
                }
            }
        }
        private async void HandleShowLatestLog(JenkinsJob job)
        {
            if (job.LatestBuild == null)
            {
                Logger.LogInfo("No build available to show log from.");
                return;
            }

            try
            {
                string fileName = await JenkinsJobManager.GetLatestLog(job.Url, SelectedJenkinsServer);

                if (!string.IsNullOrWhiteSpace(fileName))
                {
                    ServicesContainer.VisualStudioFileManager.OpenFile(fileName);
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
            }
        }
        private async void CancelBuild(JenkinsJob j)
        {
            try
            {
                await JenkinsJobManager.CancelBuild(j, SelectedJenkinsServer.Url);

                ForceReload(false);
            }
            catch (WebException ex)
            {
                Logger.Log(ex);

                var resp = ex.Response as HttpWebResponse;
                if (resp != null)
                {
                    Logger.LogInfo(string.Format(Resources.WebExceptionMessage, "Cancel job", resp.StatusDescription));
                }
                else
                {
                    Logger.LogInfo(string.Format(Resources.WebExceptionMessage, "Cancel job", ex.Status));
                }
            }
        }
        private async void DequeueBuild(JenkinsJob j)
        {
            if (j.QueueItem == null)
            {
                return;
            }

            try
            {
                await JenkinsJobManager.DequeueJob(j.QueueItem, SelectedJenkinsServer.Url);

                ForceReload(false);
            }
            catch (WebException ex)
            {
                var resp = ex.Response as HttpWebResponse;
                if (resp != null)
                {
                    if (resp.StatusCode == HttpStatusCode.NotFound)
                    {
                        // Known bug (https://issues.jenkins-ci.org/browse/JENKINS-21311), dequeue actually worked but
                        // returns a 404 result.
                        ForceReload(false);
                        return;
                    }

                    Logger.LogInfo(string.Format(Resources.WebExceptionMessage, "Dequeue job", resp.StatusDescription));
                }
                else
                {
                    Logger.LogInfo(string.Format(Resources.WebExceptionMessage, "Dequeue job", ex.Status));
                }

                Logger.Log(ex);
            }
        }