diff --git a/VSExtension1/Command1.cs b/VSExtension1/Command1.cs index 44a4c30..6d7f640 100644 --- a/VSExtension1/Command1.cs +++ b/VSExtension1/Command1.cs @@ -1,8 +1,10 @@ -using System.Diagnostics; using Microsoft; +using Microsoft.ClearScript; using Microsoft.VisualStudio.Extensibility; using Microsoft.VisualStudio.Extensibility.Commands; using Microsoft.VisualStudio.Extensibility.Shell; +using System.Diagnostics; + namespace VSExtension1 { @@ -14,15 +16,19 @@ internal class Command1 : Command { private readonly TraceSource logger; + private readonly ScriptEngine _scriptEngine; + /// /// Initializes a new instance of the class. /// /// Trace source instance to utilize. - public Command1(TraceSource traceSource) + public Command1(VisualStudioExtensibility extensibility, TraceSource traceSource, ScriptEngine scriptEngine) : + base(extensibility) { // This optional TraceSource can be used for logging in the command. You can use dependency injection to access // other services here as well. this.logger = Requires.NotNull(traceSource, nameof(traceSource)); + this._scriptEngine = Requires.NotNull(scriptEngine); } /// @@ -45,6 +51,15 @@ public override Task InitializeAsync(CancellationToken cancellationToken) public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken) { await this.Extensibility.Shell().ShowPromptAsync("Hello from an extension!", PromptOptions.OK, cancellationToken); + try + { + this._scriptEngine.Evaluate("command1()"); + } + catch (ScriptEngineException e) + { + await this.Extensibility.Shell().ShowPromptAsync(e.Message, PromptOptions.OK, cancellationToken); + throw; + } } } } diff --git a/VSExtension1/scripts/__init__.js b/VSExtension1/scripts/__init__.js index 46f4328..21cbee6 100644 --- a/VSExtension1/scripts/__init__.js +++ b/VSExtension1/scripts/__init__.js @@ -3,3 +3,7 @@ // This file will be used to initialize the ScriptEngine. extension.Output.WriteLine("Hello from __init__.js") + +globalThis.command1 = function () { + extension.Output.WriteLine("command1 called") +}