Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Permalink
dev
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
// 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.Linq;
namespace NuGet.Frameworks
{
public sealed class DefaultFrameworkMappings : IFrameworkMappings
{
private static Lazy<KeyValuePair<string, string>[]> IdentifierSynonymsLazy = new Lazy<KeyValuePair<string, string>[]>(() =>
{
return new[]{
// .NET
new KeyValuePair<string, string>("NETFramework", FrameworkConstants.FrameworkIdentifiers.Net),
new KeyValuePair<string, string>(".NET", FrameworkConstants.FrameworkIdentifiers.Net),
// .NET Core
new KeyValuePair<string, string>("NETCore", FrameworkConstants.FrameworkIdentifiers.NetCore),
// Portable
new KeyValuePair<string, string>("NETPortable", FrameworkConstants.FrameworkIdentifiers.Portable),
// ASP
new KeyValuePair<string, string>("asp.net", FrameworkConstants.FrameworkIdentifiers.AspNet),
new KeyValuePair<string, string>("asp.netcore", FrameworkConstants.FrameworkIdentifiers.AspNetCore),
// Mono/Xamarin
new KeyValuePair<string, string>("Xamarin.PlayStationThree", FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation3),
new KeyValuePair<string, string>("XamarinPlayStationThree", FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation3),
new KeyValuePair<string, string>("Xamarin.PlayStationFour", FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation4),
new KeyValuePair<string, string>("XamarinPlayStationFour", FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation4),
new KeyValuePair<string, string>("XamarinPlayStationVita", FrameworkConstants.FrameworkIdentifiers.XamarinPlayStationVita),
};
});
public IEnumerable<KeyValuePair<string, string>> IdentifierSynonyms
{
get
{
return IdentifierSynonymsLazy.Value;
}
}
private static readonly Lazy<KeyValuePair<string, string>[]> IdentifierShortNamesLazy = new Lazy<KeyValuePair<string, string>[]>(() =>
{
return new[]
{
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.NetCoreApp, "netcoreapp"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.NetStandardApp, "netstandardapp"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.NetStandard, "netstandard"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.NetPlatform, "dotnet"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.Net, "net"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.NetMicro, "netmf"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.Silverlight, "sl"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.Portable, "portable"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.WindowsPhone, "wp"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.WindowsPhoneApp, "wpa"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.Windows, "win"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.AspNet, "aspnet"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.AspNetCore, "aspnetcore"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.Native, "native"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.MonoAndroid, "monoandroid"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.MonoTouch, "monotouch"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.MonoMac, "monomac"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinIOs, "xamarinios"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinMac, "xamarinmac"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation3, "xamarinpsthree"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation4, "xamarinpsfour"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinPlayStationVita, "xamarinpsvita"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinWatchOS, "xamarinwatchos"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinTVOS, "xamarintvos"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinXbox360, "xamarinxboxthreesixty"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinXboxOne, "xamarinxboxone"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.Dnx, "dnx"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.DnxCore, "dnxcore"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.NetCore, "netcore"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.WinRT, "winrt"), // legacy
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.UAP, "uap"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.Tizen, "tizen"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.NanoFramework, "netnano"),
};
});
public IEnumerable<KeyValuePair<string, string>> IdentifierShortNames
{
get
{
return IdentifierShortNamesLazy.Value;
}
}
private static readonly Lazy<FrameworkSpecificMapping[]> ProfileShortNamesLazy = new Lazy<FrameworkSpecificMapping[]>(() =>
{
return new[]
{
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.Net, "Client", "Client"),
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.Net, "CF", "CompactFramework"),
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.Net, "Full", string.Empty),
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.Silverlight, "WP", "WindowsPhone"),
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.Silverlight, "WP71", "WindowsPhone71"),
};
});
public IEnumerable<FrameworkSpecificMapping> ProfileShortNames
{
get
{
return ProfileShortNamesLazy.Value;
}
}
private static readonly Lazy<KeyValuePair<NuGetFramework, NuGetFramework>[]> EquivalentFrameworksLazy = new Lazy<KeyValuePair<NuGetFramework, NuGetFramework>[]>(() =>
{
return new[]
{
// UAP 0.0 <-> UAP 10.0
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.UAP, FrameworkConstants.EmptyVersion),
FrameworkConstants.CommonFrameworks.UAP10),
// win <-> win8
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Windows, FrameworkConstants.EmptyVersion),
FrameworkConstants.CommonFrameworks.Win8),
// win8 <-> netcore45
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.Win8,
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.NetCore, new Version(4, 5, 0, 0))),
// netcore45 <-> winrt45
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.NetCore, new Version(4, 5, 0, 0)),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WinRT, new Version(4, 5, 0, 0))),
// netcore <-> netcore45
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.NetCore, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.NetCore, new Version(4, 5, 0, 0))),
// winrt <-> winrt45
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WinRT, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WinRT, new Version(4, 5, 0, 0))),
// win81 <-> netcore451
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.Win81,
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.NetCore, new Version(4, 5, 1, 0))),
// wp <-> wp7
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WindowsPhone, FrameworkConstants.EmptyVersion),
FrameworkConstants.CommonFrameworks.WP7),
// wp7 <-> f:sl3-wp
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.WP7,
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Silverlight, new Version(3, 0, 0, 0), "WindowsPhone")),
// wp71 <-> f:sl4-wp71
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WindowsPhone, new Version(7, 1, 0, 0)),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Silverlight, new Version(4, 0, 0, 0), "WindowsPhone71")),
// wp8 <-> f:sl8-wp
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.WP8,
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Silverlight, new Version(8, 0, 0, 0), "WindowsPhone")),
// wp81 <-> f:sl81-wp
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.WP81,
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Silverlight, new Version(8, 1, 0, 0), "WindowsPhone")),
// wpa <-> wpa81
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WindowsPhoneApp, FrameworkConstants.EmptyVersion),
FrameworkConstants.CommonFrameworks.WPA81),
// tizen <-> tizen3
new KeyValuePair<NuGetFramework, NuGetFramework>(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Tizen, FrameworkConstants.EmptyVersion),
FrameworkConstants.CommonFrameworks.Tizen3),
// dnx <-> dnx45
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.Dnx,
FrameworkConstants.CommonFrameworks.Dnx45),
// dnxcore <-> dnxcore50
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.DnxCore,
FrameworkConstants.CommonFrameworks.DnxCore50),
// dotnet <-> dotnet50
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.DotNet,
FrameworkConstants.CommonFrameworks.DotNet50),
// TODO: remove these rules post-RC
// aspnet <-> aspnet50
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.AspNet,
FrameworkConstants.CommonFrameworks.AspNet50),
// aspnetcore <-> aspnetcore50
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.AspNetCore,
FrameworkConstants.CommonFrameworks.AspNetCore50),
// dnx451 <-> aspnet50
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.Dnx45,
FrameworkConstants.CommonFrameworks.AspNet50),
// dnxcore50 <-> aspnetcore50
new KeyValuePair<NuGetFramework, NuGetFramework>(
FrameworkConstants.CommonFrameworks.DnxCore50,
FrameworkConstants.CommonFrameworks.AspNetCore50),
};
});
public IEnumerable<KeyValuePair<NuGetFramework, NuGetFramework>> EquivalentFrameworks
{
get
{
return EquivalentFrameworksLazy.Value;
}
}
private static readonly Lazy<FrameworkSpecificMapping[]> EquivalentProfilesLazy = new Lazy<FrameworkSpecificMapping[]>(() =>
{
return new[]
{
// The client profile, for the purposes of NuGet, is the same as the full framework
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.Net, "Client", string.Empty),
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.Net, "Full", string.Empty),
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.Silverlight, "WindowsPhone71", "WindowsPhone"),
new FrameworkSpecificMapping(FrameworkConstants.FrameworkIdentifiers.WindowsPhone, "WindowsPhone71", "WindowsPhone"),
};
});
public IEnumerable<FrameworkSpecificMapping> EquivalentProfiles
{
get
{
return EquivalentProfilesLazy.Value;
}
}
private static readonly Lazy<KeyValuePair<string, string>[]> SubSetFrameworksLazy = new Lazy<KeyValuePair<string, string>[]>(() =>
{
return new[]
{
// .NET is a subset of DNX
new KeyValuePair<string, string>(
FrameworkConstants.FrameworkIdentifiers.Net,
FrameworkConstants.FrameworkIdentifiers.Dnx),
// NetPlatform is a subset of DNXCore
new KeyValuePair<string, string>(
FrameworkConstants.FrameworkIdentifiers.NetPlatform,
FrameworkConstants.FrameworkIdentifiers.DnxCore),
// NetStandard is a subset of NetStandardApp
new KeyValuePair<string, string>(
FrameworkConstants.FrameworkIdentifiers.NetStandard,
FrameworkConstants.FrameworkIdentifiers.NetStandardApp)
};
});
public IEnumerable<KeyValuePair<string, string>> SubSetFrameworks
{
get
{
return SubSetFrameworksLazy.Value;
}
}
private static readonly Lazy<OneWayCompatibilityMappingEntry[]> CompatibilityMappingsLazy = new Lazy<OneWayCompatibilityMappingEntry[]>(() =>
{
return new[]
{
// UAP supports Win81
new OneWayCompatibilityMappingEntry(new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.UAP, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.UAP, FrameworkConstants.MaxVersion)),
new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Windows, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Windows, new Version(8, 1, 0, 0)))),
// UAP supports WPA81
new OneWayCompatibilityMappingEntry(new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.UAP, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.UAP, FrameworkConstants.MaxVersion)),
new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WindowsPhoneApp, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WindowsPhoneApp, new Version(8, 1, 0, 0)))),
// UAP supports NetCore50
new OneWayCompatibilityMappingEntry(new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.UAP, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.UAP, FrameworkConstants.MaxVersion)),
new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.NetCore, FrameworkConstants.Version5),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.NetCore, FrameworkConstants.Version5))),
// Win projects support WinRT
new OneWayCompatibilityMappingEntry(new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Windows, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Windows, FrameworkConstants.MaxVersion)),
new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WinRT, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WinRT, new Version(4, 5, 0, 0)))),
// Tizen3 projects support NETStandard1.6
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.Tizen3,
FrameworkConstants.CommonFrameworks.NetStandard16),
// Tizen4 projects support NETStandard2.0
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.Tizen4,
FrameworkConstants.CommonFrameworks.NetStandard20),
// Tizen6 projects support NETStandard2.1
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.Tizen6,
FrameworkConstants.CommonFrameworks.NetStandard21),
// UAP 10.0.15064.0 projects support NETStandard2.0
CreateStandardMapping(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.UAP, new Version(10, 0, 15064, 0)),
FrameworkConstants.CommonFrameworks.NetStandard20),
// NetCoreApp1.0 projects support NetStandard1.6
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.NetCoreApp10,
FrameworkConstants.CommonFrameworks.NetStandard16),
// NetCoreApp1.1 projects support NetStandard1.7
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.NetCoreApp11,
FrameworkConstants.CommonFrameworks.NetStandard17),
// NetCoreApp2.0 projects support NetStandard2.0
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.NetCoreApp20,
FrameworkConstants.CommonFrameworks.NetStandard20),
// NetCoreApp3.0 projects support NetStandard2.1
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.NetCoreApp30,
FrameworkConstants.CommonFrameworks.NetStandard21),
// net463 projects support NetStandard2.0
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.Net463,
FrameworkConstants.CommonFrameworks.NetStandard20)
}
.Concat(new[]
{
// dnxcore50 -> dotnet5.6, netstandard1.5
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.DnxCore,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard15),
// uap -> dotnet5.5, netstandard1.4
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.UAP,
FrameworkConstants.CommonFrameworks.DotNet55,
FrameworkConstants.CommonFrameworks.NetStandard14),
// netcore50 -> dotnet5.5, netstandard1.4
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.NetCore50,
FrameworkConstants.CommonFrameworks.DotNet55,
FrameworkConstants.CommonFrameworks.NetStandard14),
// wpa81 -> dotnet5.3, netstandard1.2
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.WPA81,
FrameworkConstants.CommonFrameworks.DotNet53,
FrameworkConstants.CommonFrameworks.NetStandard12),
// wp8, wp81 -> dotnet5.1, netstandard1.0
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.WP8,
FrameworkConstants.CommonFrameworks.DotNet51,
FrameworkConstants.CommonFrameworks.NetStandard10),
// net45 -> dotnet5.2, netstandard1.1
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.Net45,
FrameworkConstants.CommonFrameworks.DotNet52,
FrameworkConstants.CommonFrameworks.NetStandard11),
// net451 -> dotnet5.3, netstandard1.2
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.Net451,
FrameworkConstants.CommonFrameworks.DotNet53,
FrameworkConstants.CommonFrameworks.NetStandard12),
// net46 -> dotnet5.4, netstandard1.3
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.Net46,
FrameworkConstants.CommonFrameworks.DotNet54,
FrameworkConstants.CommonFrameworks.NetStandard13),
// net461 -> dotnet5.5, netstandard2.0
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.Net461,
FrameworkConstants.CommonFrameworks.DotNet55,
FrameworkConstants.CommonFrameworks.NetStandard20),
// net462 -> dotnet5.6, netstandard2.0
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.Net462,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard20),
// netcore45 -> dotnet5.2, netstandard1.1
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.NetCore45,
FrameworkConstants.CommonFrameworks.DotNet52,
FrameworkConstants.CommonFrameworks.NetStandard11),
// netcore451 -> dotnet5.3, netstandard1.2
CreateGenerationAndStandardMapping(
FrameworkConstants.CommonFrameworks.NetCore451,
FrameworkConstants.CommonFrameworks.DotNet53,
FrameworkConstants.CommonFrameworks.NetStandard12),
// xamarin frameworks
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.MonoAndroid,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard21),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.MonoMac,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard21),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.MonoTouch,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard21),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinIOs,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard21),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinMac,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard21),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation3,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard20),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation4,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard20),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinPlayStationVita,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard20),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinXbox360,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard20),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinXboxOne,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard20),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinTVOS,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard21),
CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinWatchOS,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard21)
}.SelectMany(mappings => mappings))
.ToArray();
});
public IEnumerable<OneWayCompatibilityMappingEntry> CompatibilityMappings
{
get
{
return CompatibilityMappingsLazy.Value;
}
}
private static OneWayCompatibilityMappingEntry CreateGenerationMapping(
NuGetFramework framework,
NuGetFramework netPlatform)
{
return new OneWayCompatibilityMappingEntry(
new FrameworkRange(
framework,
new NuGetFramework(framework.Framework, FrameworkConstants.MaxVersion)),
new FrameworkRange(
FrameworkConstants.CommonFrameworks.DotNet,
netPlatform));
}
private static OneWayCompatibilityMappingEntry CreateStandardMapping(
NuGetFramework framework,
NuGetFramework netPlatform)
{
return new OneWayCompatibilityMappingEntry(
new FrameworkRange(
framework,
new NuGetFramework(framework.Framework, FrameworkConstants.MaxVersion)),
new FrameworkRange(
FrameworkConstants.CommonFrameworks.NetStandard10,
netPlatform));
}
private static IEnumerable<OneWayCompatibilityMappingEntry> CreateGenerationAndStandardMapping(
NuGetFramework framework,
NuGetFramework netPlatform,
NuGetFramework netStandard)
{
yield return CreateGenerationMapping(framework, netPlatform);
yield return CreateStandardMapping(framework, netStandard);
}
private static IEnumerable<OneWayCompatibilityMappingEntry> CreateGenerationAndStandardMappingForAllVersions(
string framework,
NuGetFramework netPlatform,
NuGetFramework netStandard)
{
var lowestFramework = new NuGetFramework(framework, FrameworkConstants.EmptyVersion);
return CreateGenerationAndStandardMapping(lowestFramework, netPlatform, netStandard);
}
private static readonly Lazy<string[]> NonPackageBasedFrameworkPrecedenceLazy = new Lazy<string[]>(() =>
{
return new[]
{
FrameworkConstants.FrameworkIdentifiers.Net,
FrameworkConstants.FrameworkIdentifiers.NetCore,
FrameworkConstants.FrameworkIdentifiers.Windows,
FrameworkConstants.FrameworkIdentifiers.WindowsPhoneApp
};
});
public IEnumerable<string> NonPackageBasedFrameworkPrecedence
{
get
{
return NonPackageBasedFrameworkPrecedenceLazy.Value;
}
}
private static readonly Lazy<string[]> PackageBasedFrameworkPrecedenceLazy = new Lazy<string[]>(() =>
{
return new[]
{
FrameworkConstants.FrameworkIdentifiers.NetCoreApp,
FrameworkConstants.FrameworkIdentifiers.NetStandardApp,
FrameworkConstants.FrameworkIdentifiers.NetStandard,
FrameworkConstants.FrameworkIdentifiers.NetPlatform
};
});
public IEnumerable<string> PackageBasedFrameworkPrecedence
{
get
{
return PackageBasedFrameworkPrecedenceLazy.Value;
}
}
private static readonly Lazy<string[]> EquivalentFrameworkPrecedenceLazy = new Lazy<string[]>(() =>
{
return new[]
{
FrameworkConstants.FrameworkIdentifiers.Windows,
FrameworkConstants.FrameworkIdentifiers.NetCore,
FrameworkConstants.FrameworkIdentifiers.WinRT,
FrameworkConstants.FrameworkIdentifiers.WindowsPhone,
FrameworkConstants.FrameworkIdentifiers.Silverlight,
FrameworkConstants.FrameworkIdentifiers.DnxCore,
FrameworkConstants.FrameworkIdentifiers.AspNetCore,
FrameworkConstants.FrameworkIdentifiers.Dnx,
FrameworkConstants.FrameworkIdentifiers.AspNet
};
});
public IEnumerable<string> EquivalentFrameworkPrecedence
{
get
{
return EquivalentFrameworkPrecedenceLazy.Value;
}
}
private static readonly Lazy<KeyValuePair<NuGetFramework, NuGetFramework>[]> ShortNameReplacementsLazy = new Lazy<KeyValuePair<NuGetFramework, NuGetFramework>[]>(() =>
{
return new[]
{
new KeyValuePair<NuGetFramework, NuGetFramework>(FrameworkConstants.CommonFrameworks.DotNet50, FrameworkConstants.CommonFrameworks.DotNet)
};
});
public IEnumerable<KeyValuePair<NuGetFramework, NuGetFramework>> ShortNameReplacements
{
get
{
return ShortNameReplacementsLazy.Value;
}
}
private static readonly Lazy<KeyValuePair<NuGetFramework, NuGetFramework>[]> FullNameReplacementsLazy = new Lazy<KeyValuePair<NuGetFramework, NuGetFramework>[]>(() =>
{
return new[]
{
new KeyValuePair<NuGetFramework, NuGetFramework>(FrameworkConstants.CommonFrameworks.DotNet, FrameworkConstants.CommonFrameworks.DotNet50)
};
});
public IEnumerable<KeyValuePair<NuGetFramework, NuGetFramework>> FullNameReplacements
{
get
{
return FullNameReplacementsLazy.Value;
}
}
private static readonly Lazy<IFrameworkMappings> InstanceLazy = new Lazy<IFrameworkMappings>(() => new DefaultFrameworkMappings());
/// <summary>
/// Singleton instance of the default framework mappings.
/// </summary>
public static IFrameworkMappings Instance
{
get
{
return InstanceLazy.Value;
}
}
}
}