From df16f13cc474a2c0a499cd13bab1e946d8c4e0c1 Mon Sep 17 00:00:00 2001 From: ejohnson Date: Fri, 26 Mar 2021 16:33:04 -0500 Subject: [PATCH] Update TargetFrameworkHelper.cs Fix for #388 when there are multiple project template files in the path. --- src/MSBuild.Conversion.SDK/TargetFrameworkHelper.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/MSBuild.Conversion.SDK/TargetFrameworkHelper.cs b/src/MSBuild.Conversion.SDK/TargetFrameworkHelper.cs index 7c2046d57..3f128de72 100644 --- a/src/MSBuild.Conversion.SDK/TargetFrameworkHelper.cs +++ b/src/MSBuild.Conversion.SDK/TargetFrameworkHelper.cs @@ -56,8 +56,17 @@ public static string FindHighestInstalledTargetFramework(bool usePreviewSDK) } } + var templateFiles = Directory.EnumerateFiles(templatePath, "microsoft.dotnet.common.projecttemplates.*.nupkg", SearchOption.TopDirectoryOnly); + // get the highest version of the files found, based on NuGetVersion + var templateNugetPackagePath = templateFiles.OrderByDescending(p => + { + var versionStr = Path.GetFileNameWithoutExtension(p).Substring("microsoft.dotnet.common.projecttemplates.".Length); + //first two numbers in the version are part of the name of the package, not its nuget version. + versionStr = string.Join(".", versionStr.Split(".").Skip(2)); + var version = NuGetVersion.Parse(versionStr); + return (!usePreviewSDK && version.IsPrerelease) ? new NuGetVersion(0, 0, 0) : version; + }).First(); // upzip the common project templates into memory - var templateNugetPackagePath = Directory.EnumerateFiles(templatePath, "microsoft.dotnet.common.projecttemplates.*.nupkg", SearchOption.TopDirectoryOnly).Single(); using var templateNugetPackageFile = File.OpenRead(templateNugetPackagePath); using var templateNugetPackage = new ZipArchive(templateNugetPackageFile, ZipArchiveMode.Read); var templatesJsonFile = templateNugetPackage.Entries