public async System.Threading.Tasks.Task CancelBuildAsync(IBuildInformationModel buildInformationModel) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); if (buildInformationModel.BuildAction == BuildAction.Clean) { return; } if (buildInformationModel.CurrentBuildState != BuildState.InProgress || _buildCancelled || _buildCancelledInternally) { return; } try { // We need to create a separate task here because of some weird things that are going on // when calling ExecuteCommand directly. Directly calling it leads to a freeze. No need // for that! var dte = _serviceProvider.GetService <DTE>(); dte.ExecuteCommand(CancelBuildCommand); _buildCancelledInternally = true; } catch (Exception ex) { _logger.Error(ex, "Cancel build failed."); } }
private string GetBuildDoneExtraMessage(IBuildInformationModel buildInformationModel) { if (buildInformationModel.BuildStartTime == null || buildInformationModel.BuildFinishTime == null || !_packageSettingsProvider.Settings.BuildMessagesSettings.ShowExtraMessage) { return(string.Empty); } var timeSpan = buildInformationModel.BuildFinishTime.Value.Subtract(buildInformationModel.BuildStartTime.Value); return(GetExtraTimePartString(timeSpan)); }
public string GetBuildBeginExtraMessage(IBuildInformationModel buildInformationModel) { if (buildInformationModel.BuildStartTime == null || !_packageSettingsProvider.Settings.BuildMessagesSettings.ShowExtraMessage || _packageSettingsProvider.Settings.BuildMessagesSettings.ExtraMessageDelay < 0) { return(string.Empty); } var timeSpan = DateTime.Now.Subtract(buildInformationModel.BuildStartTime.Value); if (timeSpan.TotalSeconds > _packageSettingsProvider.Settings.BuildMessagesSettings.ExtraMessageDelay) { return(GetExtraTimePartString(timeSpan)); } return(string.Empty); }
private string GetMainString(IBuildInformationModel buildInformationModel) { var unitName = GetUnitName(buildInformationModel.BuildScope); var actionName = GetActionName(buildInformationModel.BuildAction); var beginAtString = GetBeginAtString(buildInformationModel.BuildAction); var timeString = GetTimeString(buildInformationModel.BuildStartTime); string mainString; switch (_packageSettingsProvider.Settings.BuildMessagesSettings.MajorMessageFormat) { case BuildMajorMessageFormat.Entire: mainString = string.Format(Resources.BuildBeginStateLabelTemplate_Default, actionName, unitName, beginAtString, timeString); break; case BuildMajorMessageFormat.Unnamed: mainString = string.Format(Resources.BuildBeginStateLabelTemplate_ShortForm, actionName, beginAtString, timeString); break; default: throw new ArgumentOutOfRangeException(nameof(_packageSettingsProvider.Settings.BuildMessagesSettings.MajorMessageFormat)); } return(mainString); }
public string GetBuildBeginMajorMessage(IBuildInformationModel buildInformationModel) { var mainString = GetMainString(buildInformationModel); return(string.Format(_packageSettingsProvider.Settings.BuildMessagesSettings.BuildBeginMajorMessageStringFormat, mainString)); }
private string GetBuildDoneMajorMessage(IBuildInformationModel buildInformationModel) { var buildAction = buildInformationModel.BuildAction; var buildScope = buildInformationModel.BuildScope; if (buildInformationModel.BuildFinishTime == null) { throw new InvalidOperationException(); } string timeString; try { timeString = buildInformationModel.BuildFinishTime.Value.ToString(_packageSettingsProvider.Settings.BuildMessagesSettings.DateTimeFormat); } catch (FormatException) { timeString = Resources.InvalidTimeStringFormat; } string unitName; switch (buildScope) { case BuildScope.Solution: unitName = Resources.BuildScopeSolution_UnitName; //if (_labelSettings.ShowSolutionName) //unitName += string.Format(Resources.BuildScopeSolution_SolutionNameTemplate, solutionItem.Name); break; case BuildScope.Batch: unitName = Resources.BuildScopeBatch_UnitName; break; case BuildScope.Project: unitName = Resources.BuildScopeProject_UnitName; if (_packageSettingsProvider.Settings.BuildMessagesSettings.ShowProjectName) { // Todo this is probably wrong. maybe we should go the extra mile and check which projects are selected? //var uniqProjName = solutionItem.Projects.LastOrDefault(x => x.State == ProjectState.BuildDone)?.UniqueName; //var projItem = solutionItem.Projects.FirstOrDefault(item => item.UniqueName == uniqProjName); //unitName += string.Format(Resources.BuildScopeProject_ProjectNameTemplate, projItem.Name); } break; default: throw new ArgumentOutOfRangeException(nameof(buildScope)); } var actionName = GetActionName(buildInformationModel.BuildAction); var resultName = GetResultName(buildInformationModel.ResultState); string mainString; switch (_packageSettingsProvider.Settings.BuildMessagesSettings.MajorMessageFormat) { case BuildMajorMessageFormat.Entire: mainString = string.Format(Resources.BuildDoneStateLabelTemplate_Default, actionName, unitName, resultName, timeString); break; case BuildMajorMessageFormat.Unnamed: mainString = string.Format(Resources.BuildDoneStateLabelTemplate_ShortForm, actionName, resultName, timeString); break; default: throw new ArgumentOutOfRangeException(nameof(_packageSettingsProvider.Settings.BuildMessagesSettings.MajorMessageFormat)); } string resultMainString = string.Format(_packageSettingsProvider.Settings.BuildMessagesSettings.BuildDoneMajorMessageStringFormat, mainString); return(resultMainString); }
public string GetBuildDoneMessage(IBuildInformationModel buildInformationModel) { return(GetBuildDoneMajorMessage(buildInformationModel) + GetBuildDoneExtraMessage(buildInformationModel)); }