| File: def\IFrameworkNameProvider.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Frameworks\NuGet.Frameworks.csproj (NuGet.Frameworks) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; namespace NuGet.Frameworks { public interface IFrameworkNameProvider { /// <summary> /// Returns the official framework identifier for an alias or short name. /// </summary> bool TryGetIdentifier(string identifierShortName, [NotNullWhen(true)] out string? identifier); /// <summary> /// Gives the short name used for folders in NuGet /// </summary> bool TryGetShortIdentifier(string identifier, [NotNullWhen(true)] out string? identifierShortName); /// <summary> /// Get the official profile name from the short name. /// </summary> bool TryGetProfile(string frameworkIdentifier, string profileShortName, [NotNullWhen(true)] out string? profile); /// <summary> /// Returns the shortened version of the profile name. /// </summary> bool TryGetShortProfile(string frameworkIdentifier, string profile, [NotNullWhen(true)] out string? profileShortName); /// <summary> /// Parses a version string using single digit rules if no dots exist /// </summary> bool TryGetVersion(string versionString, [NotNullWhen(true)] out Version? version); /// <summary> /// Parses a version string. If no dots exist, all digits are treated /// as semver-major, instead of inserting dots. /// </summary> bool TryGetPlatformVersion(string versionString, [NotNullWhen(true)] out Version? version); /// <summary> /// Returns a shortened version. If all digits are single digits no dots will be used. /// </summary> string GetVersionString(string framework, Version version); /// <summary> /// Tries to parse the portable profile number out of a profile. /// </summary> bool TryGetPortableProfileNumber(string profile, out int profileNumber); /// <summary> /// Looks up the portable profile number based on the framework list. /// </summary> bool TryGetPortableProfile(IEnumerable<NuGetFramework> supportedFrameworks, out int profileNumber); /// <summary> /// Returns the frameworks based on a portable profile number. /// </summary> bool TryGetPortableFrameworks(int profile, [NotNullWhen(true)] out IEnumerable<NuGetFramework>? frameworks); /// <summary> /// Returns the frameworks based on a portable profile number. /// </summary> bool TryGetPortableFrameworks(int profile, bool includeOptional, [NotNullWhen(true)] out IEnumerable<NuGetFramework>? frameworks); /// <summary> /// Returns the frameworks based on a profile string. /// Profile can be either the number in format: Profile=7, or the shortened NuGet version: net45+win8 /// </summary> bool TryGetPortableFrameworks(string profile, bool includeOptional, [NotNullWhen(true)] out IEnumerable<NuGetFramework>? frameworks); /// <summary> /// Parses a shortened portable framework profile list. /// Ex: net45+win8 /// </summary> bool TryGetPortableFrameworks(string shortPortableProfiles, [NotNullWhen(true)] out IEnumerable<NuGetFramework>? frameworks); /// <summary> /// Returns ranges of frameworks that are known to be supported by the given portable profile number. /// Ex: Profile7 -> netstandard1.1 /// </summary> bool TryGetPortableCompatibilityMappings(int profile, [NotNullWhen(true)] out IEnumerable<FrameworkRange>? supportedFrameworkRanges); /// <summary> /// Returns a list of all possible substitutions where the framework name /// have equivalents. /// Ex: sl3 -> wp8 /// </summary> bool TryGetEquivalentFrameworks(NuGetFramework framework, [NotNullWhen(true)] out IEnumerable<NuGetFramework>? frameworks); /// <summary> /// Gives all substitutions for a framework range. /// </summary> bool TryGetEquivalentFrameworks(FrameworkRange range, [NotNullWhen(true)] out IEnumerable<NuGetFramework>? frameworks); /// <summary> /// Returns ranges of frameworks that are known to be supported by the given framework. /// Ex: net45 -> native /// </summary> bool TryGetCompatibilityMappings(NuGetFramework framework, [NotNullWhen(true)] out IEnumerable<FrameworkRange>? supportedFrameworkRanges); /// <summary> /// Returns all sub sets of the given framework. /// Ex: .NETFramework -> .NETCore /// These will have the same version, but a different framework /// </summary> bool TryGetSubSetFrameworks(string frameworkIdentifier, [NotNullWhen(true)] out IEnumerable<string>? subSetFrameworkIdentifiers); /// <summary> /// The ascending order of frameworks should be based on the following ordered groups: /// /// 1. Non-package-based frameworks in <see cref="IFrameworkMappings.NonPackageBasedFrameworkPrecedence"/>. /// 2. Other non-package-based frameworks. /// 3. Package-based frameworks in <see cref="IFrameworkMappings.PackageBasedFrameworkPrecedence"/>. /// 4. Other package-based frameworks. /// /// For group #1 and #3, the order within the group is based on the order of the respective precedence list. /// For group #2 and #4, the order is the original order in the incoming list. This should later be made /// consistent between different input orderings by using the <see cref="NuGetFrameworkSorter"/>. /// </summary> /// <remarks>netcore50 is a special case since netcore451 is not packages based, but netcore50 is. /// This sort will treat all versions of netcore as non-packages based.</remarks> int CompareFrameworks(NuGetFramework? x, NuGetFramework? y); /// <summary> /// Used to pick between two equivalent frameworks. This is meant to favor the more human-readable /// framework. Note that this comparison does not validate that the provided frameworks are indeed /// equivalent (e.g. with /// <see cref="TryGetEquivalentFrameworks(NuGetFramework, out IEnumerable{NuGetFramework})"/>). /// </summary> int CompareEquivalentFrameworks(NuGetFramework? x, NuGetFramework? y); /// <summary> /// Returns folder short names rewrites. /// Ex: dotnet50 -> dotnet /// </summary> NuGetFramework GetShortNameReplacement(NuGetFramework framework); /// <summary> /// Returns full name rewrites. /// Ex: .NETPlatform,Version=v0.0 -> .NETPlatform,Version=v5.0 /// </summary> NuGetFramework GetFullNameReplacement(NuGetFramework framework); /// <summary> /// Returns all versions of .NETStandard in ascending order. /// </summary> IEnumerable<NuGetFramework> GetNetStandardVersions(); /// <summary> /// Returns a list of frameworks that could be compatible with .NETStandard. /// </summary> IEnumerable<NuGetFramework> GetCompatibleCandidates(); } }