| File: FrameworkUtilities.cs | Web Access |
| Project: src\arcade\src\Microsoft.DotNet.Build.Tasks.Packaging\src\Microsoft.DotNet.Build.Tasks.Packaging.csproj (Microsoft.DotNet.Build.Tasks.Packaging) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using NuGet.Frameworks; using System; using System.Collections.Generic; using System.Linq; namespace Microsoft.DotNet.Build.Tasks.Packaging { public class FrameworkUtilities { private static FrameworkReducer s_reducer; private static FrameworkReducer Reducer { get { if (s_reducer == null) { s_reducer = new FrameworkReducer(); } return s_reducer; } } public static bool IsGenerationMoniker(string dependencyGroup) { NuGetFramework dependencyFramework = NuGetFramework.Parse(dependencyGroup); return IsGenerationMoniker(dependencyFramework); } public static bool IsGenerationMoniker(NuGetFramework dependencyGroup) { return dependencyGroup.Framework == FrameworkConstants.FrameworkIdentifiers.NetPlatform || dependencyGroup.Framework == FrameworkConstants.FrameworkIdentifiers.NetStandard; } public static bool IsPortableMoniker(NuGetFramework nuGetFramework) { return nuGetFramework == null ? false : nuGetFramework.Framework == FrameworkConstants.FrameworkIdentifiers.Portable || nuGetFramework.GetShortFolderName().StartsWith("portable-"); } public static Version Ensure4PartVersion(string versionString) { if (String.IsNullOrEmpty(versionString)) { return new Version(0, 0, 0, 0); } int dashIndex = versionString.IndexOf('-'); if (dashIndex != -1) { versionString = versionString.Substring(0, dashIndex); } return Ensure4PartVersion(new Version(versionString)); } public static Version Ensure4PartVersion(Version version) { if (version.Minor == -1 || version.Build == -1 || version.Revision == -1) { version = new Version(version.Major, version.Minor == -1 ? 0 : version.Minor, version.Build == -1 ? 0 : version.Build, version.Revision == -1 ? 0 : version.Revision); } return version; } public static string[] GetNearest(string[] frameworkNames, string[] frameworks) { List<string> nearestFrameworks = new List<string>(); nearestFrameworks.AddRange(frameworkNames.Where(framework => (GetNearest(framework, frameworks) != null))); foreach (string frameworkName in frameworkNames) { string nearest = GetNearest(frameworkName, frameworks); if (nearest != null) nearestFrameworks.Add(nearest); } return nearestFrameworks.ToArray(); } public static string GetNearest(string frameworkName, string[] frameworks) { NuGetFramework nuGetFrameworkName = NuGetFramework.Parse(frameworkName); var _frameworks = frameworks.Select(s => NuGetFramework.Parse(s)).ToList(); var nearest = Reducer.GetNearest(nuGetFrameworkName, _frameworks); if (nearest != null) { return nearest.GetShortFolderName(); } return null; } public static NuGetFramework GetNearest(NuGetFramework framework, NuGetFramework[] frameworks) { return Reducer.GetNearest(framework, frameworks); } public static IEnumerable<NuGetFramework> ReduceDownwards(IEnumerable<NuGetFramework> frameworks) { return Reducer.ReduceDownwards(frameworks); } public static NuGetFramework ParseNormalized(string framework) { NuGetFramework fx = NuGetFramework.Parse(framework); // remap win8 & win81 since they are synonymous with netcore45 and netcore451 respectively if (fx.Equals(FrameworkConstants.CommonFrameworks.Win8)) { fx = FrameworkConstants.CommonFrameworks.NetCore45; } else if (fx.Equals(FrameworkConstants.CommonFrameworks.Win81)) { fx = FrameworkConstants.CommonFrameworks.NetCore451; } return fx; } } }