Skip to content

Commit f3a6d40

Browse files
authored
Merge pull request #1582 from minestarks/tsversion
Stamp latest supported TypeScript version into new projects
2 parents a537762 + c7b14b6 commit f3a6d40

File tree

16 files changed

+96
-3
lines changed

16 files changed

+96
-3
lines changed

Nodejs/Product/Nodejs/Nodejs.csproj

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,21 @@
7373
<HintPath>..\..\packages\Microsoft.VisualStudio.Setup.Configuration.Interop.1.8.24\lib\net35\Microsoft.VisualStudio.Setup.Configuration.Interop.dll</HintPath>
7474
<EmbedInteropTypes>True</EmbedInteropTypes>
7575
</Reference>
76+
<Reference Include="Microsoft.VisualStudio.Shell.Interop.11.0, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
77+
<EmbedInteropTypes>True</EmbedInteropTypes>
78+
</Reference>
79+
<Reference Include="Microsoft.VisualStudio.Shell.Interop.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
80+
<EmbedInteropTypes>True</EmbedInteropTypes>
81+
</Reference>
7682
<Reference Include="Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
7783
<EmbedInteropTypes>True</EmbedInteropTypes>
7884
</Reference>
85+
<Reference Include="Microsoft.VisualStudio.Shell.Interop.15.0.DesignTime, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
86+
<EmbedInteropTypes>True</EmbedInteropTypes>
87+
</Reference>
88+
<Reference Include="Microsoft.VisualStudio.Shell.Interop.15.3.DesignTime, Version=15.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
89+
<EmbedInteropTypes>True</EmbedInteropTypes>
90+
</Reference>
7991
<Reference Include="Microsoft.VisualStudio.Utilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
8092
</ItemGroup>
8193
<ItemGroup>
@@ -149,8 +161,6 @@
149161
<Reference Include="Microsoft.VisualStudio.Shell.Interop.8.0" />
150162
<Reference Include="Microsoft.VisualStudio.Shell.Interop.9.0" />
151163
<Reference Include="Microsoft.VisualStudio.Shell.Interop.10.0" />
152-
<Reference Include="Microsoft.VisualStudio.Shell.Interop.11.0" />
153-
<Reference Include="Microsoft.VisualStudio.Shell.Interop.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
154164
<Reference Include="Microsoft.VisualStudio.TemplateWizardInterface, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
155165
<Reference Include="Microsoft.VisualStudio.Text.Data, Version=$(VSTarget).0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
156166
<Reference Include="Microsoft.VisualStudio.Text.Logic, Version=$(VSTarget).0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using System.Xml;
1313
using Microsoft.NodejsTools.Telemetry;
1414
using Microsoft.VisualStudio.Language.Intellisense;
15+
using Microsoft.VisualStudio.Shell.Interop;
1516
using Microsoft.VisualStudioTools;
1617

1718
namespace Microsoft.NodejsTools.Project.ImportWizard
@@ -256,9 +257,10 @@ public Task<string> CreateRequestedProjectAsync()
256257
Guid projectGuid;
257258
try
258259
{
260+
string typeScriptVersion = GetLatestAvailableTypeScriptVersionFromSetup();
259261
using (var writer = GetDefaultWriter(projectPath))
260262
{
261-
WriteProjectXml(writer, projectPath, sourcePath, filters, startupFile, true, out projectGuid);
263+
WriteProjectXml(writer, projectPath, sourcePath, filters, startupFile, typeScriptVersion, true, out projectGuid);
262264
}
263265
NodejsPackage.Instance?.TelemetryLogger.LogProjectImported(projectGuid);
264266
success = true;
@@ -304,6 +306,7 @@ internal static void WriteProjectXml(
304306
string sourcePath,
305307
string filters,
306308
string startupFile,
309+
string typeScriptVersion,
307310
bool excludeNodeModules,
308311
out Guid projectGuid
309312
)
@@ -346,6 +349,10 @@ out Guid projectGuid
346349
writer.WriteElementString("TypeScriptSourceMap", "true");
347350
writer.WriteElementString("TypeScriptModuleKind", "CommonJS");
348351
writer.WriteElementString("EnableTypeScript", "true");
352+
if (typeScriptVersion != null)
353+
{
354+
writer.WriteElementString("TypeScriptToolsVersion", typeScriptVersion);
355+
}
349356
}
350357

