| File: Commands\Test\MTP\Terminal\TargetFrameworkParser.cs | Web Access |
| Project: src\sdk\src\Cli\dotnet\dotnet.csproj (dotnet) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Globalization; namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; internal static class TargetFrameworkParser { public static string? GetShortTargetFramework(string? frameworkDescription) { if (frameworkDescription == null) { return null; } // https://learn.microsoft.com/dotnet/api/system.runtime.interopservices.runtimeinformation.frameworkdescription string netFramework = ".NET Framework"; if (frameworkDescription.StartsWith(netFramework, ignoreCase: false, CultureInfo.InvariantCulture)) { // .NET Framework 4.7.2 if (frameworkDescription.Length < netFramework.Length + 6) { return frameworkDescription; } char major = frameworkDescription[netFramework.Length + 1]; char minor = frameworkDescription[netFramework.Length + 3]; char patch = frameworkDescription[netFramework.Length + 5]; if (major == '4' && minor == '6' && patch == '2') { return "net462"; } else if (major == '4' && minor == '7' && patch == '1') { return "net471"; } else if (major == '4' && minor == '7' && patch == '2') { return "net472"; } else if (major == '4' && minor == '8' && patch == '1') { return "net481"; } else { // Just return the first 2 numbers. return $"net{major}{minor}"; } } string netCore = ".NET Core"; if (frameworkDescription.StartsWith(netCore, ignoreCase: false, CultureInfo.InvariantCulture)) { // .NET Core 3.1 return frameworkDescription.Length >= netCore.Length + 4 ? $"netcoreapp{frameworkDescription[netCore.Length + 1]}.{frameworkDescription[netCore.Length + 3]}" : frameworkDescription; } string net = ".NET"; if (frameworkDescription.StartsWith(net, ignoreCase: false, CultureInfo.InvariantCulture)) { int firstDotInVersion = frameworkDescription.IndexOf('.', net.Length + 1); return firstDotInVersion < 1 ? frameworkDescription : $"net{frameworkDescription.Substring(net.Length + 1, firstDotInVersion - net.Length - 1)}.{frameworkDescription[firstDotInVersion + 1]}"; } return frameworkDescription; } }