├── .gitignore ├── CHANGELOG.md ├── CodeRunner.sln ├── CodeRunner ├── .gitignore ├── AppInsightsClient.cs ├── CodeRunner.csproj ├── Key.snk ├── Properties │ └── AssemblyInfo.cs ├── Resources │ ├── logo.ico │ ├── logo.png │ └── run.png ├── RunCommand.cs ├── RunCommandPackage.cs ├── RunCommandPackage.vsct ├── VSPackage.resx ├── packages.config ├── source.extension.ico └── source.extension.vsixmanifest ├── README.md └── screenshot.png /.gitignore: -------------------------------------------------------------------------------- 1 | packages 2 | 3 | # User files 4 | *.suo 5 | *.user 6 | *.sln.docstates 7 | .vs/ 8 | 9 | # Build results 10 | [Dd]ebug/ 11 | [Rr]elease/ 12 | x64/ 13 | [Bb]in/ 14 | [Oo]bj/ 15 | 16 | # MSTest test Results 17 | [Tt]est[Rr]esult*/ 18 | [Bb]uild[Ll]og.* 19 | 20 | # NCrunch 21 | *.ncrunchsolution 22 | *.ncrunchproject 23 | _NCrunch_WebCompiler -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 (2017-07-09) 2 | * Initial Release -------------------------------------------------------------------------------- /CodeRunner.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26228.4 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeRunner", "CodeRunner\CodeRunner.csproj", "{5B066CD4-E489-492B-B013-1B4164443511}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {5B066CD4-E489-492B-B013-1B4164443511}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {5B066CD4-E489-492B-B013-1B4164443511}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {5B066CD4-E489-492B-B013-1B4164443511}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {5B066CD4-E489-492B-B013-1B4164443511}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /CodeRunner/.gitignore: -------------------------------------------------------------------------------- 1 | packages 2 | 3 | # User files 4 | *.suo 5 | *.user 6 | *.sln.docstates 7 | .vs/ 8 | 9 | # Build results 10 | [Dd]ebug/ 11 | [Rr]elease/ 12 | x64/ 13 | [Bb]in/ 14 | [Oo]bj/ 15 | 16 | # MSTest test Results 17 | [Tt]est[Rr]esult*/ 18 | [Bb]uild[Ll]og.* 19 | 20 | # NCrunch 21 | *.ncrunchsolution 22 | *.ncrunchproject 23 | _NCrunch_WebCompiler -------------------------------------------------------------------------------- /CodeRunner/AppInsightsClient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Microsoft.ApplicationInsights; 7 | 8 | namespace CodeRunner 9 | { 10 | static class AppInsightsClient 11 | { 12 | static readonly TelemetryClient telemetry; 13 | 14 | static AppInsightsClient() 15 | { 16 | telemetry = new TelemetryClient(); 17 | telemetry.InstrumentationKey = "a30bcc73-ded9-46f2-b664-c6ed415bd393"; 18 | } 19 | 20 | public static void trackEvent(string eventName) 21 | { 22 | telemetry.TrackEvent(eventName); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /CodeRunner/CodeRunner.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 15.0 6 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) 7 | 8 | 9 | true 10 | 11 | 12 | true 13 | 14 | 15 | Key.snk 16 | 17 | 18 | 19 | Debug 20 | AnyCPU 21 | 2.0 22 | {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 23 | {5B066CD4-E489-492B-B013-1B4164443511} 24 | Library 25 | Properties 26 | CodeRunner 27 | CodeRunner 28 | v4.6 29 | true 30 | true 31 | true 32 | true 33 | true 34 | false 35 | 36 | 37 | true 38 | full 39 | false 40 | bin\Debug\ 41 | DEBUG;TRACE 42 | prompt 43 | 4 44 | 45 | 46 | pdbonly 47 | true 48 | bin\Release\ 49 | TRACE 50 | prompt 51 | 4 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Menus.ctmenu 65 | 66 | 67 | Designer 68 | 69 | 70 | 71 | 72 | False 73 | 74 | 75 | False 76 | 77 | 78 | False 79 | 80 | 81 | False 82 | 83 | 84 | ..\packages\Microsoft.ApplicationInsights.2.4.0\lib\net46\Microsoft.ApplicationInsights.dll 85 | 86 | 87 | 88 | False 89 | 90 | 91 | ..\packages\Microsoft.VisualStudio.CoreUtility.15.0.26201\lib\net45\Microsoft.VisualStudio.CoreUtility.dll 92 | True 93 | 94 | 95 | ..\packages\Microsoft.VisualStudio.Imaging.15.0.26201\lib\net45\Microsoft.VisualStudio.Imaging.dll 96 | True 97 | 98 | 99 | ..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dll 100 | True 101 | 102 | 103 | ..\packages\Microsoft.VisualStudio.Shell.15.0.15.0.26201\lib\Microsoft.VisualStudio.Shell.15.0.dll 104 | True 105 | 106 | 107 | ..\packages\Microsoft.VisualStudio.Shell.Framework.15.0.26201\lib\net45\Microsoft.VisualStudio.Shell.Framework.dll 108 | True 109 | 110 | 111 | ..\packages\Microsoft.VisualStudio.Shell.Interop.7.10.6071\lib\Microsoft.VisualStudio.Shell.Interop.dll 112 | True 113 | 114 | 115 | True 116 | ..\packages\Microsoft.VisualStudio.Shell.Interop.10.0.10.0.30319\lib\Microsoft.VisualStudio.Shell.Interop.10.0.dll 117 | True 118 | 119 | 120 | True 121 | ..\packages\Microsoft.VisualStudio.Shell.Interop.11.0.11.0.61030\lib\Microsoft.VisualStudio.Shell.Interop.11.0.dll 122 | True 123 | 124 | 125 | True 126 | ..\packages\Microsoft.VisualStudio.Shell.Interop.12.0.12.0.30110\lib\Microsoft.VisualStudio.Shell.Interop.12.0.dll 127 | True 128 | 129 | 130 | ..\packages\Microsoft.VisualStudio.Shell.Interop.8.0.8.0.50727\lib\Microsoft.VisualStudio.Shell.Interop.8.0.dll 131 | True 132 | 133 | 134 | ..\packages\Microsoft.VisualStudio.Shell.Interop.9.0.9.0.30729\lib\Microsoft.VisualStudio.Shell.Interop.9.0.dll 135 | True 136 | 137 | 138 | ..\packages\Microsoft.VisualStudio.TextManager.Interop.7.10.6070\lib\Microsoft.VisualStudio.TextManager.Interop.dll 139 | True 140 | 141 | 142 | ..\packages\Microsoft.VisualStudio.TextManager.Interop.8.0.8.0.50727\lib\Microsoft.VisualStudio.TextManager.Interop.8.0.dll 143 | True 144 | 145 | 146 | ..\packages\Microsoft.VisualStudio.Threading.15.0.240\lib\net45\Microsoft.VisualStudio.Threading.dll 147 | True 148 | 149 | 150 | ..\packages\Microsoft.VisualStudio.Utilities.15.0.26201\lib\net45\Microsoft.VisualStudio.Utilities.dll 151 | True 152 | 153 | 154 | ..\packages\Microsoft.VisualStudio.Validation.15.0.82\lib\net45\Microsoft.VisualStudio.Validation.dll 155 | True 156 | 157 | 158 | False 159 | 160 | 161 | 162 | 163 | 164 | ..\packages\System.Diagnostics.DiagnosticSource.4.4.0\lib\net46\System.Diagnostics.DiagnosticSource.dll 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | true 173 | VSPackage 174 | Designer 175 | 176 | 177 | 178 | 179 | 180 | 181 | Always 182 | true 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 211 | -------------------------------------------------------------------------------- /CodeRunner/Key.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/CodeRunnerVS/db4029c026a3fa0b0e36b7aa7728e42400e4797e/CodeRunner/Key.snk -------------------------------------------------------------------------------- /CodeRunner/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("CodeRunner")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("CodeRunner")] 13 | [assembly: AssemblyCopyright("")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Version information for an assembly consists of the following four values: 23 | // 24 | // Major Version 25 | // Minor Version 26 | // Build Number 27 | // Revision 28 | // 29 | // You can specify all the values or you can default the Build and Revision Numbers 30 | // by using the '*' as shown below: 31 | // [assembly: AssemblyVersion("1.0.*")] 32 | [assembly: AssemblyVersion("1.0.0.0")] 33 | [assembly: AssemblyFileVersion("1.0.0.0")] 34 | -------------------------------------------------------------------------------- /CodeRunner/Resources/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/CodeRunnerVS/db4029c026a3fa0b0e36b7aa7728e42400e4797e/CodeRunner/Resources/logo.ico -------------------------------------------------------------------------------- /CodeRunner/Resources/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/CodeRunnerVS/db4029c026a3fa0b0e36b7aa7728e42400e4797e/CodeRunner/Resources/logo.png -------------------------------------------------------------------------------- /CodeRunner/Resources/run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/CodeRunnerVS/db4029c026a3fa0b0e36b7aa7728e42400e4797e/CodeRunner/Resources/run.png -------------------------------------------------------------------------------- /CodeRunner/RunCommand.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) Company. All rights reserved. 4 | // 5 | //------------------------------------------------------------------------------ 6 | 7 | using System; 8 | using System.Collections.Generic; 9 | using System.ComponentModel.Design; 10 | using System.Diagnostics; 11 | using System.Globalization; 12 | using System.IO; 13 | using EnvDTE; 14 | using EnvDTE80; 15 | using Microsoft.VisualStudio.Shell; 16 | using Microsoft.VisualStudio.Shell.Interop; 17 | 18 | namespace CodeRunner 19 | { 20 | /// 21 | /// Command handler 22 | /// 23 | internal sealed class RunCommand 24 | { 25 | /// 26 | /// Command ID. 27 | /// 28 | public const int CommandId = 0x0100; 29 | 30 | /// 31 | /// Command menu group (command set GUID). 32 | /// 33 | public static readonly Guid CommandSet = new Guid("b62d762c-0f40-4249-94cb-7a09ca719bda"); 34 | 35 | /// 36 | /// VS Package that provides this command, not null. 37 | /// 38 | private readonly Package package; 39 | 40 | /// 41 | /// Initializes a new instance of the class. 42 | /// Adds our command handlers for menu (commands must exist in the command table file) 43 | /// 44 | /// Owner package, not null. 45 | private RunCommand(Package package) 46 | { 47 | if (package == null) 48 | { 49 | throw new ArgumentNullException("package"); 50 | } 51 | 52 | this.package = package; 53 | 54 | OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; 55 | if (commandService != null) 56 | { 57 | var menuCommandID = new CommandID(CommandSet, CommandId); 58 | var menuItem = new MenuCommand(this.Run, menuCommandID); 59 | commandService.AddCommand(menuItem); 60 | } 61 | } 62 | 63 | /// 64 | /// Gets the instance of the command. 65 | /// 66 | public static RunCommand Instance 67 | { 68 | get; 69 | private set; 70 | } 71 | 72 | /// 73 | /// Gets the service provider from the owner package. 74 | /// 75 | private IServiceProvider ServiceProvider 76 | { 77 | get 78 | { 79 | return this.package; 80 | } 81 | } 82 | 83 | /// 84 | /// Initializes the singleton instance of the command. 85 | /// 86 | /// Owner package, not null. 87 | public static void Initialize(Package package) 88 | { 89 | Instance = new RunCommand(package); 90 | } 91 | 92 | /// 93 | /// This function is the callback used to execute the command when the menu item is clicked. 94 | /// See the constructor to see how the menu item is associated with this function using 95 | /// OleMenuCommandService service and MenuCommand class. 96 | /// 97 | /// Event sender. 98 | /// Event args. 99 | private void Run(object sender, EventArgs e) 100 | { 101 | var dte = ServiceProvider.GetService(typeof(DTE)) as DTE2; 102 | string fileName = null; 103 | 104 | if (dte.ActiveWindow.Type == vsWindowType.vsWindowTypeDocument) 105 | { 106 | fileName = dte.ActiveDocument.FullName; 107 | } 108 | else if (dte.SelectedItems.Count == 1) 109 | { 110 | fileName = dte.SelectedItems?.Item(1)?.ProjectItem?.FileNames[0]; 111 | } 112 | 113 | if (string.IsNullOrEmpty(fileName)) 114 | return; 115 | 116 | string ext = Path.GetExtension(fileName); 117 | 118 | AppInsightsClient.trackEvent(ext); 119 | 120 | var extMapping = new Dictionary() 121 | { 122 | {".js", "node"}, 123 | {".php", "php"}, 124 | {".py", "python"}, 125 | {".pl", "perl"}, 126 | {".rb", "ruby"}, 127 | {".go", "go run"}, 128 | {".lua", "lua"}, 129 | {".groovy", "groovy"}, 130 | {".scala", "scala"}, 131 | {".vbs", "cscript //Nologo"}, 132 | {".ps1", "powershell -ExecutionPolicy ByPass -File"} 133 | }; 134 | 135 | if (!extMapping.ContainsKey(ext)) 136 | { 137 | VsShellUtilities.ShowMessageBox( 138 | this.ServiceProvider, 139 | $"The file type \"{ext}\" is not supported.", 140 | "File type not supported", 141 | OLEMSGICON.OLEMSGICON_INFO, 142 | OLEMSGBUTTON.OLEMSGBUTTON_OK, 143 | OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); 144 | return; 145 | } 146 | 147 | var start = new ProcessStartInfo("cmd", $"/k {extMapping[ext]} {Path.GetFileName(fileName)}") 148 | { 149 | WorkingDirectory = Path.GetDirectoryName(fileName), 150 | UseShellExecute = false, 151 | CreateNoWindow = false, 152 | }; 153 | 154 | using (var proc = System.Diagnostics.Process.Start(start)) 155 | { 156 | proc.WaitForExit(); 157 | } 158 | } 159 | } 160 | } 161 | -------------------------------------------------------------------------------- /CodeRunner/RunCommandPackage.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) Company. All rights reserved. 4 | // 5 | //------------------------------------------------------------------------------ 6 | 7 | using System; 8 | using System.ComponentModel.Design; 9 | using System.Diagnostics; 10 | using System.Diagnostics.CodeAnalysis; 11 | using System.Globalization; 12 | using System.Runtime.InteropServices; 13 | using Microsoft.VisualStudio; 14 | using Microsoft.VisualStudio.OLE.Interop; 15 | using Microsoft.VisualStudio.Shell; 16 | using Microsoft.VisualStudio.Shell.Interop; 17 | using Microsoft.Win32; 18 | 19 | namespace CodeRunner 20 | { 21 | /// 22 | /// This is the class that implements the package exposed by this assembly. 23 | /// 24 | /// 25 | /// 26 | /// The minimum requirement for a class to be considered a valid package for Visual Studio 27 | /// is to implement the IVsPackage interface and register itself with the shell. 28 | /// This package uses the helper classes defined inside the Managed Package Framework (MPF) 29 | /// to do it: it derives from the Package class that provides the implementation of the 30 | /// IVsPackage interface and uses the registration attributes defined in the framework to 31 | /// register itself and its components with the shell. These attributes tell the pkgdef creation 32 | /// utility what data to put into .pkgdef file. 33 | /// 34 | /// 35 | /// To get loaded into VS, the package must be referred by <Asset Type="Microsoft.VisualStudio.VsPackage" ...> in .vsixmanifest file. 36 | /// 37 | /// 38 | [PackageRegistration(UseManagedResourcesOnly = true)] 39 | [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About 40 | [ProvideMenuResource("Menus.ctmenu", 1)] 41 | [Guid(RunCommandPackage.PackageGuidString)] 42 | [SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "pkgdef, VS and vsixmanifest are valid VS terms")] 43 | public sealed class RunCommandPackage : Package 44 | { 45 | /// 46 | /// RunCommandPackage GUID string. 47 | /// 48 | public const string PackageGuidString = "c4a9522f-53d1-478b-9bd2-47d51e5c92be"; 49 | 50 | /// 51 | /// Initializes a new instance of the class. 52 | /// 53 | public RunCommandPackage() 54 | { 55 | // Inside this method you can place any initialization code that does not require 56 | // any Visual Studio service because at this point the package object is created but 57 | // not sited yet inside Visual Studio environment. The place to do all the other 58 | // initialization is the Initialize method. 59 | } 60 | 61 | #region Package Members 62 | 63 | /// 64 | /// Initialization of the package; this method is called right after the package is sited, so this is the place 65 | /// where you can put all the initialization code that rely on services provided by VisualStudio. 66 | /// 67 | protected override void Initialize() 68 | { 69 | RunCommand.Initialize(this); 70 | base.Initialize(); 71 | } 72 | 73 | #endregion 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /CodeRunner/RunCommandPackage.vsct: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 33 | 34 | 38 | 39 | 40 | 41 | 42 | 43 | 45 | 46 | 53 | 60 | 61 | 62 | 63 | 64 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /CodeRunner/VSPackage.resx: -------------------------------------------------------------------------------- 1 |  2 | 12 | 13 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | text/microsoft-resx 120 | 121 | 122 | 2.0 123 | 124 | 125 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 126 | 127 | 128 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 129 | 130 | 131 | 132 | RunCommand Extension 133 | 134 | 135 | RunCommand Visual Studio Extension Detailed Info 136 | 137 | 138 | Resources\logo.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 139 | 140 | -------------------------------------------------------------------------------- /CodeRunner/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /CodeRunner/source.extension.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/CodeRunnerVS/db4029c026a3fa0b0e36b7aa7728e42400e4797e/CodeRunner/source.extension.ico -------------------------------------------------------------------------------- /CodeRunner/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Code Runner 6 | Run code for JavaScript, PHP, Python, Perl, Ruby, Go, Lua, Groovy, Scala, VBScript, PowerShell 7 | https://github.com/formulahendry/CodeRunnerVS 8 | Resources\logo.png 9 | Resources\logo.png 10 | Node, JavaScript, PHP, Python, Perl, Ruby, Go, Lua, Groovy, Scala, VBScript, PowerShell 11 | 12 | 13 | 14 | 15 | amd64 16 | 17 | 18 | 19 | amd64 20 | 21 | 22 | 23 | amd64 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Code Runner for Visual Studio 2 | 3 | Run code for JavaScript, PHP, Python, Perl, Ruby, Go, Lua, Groovy, Scala, VBScript, PowerShell. 4 | 5 | ## Credits 6 | 7 | * [Code Runner for VS Code](https://github.com/formulahendry/vscode-code-runner) 8 | * [Node Executor](https://github.com/madskristensen/NodeExecutor) -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/CodeRunnerVS/db4029c026a3fa0b0e36b7aa7728e42400e4797e/screenshot.png --------------------------------------------------------------------------------