Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions src/Paket.Core/Versioning/FrameworkHandling.fs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,63 @@ type DotNetStandardVersion =
| "2.1" -> Some(DotNetStandardVersion.V2_1)
| _ -> None

[<RequireQualifiedAccess>]
type Net5WindowsVersion =
| V7_0
| V8_0
| V10_0_17763_0
| V10_0_18362_0
| V10_0_19041_0
override this.ToString() =
match this with
| V7_0 -> "7.0"
| V8_0 -> "8.0"
| V10_0_17763_0 -> "10.0.17763.0"
| V10_0_18362_0 -> "10.0.18362.0"
| V10_0_19041_0 -> "10.0.19041.0"

static member TryParse s =
match s with
| "7.0" -> Some Net5WindowsVersion.V7_0
| "8.0" -> Some Net5WindowsVersion.V8_0
| "10.0.17763.0" -> Some Net5WindowsVersion.V10_0_17763_0
| "10.0.18362.0" -> Some Net5WindowsVersion.V10_0_18362_0
| "10.0.19041.0" -> Some Net5WindowsVersion.V10_0_19041_0
| _ -> None

[<RequireQualifiedAccess>]
type Net5Os =
| Android
| IOs
| MacOs
| TvOs
| WatchOs
| Windows
| WindowsWithVersion of Net5WindowsVersion
override this.ToString() =
match this with
| Android -> "android"
| IOs -> "ios"
| MacOs -> "macos"
| TvOs -> "tvos"
| WatchOs -> "watchos"
| Windows -> "windows"
| WindowsWithVersion v -> "windows" + v.ToString()

static member TryParse s =
match s with
| "android" -> Some Net5Os.Android
| "ios" -> Some Net5Os.Android
| "macos" -> Some Net5Os.Android
| "tvos" -> Some Net5Os.Android
| "watchos" -> Some Net5Os.Android
| "windows" -> Some Net5Os.Android
| _ when s.StartsWith("windows") ->
let versionPart = s.Substring ("windows".Length)
Net5WindowsVersion.TryParse(versionPart)
|> Option.map Net5Os.WindowsWithVersion
| _ -> None

[<RequireQualifiedAccess>]
/// The Framework version.
// Each time a new version is added NuGetPackageCache.CurrentCacheVersion should be bumped.
Expand All @@ -79,6 +136,7 @@ type FrameworkVersion =
| V4_7_2
| V4_8
| V5
| V5WithOs of Net5Os
override this.ToString() =
match this with
| V1 -> "v1.0"
Expand All @@ -101,6 +159,7 @@ type FrameworkVersion =
| V4_7_2 -> "v4.7.2"
| V4_8 -> "v4.8"
| V5 -> "v5.0"
| V5WithOs o-> "v5.0-" + o.ToString()

member this.ShortString() =
match this with
Expand All @@ -124,6 +183,7 @@ type FrameworkVersion =
| FrameworkVersion.V4_7_2 -> "472"
| FrameworkVersion.V4_8 -> "48"
| FrameworkVersion.V5 -> "5.0"
| FrameworkVersion.V5WithOs o -> "5.0-" + o.ToString()

static member TryParse s =
match s with
Expand All @@ -147,6 +207,10 @@ type FrameworkVersion =
| "4.7.2" -> Some FrameworkVersion.V4_7_2
| "4.8" -> Some FrameworkVersion.V4_8
| "5.0" | "5" -> Some FrameworkVersion.V5
| _ when s.StartsWith("5.0") ->
let osPart = s.Substring ("5.0".Length)
Net5Os.TryParse(osPart)
|> Option.map FrameworkVersion.V5WithOs
| _ -> None

[<RequireQualifiedAccess>]
Expand Down Expand Up @@ -683,6 +747,8 @@ type FrameworkIdentifier =
| DotNetFramework FrameworkVersion.V4_7_2 -> [ DotNetFramework FrameworkVersion.V4_7_1 ]
| DotNetFramework FrameworkVersion.V4_8 -> [ DotNetFramework FrameworkVersion.V4_7_2 ]
| DotNetFramework FrameworkVersion.V5 -> [ DotNetCoreApp DotNetCoreAppVersion.V3_1; DotNetStandard DotNetStandardVersion.V2_1 ]
| DotNetFramework (FrameworkVersion.V5WithOs(Net5Os.WindowsWithVersion(_))) -> [ DotNetFramework (FrameworkVersion.V5WithOs(Net5Os.Windows)) ]
| DotNetFramework (FrameworkVersion.V5WithOs(_)) -> [ DotNetFramework FrameworkVersion.V5 ]
| DotNetStandard DotNetStandardVersion.V1_0 -> [ ]
| DotNetStandard DotNetStandardVersion.V1_1 -> [ DotNetStandard DotNetStandardVersion.V1_0 ]
| DotNetStandard DotNetStandardVersion.V1_2 -> [ DotNetStandard DotNetStandardVersion.V1_1 ]
Expand Down Expand Up @@ -1196,6 +1262,17 @@ module KnownTargetProfiles =
FrameworkVersion.V4_7_2
FrameworkVersion.V4_8
FrameworkVersion.V5
FrameworkVersion.V5WithOs(Net5Os.Android)
FrameworkVersion.V5WithOs(Net5Os.IOs)
FrameworkVersion.V5WithOs(Net5Os.MacOs)
FrameworkVersion.V5WithOs(Net5Os.TvOs)
FrameworkVersion.V5WithOs(Net5Os.WatchOs)
FrameworkVersion.V5WithOs(Net5Os.Windows)
FrameworkVersion.V5WithOs(Net5Os.WindowsWithVersion(Net5WindowsVersion.V7_0))
FrameworkVersion.V5WithOs(Net5Os.WindowsWithVersion(Net5WindowsVersion.V8_0))
FrameworkVersion.V5WithOs(Net5Os.WindowsWithVersion(Net5WindowsVersion.V10_0_17763_0))
FrameworkVersion.V5WithOs(Net5Os.WindowsWithVersion(Net5WindowsVersion.V10_0_18362_0))
FrameworkVersion.V5WithOs(Net5Os.WindowsWithVersion(Net5WindowsVersion.V10_0_19041_0))
]

