diff --git a/Nodejs/Product/Nodejs/NodejsConstants.cs b/Nodejs/Product/Nodejs/NodejsConstants.cs index cf2d2e730..13164e35e 100644 --- a/Nodejs/Product/Nodejs/NodejsConstants.cs +++ b/Nodejs/Product/Nodejs/NodejsConstants.cs @@ -68,6 +68,7 @@ internal class NodejsConstants { internal const string TypeScript = "TypeScript"; internal const string NodeToolsProcessIdEnvironmentVariable = "_NTVS_PID"; + internal const string NodeToolsVsInstallRootEnvironmentVariable = "_NTVS_VSINSTALLROOT"; public static string NtvsLocalAppData { get { diff --git a/Nodejs/Product/Nodejs/NodejsPackage.cs b/Nodejs/Product/Nodejs/NodejsPackage.cs index 12ffca26c..c2422e100 100644 --- a/Nodejs/Product/Nodejs/NodejsPackage.cs +++ b/Nodejs/Product/Nodejs/NodejsPackage.cs @@ -233,6 +233,13 @@ protected override void Initialize() { // The variable is inherited by child processes backing Test Explorer, and is used in // the NTVS test discoverer and test executor to connect back to VS. Environment.SetEnvironmentVariable(NodejsConstants.NodeToolsProcessIdEnvironmentVariable, Process.GetCurrentProcess().Id.ToString()); + +#if DEV15 + var root = Environment.GetEnvironmentVariable("VsInstallRoot"); + if (!string.IsNullOrEmpty(root)) { + Environment.SetEnvironmentVariable(NodejsConstants.NodeToolsVsInstallRootEnvironmentVariable, root); + } +#endif } public static LANGPREFERENCES3[] GetNodejsLanguagePreferencesFromTypeScript(IVsTextManager4 textMgr) { diff --git a/Nodejs/Product/TestAdapter/TestDiscoverer.cs b/Nodejs/Product/TestAdapter/TestDiscoverer.cs index 244529629..da5ba81f1 100644 --- a/Nodejs/Product/TestAdapter/TestDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestDiscoverer.cs @@ -46,7 +46,16 @@ public void DiscoverTests(IEnumerable sources, IDiscoveryContext discove ValidateArg.NotNull(discoverySink, "discoverySink"); ValidateArg.NotNull(logger, "logger"); - using (var buildEngine = new MSBuild.ProjectCollection()) { + var env = new Dictionary(); +#if DEV15 + var root = Environment.GetEnvironmentVariable(NodejsConstants.NodeToolsVsInstallRootEnvironmentVariable); + if (!string.IsNullOrEmpty(root)) { + env["VsInstallRoot"] = root; + env["MSBuildExtensionsPath32"] = Path.Combine(root, "MSBuild"); + } +#endif + + using (var buildEngine = new MSBuild.ProjectCollection(env)) { try { // Load all the test containers passed in (.njsproj msbuild files) foreach (string source in sources) {