Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }