private void button1_Click(object sender, RoutedEventArgs e) { dataGrid.Items.Clear(); DebuggerScriptRunner command = new DebuggerScriptRunner(); try { ThreadHelper.ThrowIfNotOnUIThread(); DTE dte = (DTE)Package.GetGlobalService(typeof(DTE)); var results = command.Execute(scriptBox.Text, dte.Debugger); foreach (var result in results.GetResults()) { result.Evaluate(dte.Debugger); dataGrid.Items.Add(result); } } catch (System.Exception ex) { DebuggerScriptResult result = new DebuggerScriptResult(ex.Message); dataGrid.Items.Add(result); } }
DebuggerScriptResultList RunFunction(string name, DebuggerScriptResultList input, List <string> args, EnvDTE.Debugger debugger) { ThreadHelper.ThrowIfNotOnUIThread(); foreach (Function function in Functions) { if (function.Name == name && function.Args.Count == args.Count) { DebuggerScriptRunner functionRunner = new DebuggerScriptRunner(); functionRunner.AddFunctions(Functions); functionRunner.AddResult("$this", input); for (int i = 0; i < args.Count; ++i) { if (args[i].StartsWith("$")) { functionRunner.AddResult(function.Args[i], SavedResults[args[i]]); } else { DebuggerScriptResultList argResult = new DebuggerScriptResultList(); argResult.AddLiteral(args[i], args[i]); functionRunner.AddResult(function.Args[i], argResult); } } return(functionRunner.Execute(function.Script, debugger)); } } throw new Exception("No matching function: " + name); }