let DotNetFrameworkIdentifiers =
Expand Down
2 changes: 1 addition & 1 deletion tests/Paket.Tests/InstallModel/Xml/RxXaml.fs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ let expected = """
</Reference>
</ItemGroup>
</When>
<When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid' And ($(TargetFrameworkVersion) == 'v10.0' Or $(TargetFrameworkVersion) == 'v7.0' Or $(TargetFrameworkVersion) == 'v7.1' Or $(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1' Or $(TargetFrameworkVersion) == 'v9.0')) Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v5.0') Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v2.1' Or $(TargetFrameworkVersion) == 'v2.2' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.1')) Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v2.1')) Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkIdentifier) == 'Xamarin.tvOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.watchOS')">
<When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid' And ($(TargetFrameworkVersion) == 'v10.0' Or $(TargetFrameworkVersion) == 'v7.0' Or $(TargetFrameworkVersion) == 'v7.1' Or $(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1' Or $(TargetFrameworkVersion) == 'v9.0')) Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v5.0' Or $(TargetFrameworkVersion) == 'v5.0-android' Or $(TargetFrameworkVersion) == 'v5.0-ios' Or $(TargetFrameworkVersion) == 'v5.0-macos' Or $(TargetFrameworkVersion) == 'v5.0-tvos' Or $(TargetFrameworkVersion) == 'v5.0-watchos' Or $(TargetFrameworkVersion) == 'v5.0-windows' Or $(TargetFrameworkVersion) == 'v5.0-windows10.0.17763.0' Or $(TargetFrameworkVersion) == 'v5.0-windows10.0.18362.0' Or $(TargetFrameworkVersion) == 'v5.0-windows10.0.19041.0' Or $(TargetFrameworkVersion) == 'v5.0-windows7.0' Or $(TargetFrameworkVersion) == 'v5.0-windows8.0')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v2.1' Or $(TargetFrameworkVersion) == 'v2.2' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.1')) Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v2.1')) Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkIdentifier) == 'Xamarin.tvOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.watchOS')">
<ItemGroup>
<Reference Include="System.Reactive.Windows.Threading">
<HintPath>..\..\..\Rx-XAML\lib\portable-win81+wpa81\System.Reactive.Windows.Threading.dll</HintPath>
Expand Down
2 changes: 1 addition & 1 deletion tests/Paket.Tests/InstallModel/Xml/xunit.runner.fs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ let expectedPropertyDefinitionNodes = """<?xml version="1.0" encoding="utf-16"?>
<__paket__xunit_runner_visualstudio_props>net20\xunit.runner.visualstudio</__paket__xunit_runner_visualstudio_props>
</PropertyGroup>
</When>
<When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v10.0' Or $(TargetFrameworkVersion) == 'v2.2' Or $(TargetFrameworkVersion) == 'v2.3' Or $(TargetFrameworkVersion) == 'v4.0.3' Or $(TargetFrameworkVersion) == 'v4.1' Or $(TargetFrameworkVersion) == 'v4.2' Or $(TargetFrameworkVersion) == 'v4.3' Or $(TargetFrameworkVersion) == 'v4.4' Or $(TargetFrameworkVersion) == 'v5.0' Or $(TargetFrameworkVersion) == 'v5.1' Or $(TargetFrameworkVersion) == 'v6.0' Or $(TargetFrameworkVersion) == 'v7.0' Or $(TargetFrameworkVersion) == 'v7.1' Or $(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1' Or $(TargetFrameworkVersion) == 'v9.0')) Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v5.0') Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v2.1' Or $(TargetFrameworkVersion) == 'v2.2' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.1')) Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v2.1')) Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile259') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkIdentifier) == 'Xamarin.tvOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.watchOS')">
<When Condition="1 == 1">
<PropertyGroup>
<__paket__xunit_runner_visualstudio_props>portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\xunit.runner.visualstudio</__paket__xunit_runner_visualstudio_props>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion tests/Paket.Tests/Versioning/PlatformMatchingSpecs.fs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ let ``Check that lists are updated``() =
Assert.Fail (sprintf "Case '%s' was not found in KnownTargetProfiles.<type>Versions for '%s'" case.Name typeof<'t>.Name)
foundCase)
|> shouldEqual true
if l.Length <> cases.Length then
if l.Length < cases.Length then
Assert.Fail (sprintf "KnownTargetProfiles.<list> doesnt't match number of cases for '%s'." typeof<'t>.Name)
let checkList (l:'t list) =
let tagReader = FSharp.Reflection.FSharpValue.PreComputeUnionTagReader(typeof<'t>)
Expand Down