runcommands.cs
来自「全功能c#编译器」· CS 代码 · 共 399 行 · 第 1/2 页
CS
399 行
public RunHelper(bool debug)
{
this.debug = debug;
}
void RunThread()
{
lock (Compile.CompileLockObject) {
TaskService taskService = (TaskService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(TaskService));
IProjectService projectService = (IProjectService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IProjectService));
IStatusBarService statusBarService = (IStatusBarService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IStatusBarService));
try {
statusBarService.SetMessage("${res:MainWindow.StatusBar.ExecutingMessage}");
if (projectService.CurrentOpenCombine != null) {
try {
if (projectService.NeedsCompiling) {
projectService.CompileCombine();
}
projectService.OnBeforeStartProject();
projectService.CurrentOpenCombine.Execute(debug);
} catch (NoStartupCombineDefinedException) {
IMessageService messageService =(IMessageService)ServiceManager.Services.GetService(typeof(IMessageService));
messageService.ShowError("Cannot execute Run command, cannot find startup project.\nPlease define a startup project for the combine in the combine properties.");
}
} else {
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null) {
new Compile().RunWithWait();
if (!taskService.SomethingWentWrong) {
LanguageBindingService languageBindingService = (LanguageBindingService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(LanguageBindingService));
ILanguageBinding binding = languageBindingService.GetBindingPerFileName(WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.FileName);
if (binding != null) {
projectService.OnBeforeStartProject();
binding.Execute(WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.FileName, debug);
} else {
IMessageService messageService =(IMessageService)ServiceManager.Services.GetService(typeof(IMessageService));
messageService.ShowError("No runnable executable found.");
}
}
}
}
} catch (Exception e) {
IMessageService messageService =(IMessageService)ServiceManager.Services.GetService(typeof(IMessageService));
messageService.ShowError(e, "Error while running");
}
statusBarService.SetMessage("${res:MainWindow.StatusBar.ReadyMessage}");
}
}
public void StartThread()
{
Thread t = new Thread(new ThreadStart(RunThread));
t.IsBackground = true;
t.Start();
}
}
public class RunCommand : AbstractMenuCommand
{
public override void Run()
{
IProjectService projectService = (IProjectService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IProjectService));
new RunHelper(true).StartThread();
}
}
public class RunWithoutDebuggingCommand : AbstractMenuCommand
{
public override void Run()
{
IProjectService projectService = (IProjectService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IProjectService));
new RunHelper(false).StartThread();
}
}
public class ContinueDebuggingCommand : AbstractMenuCommand
{
public override void Run()
{
DebuggerService debuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService));
debuggerService.Continue();
}
}
public class BreakDebuggingCommand : AbstractMenuCommand
{
public override void Run()
{
DebuggerService debuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService));
debuggerService.Break();
}
}
public class StopDebuggingCommand : AbstractMenuCommand
{
public override void Run()
{
DebuggerService debuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService));
debuggerService.Stop();
}
}
public class StepDebuggingCommand : AbstractMenuCommand
{
public override void Run()
{
DebuggerService debuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService));
debuggerService.Step(false);
}
}
public class StepIntoDebuggingCommand : AbstractMenuCommand
{
public override void Run()
{
DebuggerService debuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService));
debuggerService.Step(true);
}
}
public class StepOutDebuggingCommand : AbstractMenuCommand
{
public override void Run()
{
DebuggerService debuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService));
debuggerService.StepOut();
}
}
public class BuildCurrentProject : AbstractMenuCommand
{
public override void Run()
{
lock (Compile.CompileLockObject) {
TaskService taskService = (TaskService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(TaskService));
IProjectService projectService = (IProjectService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IProjectService));
ResourceService resourceService = (ResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
IStatusBarService statusBarService = (IStatusBarService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IStatusBarService));
if (projectService.CurrentSelectedProject != null) {
try {
StringParserService stringParserService = (StringParserService)ServiceManager.Services.GetService(typeof(StringParserService));
CombineEntry.BuildProjects = 0;
CombineEntry.BuildErrors = 0;
taskService.CompilerOutput = String.Empty;
taskService.Tasks.Clear();
taskService.NotifyTaskChange();
projectService.OnStartBuild();
projectService.CompileProject(projectService.CurrentSelectedProject);
// taskService.CompilerOutput += resourceService.GetString("MainWindow.CompilerMessages.DoneLabel") + "\n\n" +
// stringParserService.Parse("${res:MainWindow.CompilerMessages.StatsOutput}", new string[,] { {"SUCCEEDED", CombineEntry.BuildProjects.ToString()}, {"FAILED", CombineEntry.BuildErrors.ToString()} }) + "\n";
} catch (Exception e) {
IMessageService messageService =(IMessageService)ServiceManager.Services.GetService(typeof(IMessageService));
messageService.ShowError(e, "Error while compiling project " + projectService.CurrentSelectedProject.Name);
}
projectService.OnEndBuild();
}
Compile.ShowAfterCompileStatus();
}
}
}
public class RebuildCurrentProject : AbstractMenuCommand
{
public override void Run()
{
lock (Compile.CompileLockObject) {
TaskService taskService = (TaskService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(TaskService));
IProjectService projectService = (IProjectService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IProjectService));
ResourceService resourceService = (ResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
IStatusBarService statusBarService = (IStatusBarService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IStatusBarService));
if (projectService.CurrentSelectedProject != null) {
try {
StringParserService stringParserService = (StringParserService)ServiceManager.Services.GetService(typeof(StringParserService));
CombineEntry.BuildProjects = 0;
CombineEntry.BuildErrors = 0;
taskService.CompilerOutput = String.Empty;
taskService.Tasks.Clear();
taskService.NotifyTaskChange();
projectService.OnStartBuild();
projectService.RecompileProject(projectService.CurrentSelectedProject);
// taskService.CompilerOutput += resourceService.GetString("MainWindow.CompilerMessages.DoneLabel") + "\n\n" +
// stringParserService.Parse("${res:MainWindow.CompilerMessages.StatsOutput}", new string[,] { {"SUCCEEDED", CombineEntry.BuildProjects.ToString()}, {"FAILED", CombineEntry.BuildErrors.ToString()} }) + "\n";
} catch (Exception e) {
IMessageService messageService =(IMessageService)ServiceManager.Services.GetService(typeof(IMessageService));
messageService.ShowError(e, "Error while compiling project " + projectService.CurrentSelectedProject.Name);
}
projectService.OnEndBuild();
}
Compile.ShowAfterCompileStatus();
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?