private void CurrentSolution_BuildCompleted(object sender, BuildResultEventArgs e) { var solution = sender as Solution; Invoke(new Action(() => { try { if (e.Result.Errors.Length != 0) { _errorList.SetErrors(e.Result.Errors); if (LiteDevelopSettings.Instance.GetValue <bool>("Projects.ShowErrorsWhenBuildFailed")) { _errorList.ShowAndActivate(_mainDockPanel); } } if (!e.Result.Success) { MessageBox.Show(LiteDevelopApplication.Current.MuiProcessor.GetString("MainForm.Messages.BuildFailed"), "LiteDevelop", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { switch (_postBuildAction) { case PostBuildAction.None: // do nothing break; case PostBuildAction.Run: solution.Execute(); break; case PostBuildAction.Debug: // TODO: use more reliable method of selecting debugger. new Thread(() => { _extensionHost.CurrentDebuggerSession = _extensionHost.ExtensionManager.GetPreferredDebugger(solution.GetFirstExecutableProject()).CreateSession(); _extensionHost.CurrentSolution.Debug(_extensionHost.CurrentDebuggerSession); Invoke(new Action(() => _extensionHost.DispatchDebugStarted(EventArgs.Empty))); }).Start(); break; } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { _postBuildAction = PostBuildAction.None; this.UseWaitCursor = false; } })); }
private void runToolStripMenuItem_Click(object sender, EventArgs e) { if (_extensionHost.CurrentDebuggerSession != null) { _extensionHost.CurrentDebuggerSession.Continue(); } else { _postBuildAction = PostBuildAction.Debug; buildSolutionToolStripMenuItem.PerformClick(); } }
private void runWithoutDebuggerToolStripMenuItem_Click(object sender, EventArgs e) { _postBuildAction = PostBuildAction.Run; buildSolutionToolStripMenuItem.PerformClick(); }