351358
writer.WriteStartElement("VisualStudioVersion");
@@ -520,6 +527,35 @@ private static IEnumerable<string> EnumerateAllFiles(string source, string filte
520527

521528
return res;
522529
}
530+
531+
private const string tsSdkSetupPackageIdPrefix = "Microsoft.VisualStudio.Component.TypeScript.";
532+
533+
private static string GetLatestAvailableTypeScriptVersionFromSetup()
534+
{
535+
var setupCompositionService = (IVsSetupCompositionService)CommonPackage.GetGlobalService(typeof(SVsSetupCompositionService));
536+
537+
// Populate the package status
538+
uint count = 0;
539+
uint sizeNeeded = 0;
540+
IVsSetupPackageInfo[] packages = null;
541+
setupCompositionService.GetSetupPackagesInfo(count, packages, out sizeNeeded);
542+
543+
if (sizeNeeded > 0)
544+
{
545+
packages = new IVsSetupPackageInfo[sizeNeeded];
546+
count = sizeNeeded;
547+
setupCompositionService.GetSetupPackagesInfo(count, packages, out sizeNeeded);
548+
549+
return packages.Where(p => (__VsSetupPackageState)p.CurrentState == __VsSetupPackageState.INSTALL_PACKAGE_PRESENT)
550+
.Select(p => p.PackageId)
551+
.Where(p => p.StartsWith(tsSdkSetupPackageIdPrefix))
552+
.Select(p => p.Substring(tsSdkSetupPackageIdPrefix.Length, p.Length - tsSdkSetupPackageIdPrefix.Length))
553+
.OrderByDescending(v => v)
554+
.First();
555+
}
556+
557+
return "";
558+
}
523559
}
524560
}
525561

Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureExpressApp/TypeScriptExpressApp.njsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<NodejsPort>1337</NodejsPort>
2121
<TypeScriptSourceMap>true</TypeScriptSourceMap>
2222
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
23+
<TypeScriptToolsVersion>$typescriptversion$</TypeScriptToolsVersion>
2324
<EnableTypeScript>true</EnableTypeScript>
2425
<StartWebBrowser>true</StartWebBrowser>
2526
</PropertyGroup>

Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureNodejsWorker/Worker.njsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<NodejsPort>1337</NodejsPort>
2222
<TypeScriptSourceMap>true</TypeScriptSourceMap>
2323
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
24+
<TypeScriptToolsVersion>$typescriptversion$</TypeScriptToolsVersion>
2425
<EnableTypeScript>true</EnableTypeScript>
2526
<StartWebBrowser>false</StartWebBrowser>
2627
</PropertyGroup>

Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureNodejsWorkerRole/Worker.njsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<NodejsPort>1337</NodejsPort>
2222
<TypeScriptSourceMap>true</TypeScriptSourceMap>
2323
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
24+
<TypeScriptToolsVersion>$typescriptversion$</TypeScriptToolsVersion>
2425
<EnableTypeScript>true</EnableTypeScript>
2526
<StartWebBrowser>false</StartWebBrowser>
2627
</PropertyGroup>

Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureWebApp/TypeScriptWebApp.njsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<NodejsPort>1337</NodejsPort>
2222
<TypeScriptSourceMap>true</TypeScriptSourceMap>
2323
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
24+
<TypeScriptToolsVersion>$typescriptversion$</TypeScriptToolsVersion>
2425
<EnableTypeScript>true</EnableTypeScript>
2526
<StartWebBrowser>true</StartWebBrowser>
2627
</PropertyGroup>

Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureWebRole/TypeScriptWebApp.njsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<NodejsPort>1337</NodejsPort>
2222
<TypeScriptSourceMap>true</TypeScriptSourceMap>
2323
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
24+
<TypeScriptToolsVersion>$typescriptversion$</TypeScriptToolsVersion>
2425
<EnableTypeScript>true</EnableTypeScript>
2526
<StartWebBrowser>true</StartWebBrowser>
2627
</PropertyGroup>

Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptConsoleApp/NodejsConsoleApp.njsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<ProjectTypeGuids>{3AF33F2E-1136-4D97-BBB7-1795711AC8B8};{9092AA53-FB77-4645-B42D-1CCCA6BD08BD}</ProjectTypeGuids>
2121
<TypeScriptSourceMap>true</TypeScriptSourceMap>
2222
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
23+
<TypeScriptToolsVersion>$typescriptversion$</TypeScriptToolsVersion>
2324
<EnableTypeScript>true</EnableTypeScript>
2425
<StartWebBrowser>false</StartWebBrowser>
2526
</PropertyGroup>

Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptExpressApp/ExpressApp.njsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<NodejsPort>1337</NodejsPort>
2121
<TypeScriptSourceMap>true</TypeScriptSourceMap>
2222
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
23+
<TypeScriptToolsVersion>$typescriptversion$</TypeScriptToolsVersion>
2324
<EnableTypeScript>true</EnableTypeScript>
2425
<StartWebBrowser>true</StartWebBrowser>
2526
</PropertyGroup>

Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptFromExistingCode/FromExistingCode.njsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<NodejsPort>1337</NodejsPort>
2121
<TypeScriptSourceMap>true</TypeScriptSourceMap>
2222
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
23+
<TypeScriptToolsVersion>$typescriptversion$</TypeScriptToolsVersion>
2324
<EnableTypeScript>true</EnableTypeScript>
2425
</PropertyGroup>
2526

0 commit comments

Comments
 (0)