From c02e70230aa0d08fe71ccc1742434a86fa306037 Mon Sep 17 00:00:00 2001 From: Daniil Barbashov Date: Mon, 29 Apr 2019 10:44:00 +0300 Subject: [PATCH 1/2] Created Benchmarks project && adopted benchmarks from FsPickler --- FSharp.Json.sln | 7 + tests/FSharp.Json.Benchmarks/.gitignore | 1 + .../FSharp.Json.Benchmarks.fsproj | 25 +++ tests/FSharp.Json.Benchmarks/Main.fs | 11 ++ tests/FSharp.Json.Benchmarks/Serializers.fs | 75 ++++++++ tests/FSharp.Json.Benchmarks/Types.fs | 177 ++++++++++++++++++ 6 files changed, 296 insertions(+) create mode 100644 tests/FSharp.Json.Benchmarks/.gitignore create mode 100644 tests/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj create mode 100644 tests/FSharp.Json.Benchmarks/Main.fs create mode 100644 tests/FSharp.Json.Benchmarks/Serializers.fs create mode 100644 tests/FSharp.Json.Benchmarks/Types.fs diff --git a/FSharp.Json.sln b/FSharp.Json.sln index a2e9631..5bce8d1 100644 --- a/FSharp.Json.sln +++ b/FSharp.Json.sln @@ -16,6 +16,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{C667 RELEASE_NOTES.md = RELEASE_NOTES.md EndProjectSection EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Json.Benchmarks", "tests\FSharp.Json.Benchmarks\FSharp.Json.Benchmarks.fsproj", "{B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -30,12 +32,17 @@ Global {5D95196B-06AF-4158-9FF0-FAF132900A21}.Debug|Any CPU.Build.0 = Debug|Any CPU {5D95196B-06AF-4158-9FF0-FAF132900A21}.Release|Any CPU.ActiveCfg = Release|Any CPU {5D95196B-06AF-4158-9FF0-FAF132900A21}.Release|Any CPU.Build.0 = Release|Any CPU + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {5D95196B-06AF-4158-9FF0-FAF132900A21} = {786DD151-3536-4F63-9D33-8ACA2403BB6E} + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58} = {786DD151-3536-4F63-9D33-8ACA2403BB6E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {9A0323D5-A893-4E04-AB9D-4B6D72A1528B} diff --git a/tests/FSharp.Json.Benchmarks/.gitignore b/tests/FSharp.Json.Benchmarks/.gitignore new file mode 100644 index 0000000..1c2dac6 --- /dev/null +++ b/tests/FSharp.Json.Benchmarks/.gitignore @@ -0,0 +1 @@ +BenchmarkDotNet.Artifacts \ No newline at end of file diff --git a/tests/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj b/tests/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj new file mode 100644 index 0000000..f0b251a --- /dev/null +++ b/tests/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj @@ -0,0 +1,25 @@ + + + + Exe + netcoreapp2.0 + true + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/FSharp.Json.Benchmarks/Main.fs b/tests/FSharp.Json.Benchmarks/Main.fs new file mode 100644 index 0000000..737adf7 --- /dev/null +++ b/tests/FSharp.Json.Benchmarks/Main.fs @@ -0,0 +1,11 @@ +module FSharp.Json.Benchmarks.Main + +open System.Reflection +open BenchmarkDotNet.Running + +[] +let main args = + let assembly = Assembly.GetExecutingAssembly() + let switcher = new BenchmarkSwitcher(assembly) + let summaries = switcher.Run args + 0 \ No newline at end of file diff --git a/tests/FSharp.Json.Benchmarks/Serializers.fs b/tests/FSharp.Json.Benchmarks/Serializers.fs new file mode 100644 index 0000000..fd60049 --- /dev/null +++ b/tests/FSharp.Json.Benchmarks/Serializers.fs @@ -0,0 +1,75 @@ +namespace FSharp.Json.Benchmarks + +open System.IO +open System.Threading + +open BenchmarkDotNet.Attributes +open FSharp.Json + +type ISerializer = + abstract Name : string + abstract Serialize : Stream -> 'T -> unit + abstract Deserialize : Stream -> 'T + +type JsonDotNetSerializer () = + let jdn = Newtonsoft.Json.JsonSerializer.Create() + + interface ISerializer with + member __.Name = "Json.Net" + member __.Serialize (stream : Stream) (x : 'T) = + use writer = new StreamWriter(stream) + jdn.Serialize(writer, x) + writer.Flush() + + member __.Deserialize (stream : Stream) : 'T = + use reader = new StreamReader(stream) + jdn.Deserialize(reader, typeof<'T>) :?> 'T + +type FSharpJsonSerializer() = + let serializerConfig : JsonConfig = + { + unformatted = true + serializeNone = SerializeNone.Null + deserializeOption = DeserializeOption.AllowOmit + jsonFieldNaming = id + allowUntyped = true + enumValue = EnumMode.Name + } + + interface ISerializer with + member __.Name = "FSharp.Json" + member __.Serialize (stream : Stream) (x : 'T) = + let json = FSharp.Json.Json.serializeEx serializerConfig x + let bytes = System.Text.Encoding.ASCII.GetBytes json + stream.Write(bytes, 0, bytes.Length) + + member __.Deserialize (stream : Stream) : 'T = + use sr = new StreamReader(stream) + let json = sr.ReadToEnd() + FSharp.Json.Json.deserializeEx serializerConfig json + +module Serializer = + + let memoryStream = + new ThreadLocal<_>(fun () -> + { new MemoryStream() with + override __.Close() = () }) + + let roundTrip (serializer : ISerializer) (value : 'T) = + let m = memoryStream.Value + m.Position <- 0L + serializer.Serialize m value + m.Position <- 0L + let _ = serializer.Deserialize<'T> m + () + +[] +[] +type RoundtripBenchmark<'T>(value : 'T) = + let nsj = new JsonDotNetSerializer() + let jfs = new FSharpJsonSerializer() + + [] + member __.NewtonsoftJson() = Serializer.roundTrip nsj value + [] + member __.FSharpJson() = Serializer.roundTrip jfs value \ No newline at end of file diff --git a/tests/FSharp.Json.Benchmarks/Types.fs b/tests/FSharp.Json.Benchmarks/Types.fs new file mode 100644 index 0000000..31799a6 --- /dev/null +++ b/tests/FSharp.Json.Benchmarks/Types.fs @@ -0,0 +1,177 @@ +namespace FSharp.Json.Benchmarks + +open System +open FsCheck + +module Poco = + [] + type T = + { A : int ; B : string ; C : bool ; D : byte[] ; + F : DateTimeOffset ; G : TimeSpan ; H : Guid } + + let value = { A = 42 ; B = "lorem ipsum" ; C = true ; D = [|1uy .. 20uy|] + F = DateTimeOffset(2018,1,1,23,11,12,TimeSpan.Zero) ; + G = TimeSpan.FromDays 30. + H = Guid.Empty } + + type PocoRoundtrip() = + inherit RoundtripBenchmark(value) + +module FloatArray = + type T = float[] + + let value = + [| for i in 1 .. 100 -> float i / float 100. + yield Double.Epsilon + yield Double.PositiveInfinity + yield Double.NaN + yield Double.NegativeInfinity |] + + type FloatArrayRoundtrip() = + inherit RoundtripBenchmark(value) + +module BoxedArray = + type T = obj[] + + let value : T = [|box 1; box "foo" ; box true ; box(1,2) ; box (ref 42) |] + + type BoxedArrayRoundtrip() = + inherit RoundtripBenchmark(value) + +module Array3D = + type T = float [,,] + + let value : T = Array3D.init 20 20 20 (fun i j k -> 0.1 * float i + float j + 10. * float k) + + type Array3DRoundtrip() = + inherit RoundtripBenchmark(value) + +module LargeTuple = + type T = string * int * int * int * bool * string * (float * int list) option * int * int * int * string + let value : T = ("lorem ipsum dolor", 1, 2, 3, true, "", Some(3.14, [2]), 3, 2, 1, "lorem") + + type LargeTupleRoundtrip() = + inherit RoundtripBenchmark(value) + +module FSharpList = + type T = int list + let value : T = [1..1000] + + type FSharpListRoundtrip() = + inherit RoundtripBenchmark(value) + +module Dictionary = + open System.Collections.Generic + open Poco + + type T = Dictionary + + let mkDict size = + let d = new T() + for i = 1 to size do + let key = sprintf "key-%d" i + let value = { + A = i ; + B = sprintf "value-%d" i ; + C = i % 2 = 0 ; + D = [|byte i|] + F = DateTimeOffset(2018,1,1,23,11,12,TimeSpan.Zero) ; + G = TimeSpan.FromDays 30. + H = Guid.Empty + } + + d.Add(key, value) + d + + let value = mkDict 1000 + + type DictionaryRoundtrip() = + inherit RoundtripBenchmark(value) + +module ExceptionBench = + + let rec mkExn d = + if d = 0 then raise (FormatException "kaboom!") + else + 1 + mkExn(d - 1) + + let exn = try mkExn 20 |> ignore ; failwith "" with :? FormatException as e -> e + + type ExceptionRoundtrip() = + inherit RoundtripBenchmark(exn) + +module LargeObject = + type Foo = { A : int ; B : string ; C : bool } + type Bar = A of int * string | B of Foo | C + type T = Bar list list option * string list * byte [] + + let value : T [] = + Arb.from.Generator |> Gen.sampleWithSeed (Rnd 2019UL) 20 20 |> Seq.toArray + + type LargeFSharpValueRoundtrip() = + inherit RoundtripBenchmark(value) + + +module ISerializable = + open System.Runtime.Serialization + + type T(x : int, y : string, z : bool) = + interface ISerializable with + member __.GetObjectData(si, _) = + si.AddValue("x", x) + si.AddValue("y", y) + si.AddValue("z", z) + + new (si : SerializationInfo, _ : StreamingContext) = + let inline get x = si.GetValue(x, typeof<'T>) :?> 'T + new T(get "x", get "y", get "z") + + let instance = new T(42, "lorem ipsum", true) + + type ISerializableRoundtrip() = + inherit RoundtripBenchmark(instance) + + +module FSharpBinTree = + type Tree = Node | Leaf of int * Tree * Tree + + let rec mkTree d = + if d = 0 then Node + else + let t = mkTree (d-1) + Leaf(d, mkTree(d-1), mkTree(d-1)) + + let value = mkTree 10 + + type FSharpBinaryRoundtrip() = + inherit RoundtripBenchmark(value) + +module FSharpSet = + let value = set [1 .. 40] + + type FSharpSetRoundtrip() = + inherit RoundtripBenchmark>(value) + + +module FSharpMap = + let value = [1 .. 40] |> Seq.map (fun i -> string i, i) |> Map.ofSeq + + type FSharpMapRountrip() = + inherit RoundtripBenchmark>(value) + + +module MemberInfo = + open System.Reflection + open FSharp.Quotations.Patterns + + type private Foo = + static member Method(x : int) = () + static member Method<'T>(x : 'T, y : Foo) = () + + let value : MemberInfo = + match <@ Foo.Method("string", Unchecked.defaultof<_>) @> with + | Call(_,m,_) -> m :> _ + | _ -> failwith "impossible" + + type MemberInfoRoundtrip() = + inherit RoundtripBenchmark(value) \ No newline at end of file From 1c967677f224b1e582e553e73cafe59ce49cf4f2 Mon Sep 17 00:00:00 2001 From: Daniil Barbashov Date: Mon, 29 Apr 2019 10:47:42 +0300 Subject: [PATCH 2/2] Merge with master --- .gitattributes | 26 - .gitignore | 193 +---- .paket/Paket.Restore.targets | 276 ------- .paket/paket.bootstrapper.exe | Bin 64296 -> 0 bytes .paket/paket.targets | 36 - .travis.yml | 9 - .../.gitignore | 0 .../FSharp.Json.Benchmarks.fsproj | 2 +- .../Main.fs | 0 .../Serializers.fs | 0 .../Types.fs | 0 .../App.config | 20 +- .../AsJson.fs | 0 .../Collections.fs | 0 .../DateTimeFormat.fs | 0 .../Default.fs | 0 .../Enum.fs | 0 .../FSharp.Json.Tests.fsproj | 66 +- .../Map.fs | 0 .../Namings.fs | 0 .../Object.fs | 0 .../Option.fs | 0 .../Record.fs | 16 + .../Transforms.fs | 3 +- .../Tuple.fs | 0 .../Union.fs | 0 FSharp.Json.sln | 87 +- {src/FSharp.Json => FSharp.Json}/Core.fs | 47 +- .../FSharp.Json.fsproj | 75 +- {src/FSharp.Json => FSharp.Json}/Interface.fs | 0 .../InterfaceTypes.fs | 0 {src/FSharp.Json => FSharp.Json}/JsonValue.fs | 0 .../JsonValueHelpers.fs | 42 + .../FSharp.Json => FSharp.Json}/Reflection.fs | 0 .../TextConversions.fs | 0 .../FSharp.Json => FSharp.Json}/Transforms.fs | 0 {src/FSharp.Json => FSharp.Json}/Utils.fs | 6 - README.md | 741 +++++++++++++++++- RELEASE_NOTES.md | 26 +- appveyor.yml | 9 - build.cmd | 18 - build.fsx | 218 ------ build.sh | 77 -- docsrc/content/api_overview.md | 40 - docsrc/content/basic_example.fsx | 29 - docsrc/content/enums.fsx | 98 --- docsrc/content/fields_naming.fsx | 77 -- docsrc/content/index.md | 84 -- docsrc/content/null_safety.fsx | 124 --- docsrc/content/supported_types.md | 91 --- docsrc/content/transform.fsx | 77 -- docsrc/content/unions.fsx | 113 --- docsrc/content/untyped_data.fsx | 63 -- docsrc/files/img/logo-template.pdn | Bin 15052 -> 0 bytes docsrc/files/img/logo.png | Bin 1581 -> 0 bytes docsrc/tools/generate.fsx | 144 ---- docsrc/tools/templates/template.cshtml | 64 -- paket.dependencies | 7 - paket.lock | 512 ------------ 59 files changed, 948 insertions(+), 2568 deletions(-) delete mode 100644 .gitattributes delete mode 100644 .paket/Paket.Restore.targets delete mode 100644 .paket/paket.bootstrapper.exe delete mode 100644 .paket/paket.targets delete mode 100644 .travis.yml rename {tests/FSharp.Json.Benchmarks => FSharp.Json.Benchmarks}/.gitignore (100%) rename {tests/FSharp.Json.Benchmarks => FSharp.Json.Benchmarks}/FSharp.Json.Benchmarks.fsproj (89%) rename {tests/FSharp.Json.Benchmarks => FSharp.Json.Benchmarks}/Main.fs (100%) rename {tests/FSharp.Json.Benchmarks => FSharp.Json.Benchmarks}/Serializers.fs (100%) rename {tests/FSharp.Json.Benchmarks => FSharp.Json.Benchmarks}/Types.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/App.config (97%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/AsJson.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Collections.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/DateTimeFormat.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Default.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Enum.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/FSharp.Json.Tests.fsproj (89%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Map.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Namings.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Object.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Option.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Record.fs (86%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Transforms.fs (94%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Tuple.fs (100%) rename {tests/FSharp.Json.Tests => FSharp.Json.Tests}/Union.fs (100%) rename {src/FSharp.Json => FSharp.Json}/Core.fs (91%) rename {src/FSharp.Json => FSharp.Json}/FSharp.Json.fsproj (74%) rename {src/FSharp.Json => FSharp.Json}/Interface.fs (100%) rename {src/FSharp.Json => FSharp.Json}/InterfaceTypes.fs (100%) rename {src/FSharp.Json => FSharp.Json}/JsonValue.fs (100%) rename {src/FSharp.Json => FSharp.Json}/JsonValueHelpers.fs (67%) rename {src/FSharp.Json => FSharp.Json}/Reflection.fs (100%) rename {src/FSharp.Json => FSharp.Json}/TextConversions.fs (100%) rename {src/FSharp.Json => FSharp.Json}/Transforms.fs (100%) rename {src/FSharp.Json => FSharp.Json}/Utils.fs (73%) delete mode 100644 appveyor.yml delete mode 100644 build.cmd delete mode 100644 build.fsx delete mode 100644 build.sh delete mode 100644 docsrc/content/api_overview.md delete mode 100644 docsrc/content/basic_example.fsx delete mode 100644 docsrc/content/enums.fsx delete mode 100644 docsrc/content/fields_naming.fsx delete mode 100644 docsrc/content/index.md delete mode 100644 docsrc/content/null_safety.fsx delete mode 100644 docsrc/content/supported_types.md delete mode 100644 docsrc/content/transform.fsx delete mode 100644 docsrc/content/unions.fsx delete mode 100644 docsrc/content/untyped_data.fsx delete mode 100644 docsrc/files/img/logo-template.pdn delete mode 100644 docsrc/files/img/logo.png delete mode 100644 docsrc/tools/generate.fsx delete mode 100644 docsrc/tools/templates/template.cshtml delete mode 100644 paket.dependencies delete mode 100644 paket.lock diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 7ff73f4..0000000 --- a/.gitattributes +++ /dev/null @@ -1,26 +0,0 @@ -# Auto detect text files -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp text=auto eol=lf -*.vb diff=csharp text=auto eol=lf -*.fs diff=csharp text=auto eol=lf -*.fsi diff=csharp text=auto eol=lf -*.fsx diff=csharp text=auto eol=lf -*.sln text eol=crlf merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore index 9cc4f3a..3d9a472 100644 --- a/.gitignore +++ b/.gitignore @@ -1,187 +1,6 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Xamarin Studio / monodevelop user-specific -*.userprefs -*.dll.mdb -*.exe.mdb - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Other Visual Studio data -.vs/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml - -# Enable nuget.exe in the .nuget folder (though normally executables are not tracked) -!.nuget/NuGet.exe - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# VSCode -.vscode/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - - -#LightSwitch generated files -GeneratedArtifacts/ -_Pvt_Extensions/ -ModelManifest.xml - -# ========================= -# Windows detritus -# ========================= - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac desktop service store files -.DS_Store - -# =================================================== -# Exclude F# project specific directories and files -# =================================================== - -# NuGet Packages Directory -packages/ - -# Test results produced by build -TestResults.xml - -# Nuget outputs -nuget/*.nupkg -release.cmd -release.sh -localpackages/ -paket-files -*.orig -.paket/paket.exe -docsrc/content/license.md -docsrc/content/release-notes.md -.fake -docsrc/tools/FSharp.Formatting.svclog -docs/ +.idea/ +.vs/ +.vscode/ +bin +obj +*.DotSettings.user \ No newline at end of file diff --git a/.paket/Paket.Restore.targets b/.paket/Paket.Restore.targets deleted file mode 100644 index e7c1bc0..0000000 --- a/.paket/Paket.Restore.targets +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - true - $(MSBuildThisFileDirectory) - $(MSBuildThisFileDirectory)..\ - $(PaketRootPath)paket-files\paket.restore.cached - $(PaketRootPath)paket.lock - /Library/Frameworks/Mono.framework/Commands/mono - mono - - $(PaketRootPath)paket.exe - $(PaketToolsPath)paket.exe - "$(PaketExePath)" - $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" - - - <_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)")) - dotnet "$(PaketExePath)" - - - "$(PaketExePath)" - - $(PaketRootPath)paket.bootstrapper.exe - $(PaketToolsPath)paket.bootstrapper.exe - "$(PaketBootStrapperExePath)" - $(MonoPath) --runtime=v4.0.30319 "$(PaketBootStrapperExePath)" - - - - - true - true - - - - - - - true - $(NoWarn);NU1603 - - - - - /usr/bin/shasum $(PaketRestoreCacheFile) | /usr/bin/awk '{ print $1 }' - /usr/bin/shasum $(PaketLockFilePath) | /usr/bin/awk '{ print $1 }' - - - - - - - - - - - - - $([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)')) - $([System.IO.File]::ReadAllText('$(PaketLockFilePath)')) - true - false - true - - - - - - - - - $(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).paket.references.cached - - $(MSBuildProjectFullPath).paket.references - - $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references - - $(MSBuildProjectDirectory)\paket.references - $(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).$(TargetFramework).paket.resolved - true - references-file-or-cache-not-found - - - - - $([System.IO.File]::ReadAllText('$(PaketReferencesCachedFilePath)')) - $([System.IO.File]::ReadAllText('$(PaketOriginalReferencesFilePath)')) - references-file - false - - - - - false - - - - - true - target-framework '$(TargetFramework)' - - - - - - - - - - - - - - - - - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4]) - - - %(PaketReferencesFileLinesInfo.PackageVersion) - All - - - - - $(MSBuildProjectDirectory)/obj/$(MSBuildProjectFile).paket.clitools - - - - - - - - - $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[0]) - $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[1]) - - - %(PaketCliToolFileLinesInfo.PackageVersion) - - - - - - - - - - false - - - - - - <_NuspecFilesNewLocation Include="$(BaseIntermediateOutputPath)$(Configuration)\*.nuspec"/> - - - - $(MSBuildProjectDirectory)/$(MSBuildProjectFile) - true - false - true - $(BaseIntermediateOutputPath)$(Configuration) - $(BaseIntermediateOutputPath) - - - - <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.nuspec"/> - - - - - - - - - - - - - - - - diff --git a/.paket/paket.bootstrapper.exe b/.paket/paket.bootstrapper.exe deleted file mode 100644 index b645d8e76a2bd9587bb2d5ba1c24a65f8b6e7f5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64296 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 EUnyxw?f?J) diff --git a/.paket/paket.targets b/.paket/paket.targets deleted file mode 100644 index 2557fb9..0000000 --- a/.paket/paket.targets +++ /dev/null @@ -1,36 +0,0 @@ - - - - - true - - true - $(MSBuildThisFileDirectory) - $(MSBuildThisFileDirectory)..\ - - - - $(PaketToolsPath)paket.exe - $(PaketToolsPath)paket.bootstrapper.exe - "$(PaketExePath)" - mono --runtime=v4.0.30319 "$(PaketExePath)" - "$(PaketBootStrapperExePath)" - mono --runtime=v4.0.30319 $(PaketBootStrapperExePath) - - $(PaketCommand) restore - $(PaketBootStrapperCommand) - - RestorePackages; $(BuildDependsOn); - - - - - - - - - - - - - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5152d90..0000000 --- a/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: csharp - -sudo: false # use the new container-based Travis infrastructure - -before_install: - - chmod +x build.sh - -script: - - ./build.sh All diff --git a/tests/FSharp.Json.Benchmarks/.gitignore b/FSharp.Json.Benchmarks/.gitignore similarity index 100% rename from tests/FSharp.Json.Benchmarks/.gitignore rename to FSharp.Json.Benchmarks/.gitignore diff --git a/tests/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj b/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj similarity index 89% rename from tests/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj rename to FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj index f0b251a..d372552 100644 --- a/tests/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj +++ b/FSharp.Json.Benchmarks/FSharp.Json.Benchmarks.fsproj @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/tests/FSharp.Json.Benchmarks/Main.fs b/FSharp.Json.Benchmarks/Main.fs similarity index 100% rename from tests/FSharp.Json.Benchmarks/Main.fs rename to FSharp.Json.Benchmarks/Main.fs diff --git a/tests/FSharp.Json.Benchmarks/Serializers.fs b/FSharp.Json.Benchmarks/Serializers.fs similarity index 100% rename from tests/FSharp.Json.Benchmarks/Serializers.fs rename to FSharp.Json.Benchmarks/Serializers.fs diff --git a/tests/FSharp.Json.Benchmarks/Types.fs b/FSharp.Json.Benchmarks/Types.fs similarity index 100% rename from tests/FSharp.Json.Benchmarks/Types.fs rename to FSharp.Json.Benchmarks/Types.fs diff --git a/tests/FSharp.Json.Tests/App.config b/FSharp.Json.Tests/App.config similarity index 97% rename from tests/FSharp.Json.Tests/App.config rename to FSharp.Json.Tests/App.config index 7c7a547..756bc0e 100644 --- a/tests/FSharp.Json.Tests/App.config +++ b/FSharp.Json.Tests/App.config @@ -1,10 +1,10 @@ - - - - - - True - - - - + + + + + + True + + + + diff --git a/tests/FSharp.Json.Tests/AsJson.fs b/FSharp.Json.Tests/AsJson.fs similarity index 100% rename from tests/FSharp.Json.Tests/AsJson.fs rename to FSharp.Json.Tests/AsJson.fs diff --git a/tests/FSharp.Json.Tests/Collections.fs b/FSharp.Json.Tests/Collections.fs similarity index 100% rename from tests/FSharp.Json.Tests/Collections.fs rename to FSharp.Json.Tests/Collections.fs diff --git a/tests/FSharp.Json.Tests/DateTimeFormat.fs b/FSharp.Json.Tests/DateTimeFormat.fs similarity index 100% rename from tests/FSharp.Json.Tests/DateTimeFormat.fs rename to FSharp.Json.Tests/DateTimeFormat.fs diff --git a/tests/FSharp.Json.Tests/Default.fs b/FSharp.Json.Tests/Default.fs similarity index 100% rename from tests/FSharp.Json.Tests/Default.fs rename to FSharp.Json.Tests/Default.fs diff --git a/tests/FSharp.Json.Tests/Enum.fs b/FSharp.Json.Tests/Enum.fs similarity index 100% rename from tests/FSharp.Json.Tests/Enum.fs rename to FSharp.Json.Tests/Enum.fs diff --git a/tests/FSharp.Json.Tests/FSharp.Json.Tests.fsproj b/FSharp.Json.Tests/FSharp.Json.Tests.fsproj similarity index 89% rename from tests/FSharp.Json.Tests/FSharp.Json.Tests.fsproj rename to FSharp.Json.Tests/FSharp.Json.Tests.fsproj index 27e2026..3a636bc 100644 --- a/tests/FSharp.Json.Tests/FSharp.Json.Tests.fsproj +++ b/FSharp.Json.Tests/FSharp.Json.Tests.fsproj @@ -1,33 +1,33 @@ - - - - netcoreapp2.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + netcoreapp2.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/FSharp.Json.Tests/Map.fs b/FSharp.Json.Tests/Map.fs similarity index 100% rename from tests/FSharp.Json.Tests/Map.fs rename to FSharp.Json.Tests/Map.fs diff --git a/tests/FSharp.Json.Tests/Namings.fs b/FSharp.Json.Tests/Namings.fs similarity index 100% rename from tests/FSharp.Json.Tests/Namings.fs rename to FSharp.Json.Tests/Namings.fs diff --git a/tests/FSharp.Json.Tests/Object.fs b/FSharp.Json.Tests/Object.fs similarity index 100% rename from tests/FSharp.Json.Tests/Object.fs rename to FSharp.Json.Tests/Object.fs diff --git a/tests/FSharp.Json.Tests/Option.fs b/FSharp.Json.Tests/Option.fs similarity index 100% rename from tests/FSharp.Json.Tests/Option.fs rename to FSharp.Json.Tests/Option.fs diff --git a/tests/FSharp.Json.Tests/Record.fs b/FSharp.Json.Tests/Record.fs similarity index 86% rename from tests/FSharp.Json.Tests/Record.fs rename to FSharp.Json.Tests/Record.fs index 9ba9935..f825bd6 100644 --- a/tests/FSharp.Json.Tests/Record.fs +++ b/FSharp.Json.Tests/Record.fs @@ -8,8 +8,16 @@ module Record = theString: string theDecimal: decimal theBool: bool + theByte: byte + theSByte: sbyte + theInt16: int16 + theUInt16: uint16 theInt: int + theUInt: uint32 theInt64: int64 + theUInt64: uint64 + theBigint: bigint + theSingle: single theFloat: float theGuid: Guid theDateTime: DateTime @@ -23,8 +31,16 @@ module Record = theString = "The string" theDecimal = 123M theBool = true + theByte = 123uy + theSByte = 123y + theInt16 = 123s + theUInt16 = 123us theInt = 123 + theUInt = 123u theInt64 = 123L + theUInt64 = 123UL + theBigint = 123I + theSingle = 123.0f theFloat = 123.123 theGuid = Guid.NewGuid() theDateTime = DateTime.Now diff --git a/tests/FSharp.Json.Tests/Transforms.fs b/FSharp.Json.Tests/Transforms.fs similarity index 94% rename from tests/FSharp.Json.Tests/Transforms.fs rename to FSharp.Json.Tests/Transforms.fs index 864851d..92c6b22 100644 --- a/tests/FSharp.Json.Tests/Transforms.fs +++ b/FSharp.Json.Tests/Transforms.fs @@ -60,6 +60,5 @@ module Transforms = [] let ``Corrupted uri throws exception`` () = - let dummy = { UriRecord.value = new Uri("http://localhost:8080/") } - let json = """{"value":"/localhost:8080/"}""" + let json = """{"value":"notreallyauri"}""" Assert.Throws(fun () -> Json.deserialize json |> ignore) |> ignore \ No newline at end of file diff --git a/tests/FSharp.Json.Tests/Tuple.fs b/FSharp.Json.Tests/Tuple.fs similarity index 100% rename from tests/FSharp.Json.Tests/Tuple.fs rename to FSharp.Json.Tests/Tuple.fs diff --git a/tests/FSharp.Json.Tests/Union.fs b/FSharp.Json.Tests/Union.fs similarity index 100% rename from tests/FSharp.Json.Tests/Union.fs rename to FSharp.Json.Tests/Union.fs diff --git a/FSharp.Json.sln b/FSharp.Json.sln index 5bce8d1..4e65d02 100644 --- a/FSharp.Json.sln +++ b/FSharp.Json.sln @@ -1,50 +1,37 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27428.2015 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Json", "src\FSharp.Json\FSharp.Json.fsproj", "{8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{786DD151-3536-4F63-9D33-8ACA2403BB6E}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Json.Tests", "tests\FSharp.Json.Tests\FSharp.Json.Tests.fsproj", "{5D95196B-06AF-4158-9FF0-FAF132900A21}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{C6675B8D-87AC-4C55-92B7-8C02DDAA38E0}" - ProjectSection(SolutionItems) = preProject - build.fsx = build.fsx - README.md = README.md - RELEASE_NOTES.md = RELEASE_NOTES.md - EndProjectSection -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Json.Benchmarks", "tests\FSharp.Json.Benchmarks\FSharp.Json.Benchmarks.fsproj", "{B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}.Release|Any CPU.Build.0 = Release|Any CPU - {5D95196B-06AF-4158-9FF0-FAF132900A21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5D95196B-06AF-4158-9FF0-FAF132900A21}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5D95196B-06AF-4158-9FF0-FAF132900A21}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5D95196B-06AF-4158-9FF0-FAF132900A21}.Release|Any CPU.Build.0 = Release|Any CPU - {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {5D95196B-06AF-4158-9FF0-FAF132900A21} = {786DD151-3536-4F63-9D33-8ACA2403BB6E} - {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58} = {786DD151-3536-4F63-9D33-8ACA2403BB6E} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {9A0323D5-A893-4E04-AB9D-4B6D72A1528B} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2015 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Json", "FSharp.Json\FSharp.Json.fsproj", "{8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Json.Tests", "FSharp.Json.Tests\FSharp.Json.Tests.fsproj", "{5D95196B-06AF-4158-9FF0-FAF132900A21}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{60940FD7-1705-49D4-976E-64AC5E15D731}" +ProjectSection(SolutionItems) = preProject + README.md = README.md + RELEASE_NOTES.md = RELEASE_NOTES.md +EndProjectSection +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Json.Benchmarks", "FSharp.Json.Benchmarks\FSharp.Json.Benchmarks.fsproj", "{B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C80EE87-ECC6-4BD1-80F4-849FB4FF5B45}.Release|Any CPU.Build.0 = Release|Any CPU + {5D95196B-06AF-4158-9FF0-FAF132900A21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5D95196B-06AF-4158-9FF0-FAF132900A21}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5D95196B-06AF-4158-9FF0-FAF132900A21}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5D95196B-06AF-4158-9FF0-FAF132900A21}.Release|Any CPU.Build.0 = Release|Any CPU + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B36BCE2A-84E8-4A34-9BF5-2ECB5DC91F58}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/src/FSharp.Json/Core.fs b/FSharp.Json/Core.fs similarity index 91% rename from src/FSharp.Json/Core.fs rename to FSharp.Json/Core.fs index 97a6cc5..6119bbd 100644 --- a/src/FSharp.Json/Core.fs +++ b/FSharp.Json/Core.fs @@ -7,7 +7,6 @@ module internal Core = open System.Collections open FSharp.Json.Internalized.FSharp.Data - open Utils open Reflection let findAttributeMember<'T> (memberInfo: MemberInfo): 'T option = @@ -27,16 +26,16 @@ module internal Core = theConstructor.Invoke([||]) :?> ITypeTransform let getJsonFieldProperty: PropertyInfo -> JsonField = - findAttributeMember >> someOrDefault JsonField.Default |> cacheResult + findAttributeMember >> Option.defaultValue JsonField.Default |> cacheResult let getJsonUnion: Type -> JsonUnion = - findAttributeMember >> someOrDefault JsonUnion.Default |> cacheResult + findAttributeMember >> Option.defaultValue JsonUnion.Default |> cacheResult let getJsonFieldUnionCase: UnionCaseInfo -> JsonField = - findAttributeCase >> someOrDefault JsonField.Default |> cacheResult + findAttributeCase >> Option.defaultValue JsonField.Default |> cacheResult let getJsonUnionCase: UnionCaseInfo -> JsonUnionCase = - findAttributeCase >> someOrDefault JsonUnionCase.Default |> cacheResult + findAttributeCase >> Option.defaultValue JsonUnionCase.Default |> cacheResult let getTransform: Type -> ITypeTransform = createTransform |> cacheResult @@ -108,14 +107,30 @@ module internal Core = let t, value = transformToTargetType t value jsonField.Transform let t = getUntypedType t value match t with + | t when t = typeof -> + JsonValue.Number (decimal (value :?> uint16)) + | t when t = typeof -> + JsonValue.Number (decimal (value :?> int16)) | t when t = typeof -> JsonValue.Number (decimal (value :?> int)) + | t when t = typeof -> + JsonValue.Number (decimal (value :?> uint32)) | t when t = typeof -> JsonValue.Number (decimal (value :?> int64)) + | t when t = typeof -> + JsonValue.Number (decimal (value :?> uint64)) + | t when t = typeof -> + JsonValue.Number (decimal (value :?> bigint)) + | t when t = typeof -> + JsonValue.Float (float (value :?> single)) | t when t = typeof -> JsonValue.Float (value :?> float) | t when t = typeof -> JsonValue.Number (value :?> decimal) + | t when t = typeof -> + JsonValue.Number (decimal (value :?> byte)) + | t when t = typeof -> + JsonValue.Number (decimal (value :?> sbyte)) | t when t = typeof -> JsonValue.Boolean (value :?> bool) | t when t = typeof -> @@ -175,7 +190,7 @@ module internal Core = values.Cast() |> Seq.map (fun value -> serializeUnwrapOption (value.GetType()) JsonField.Default value) - |> Seq.map (someOrDefault JsonValue.Null) + |> Seq.map (Option.defaultValue JsonValue.Null) items |> Array.ofSeq |> JsonValue.Array let serializeTupleItems (types: Type seq) (values: IEnumerable): JsonValue = @@ -184,7 +199,7 @@ module internal Core = |> Seq.zip types |> Seq.map (fun (t, value) -> serializeUnwrapOption t JsonField.Default value) - |> Seq.map (someOrDefault JsonValue.Null) + |> Seq.map (Option.defaultValue JsonValue.Null) items |> Array.ofSeq |> JsonValue.Array let serializeKvpEnumerable (kvps: IEnumerable): JsonValue = @@ -194,7 +209,7 @@ module internal Core = let key = KvpKey kvp :?> string let value = KvpValue kvp let jvalue = serializeUnwrapOption (value.GetType()) JsonField.Default value - (key, someOrDefault JsonValue.Null jvalue) + (key, Option.defaultValue JsonValue.Null jvalue) ) props|> Array.ofSeq |> JsonValue.Record @@ -306,14 +321,30 @@ module internal Core = let t = getUntypedType path t jvalue let jvalue = match t with + | t when t = typeof -> + JsonValueHelpers.getInt16 path jvalue :> obj + | t when t = typeof -> + JsonValueHelpers.getUInt16 path jvalue :> obj | t when t = typeof -> JsonValueHelpers.getInt path jvalue :> obj + | t when t = typeof -> + JsonValueHelpers.getUInt32 path jvalue :> obj | t when t = typeof -> JsonValueHelpers.getInt64 path jvalue :> obj + | t when t = typeof -> + JsonValueHelpers.getUInt64 path jvalue :> obj + | t when t = typeof -> + JsonValueHelpers.getBigint path jvalue :> obj + | t when t = typeof -> + JsonValueHelpers.getSingle path jvalue :> obj | t when t = typeof -> JsonValueHelpers.getFloat path jvalue :> obj | t when t = typeof -> JsonValueHelpers.getDecimal path jvalue :> obj + | t when t = typeof -> + JsonValueHelpers.getByte path jvalue :> obj + | t when t = typeof -> + JsonValueHelpers.getSByte path jvalue :> obj | t when t = typeof -> JsonValueHelpers.getBool path jvalue :> obj | t when t = typeof -> diff --git a/src/FSharp.Json/FSharp.Json.fsproj b/FSharp.Json/FSharp.Json.fsproj similarity index 74% rename from src/FSharp.Json/FSharp.Json.fsproj rename to FSharp.Json/FSharp.Json.fsproj index 445e944..1262ebd 100644 --- a/src/FSharp.Json/FSharp.Json.fsproj +++ b/FSharp.Json/FSharp.Json.fsproj @@ -1,39 +1,36 @@ - - - - netstandard2.0 - F# JSON Reflection based serialization library - vsapronov - https://github.com/vsapronov/FSharp.Json/blob/master/LICENSE.txt - https://vsapronov.github.io/FSharp.Json - https://raw.githubusercontent.com/vsapronov/FSharp.Json/master/docs/files/img/logo.png - Copyright 2019 - F# JSON serialization - https://github.com/vsapronov/FSharp.Json - 0.3.5 - Added .NET Core support - - - - bin\Release\net452\FSharp.Json.XML - - - - bin\Debug\net452\FSharp.Json.XML - - - - - - - - - - - - - - - - - + + + + netstandard2.0 + F# JSON Reflection based serialization library + vsapronov + https://github.com/vsapronov/FSharp.Json + Copyright 2019 + F# JSON serialization + https://github.com/vsapronov/FSharp.Json + 0.3.7 + + + + bin\Release\net452\FSharp.Json.XML + + + + bin\Debug\net452\FSharp.Json.XML + + + + + + + + + + + + + + + + + diff --git a/src/FSharp.Json/Interface.fs b/FSharp.Json/Interface.fs similarity index 100% rename from src/FSharp.Json/Interface.fs rename to FSharp.Json/Interface.fs diff --git a/src/FSharp.Json/InterfaceTypes.fs b/FSharp.Json/InterfaceTypes.fs similarity index 100% rename from src/FSharp.Json/InterfaceTypes.fs rename to FSharp.Json/InterfaceTypes.fs diff --git a/src/FSharp.Json/JsonValue.fs b/FSharp.Json/JsonValue.fs similarity index 100% rename from src/FSharp.Json/JsonValue.fs rename to FSharp.Json/JsonValue.fs diff --git a/src/FSharp.Json/JsonValueHelpers.fs b/FSharp.Json/JsonValueHelpers.fs similarity index 67% rename from src/FSharp.Json/JsonValueHelpers.fs rename to FSharp.Json/JsonValueHelpers.fs index 50145cd..7e8ae30 100644 --- a/src/FSharp.Json/JsonValueHelpers.fs +++ b/FSharp.Json/JsonValueHelpers.fs @@ -8,18 +8,54 @@ module internal JsonValueHelpers = let raiseWrongType path typeName jvalue = raise(JsonDeserializationError(path, sprintf "Expected type %s is incompatible with jvalue: %A" typeName jvalue)) + let getInt16 (path: JsonPath) (jvalue: JsonValue) = + match jvalue with + | JsonValue.Number value -> int16 value + | JsonValue.Float value -> int16 value + | _ -> raiseWrongType path "int16" jvalue + + let getUInt16 (path: JsonPath) (jvalue: JsonValue) = + match jvalue with + | JsonValue.Number value -> uint16 value + | JsonValue.Float value -> uint16 value + | _ -> raiseWrongType path "uint16" jvalue + let getInt (path: JsonPath) (jvalue: JsonValue) = match jvalue with | JsonValue.Number value -> int value | JsonValue.Float value -> int value | _ -> raiseWrongType path "int" jvalue + let getUInt32 (path: JsonPath) (jvalue: JsonValue) = + match jvalue with + | JsonValue.Number value -> uint32 value + | JsonValue.Float value -> uint32 value + | _ -> raiseWrongType path "uint32" jvalue + let getInt64 (path: JsonPath) (jvalue: JsonValue) = match jvalue with | JsonValue.Number value -> int64 value | JsonValue.Float value -> int64 value | _ -> raiseWrongType path "int64" jvalue + let getUInt64 (path: JsonPath) (jvalue: JsonValue) = + match jvalue with + | JsonValue.Number value -> uint64 value + | JsonValue.Float value -> uint64 value + | _ -> raiseWrongType path "uint64" jvalue + + let getBigint (path: JsonPath) (jvalue: JsonValue) = + match jvalue with + | JsonValue.Number value -> bigint value + | JsonValue.Float value -> bigint value + | _ -> raiseWrongType path "bigint" jvalue + + let getSingle (path: JsonPath) (jvalue: JsonValue) = + match jvalue with + | JsonValue.Float value -> single value + | JsonValue.Number value -> single value + | _ -> raiseWrongType path "single" jvalue + let getFloat (path: JsonPath) (jvalue: JsonValue) = match jvalue with | JsonValue.Float value -> value @@ -38,6 +74,12 @@ module internal JsonValueHelpers = | JsonValue.Float value -> byte value | _ -> raiseWrongType path "byte" jvalue + let getSByte (path: JsonPath) (jvalue: JsonValue) = + match jvalue with + | JsonValue.Number value -> sbyte value + | JsonValue.Float value -> sbyte value + | _ -> raiseWrongType path "sbyte" jvalue + let getBool (path: JsonPath) (jvalue: JsonValue) = match jvalue with | JsonValue.Boolean value -> value diff --git a/src/FSharp.Json/Reflection.fs b/FSharp.Json/Reflection.fs similarity index 100% rename from src/FSharp.Json/Reflection.fs rename to FSharp.Json/Reflection.fs diff --git a/src/FSharp.Json/TextConversions.fs b/FSharp.Json/TextConversions.fs similarity index 100% rename from src/FSharp.Json/TextConversions.fs rename to FSharp.Json/TextConversions.fs diff --git a/src/FSharp.Json/Transforms.fs b/FSharp.Json/Transforms.fs similarity index 100% rename from src/FSharp.Json/Transforms.fs rename to FSharp.Json/Transforms.fs diff --git a/src/FSharp.Json/Utils.fs b/FSharp.Json/Utils.fs similarity index 73% rename from src/FSharp.Json/Utils.fs rename to FSharp.Json/Utils.fs index f162f15..4b3a877 100644 --- a/src/FSharp.Json/Utils.fs +++ b/FSharp.Json/Utils.fs @@ -1,11 +1,5 @@ namespace FSharp.Json -module internal Utils = - let someOrDefault<'T> (defaultValue:'T) (arg:'T option): 'T = - match arg with - | Some arg -> arg - | None -> defaultValue - module internal Conversions = open System open System.Globalization diff --git a/README.md b/README.md index dcf4168..b51a561 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,708 @@ -# FSharp.Json - -**FSharp.Json** is F# JSON serialization library based on Reflection. - -See [the home page](http://vsapronov.github.io/FSharp.Json) for details. - -Here's basic example of FSharp.Json usage: - -```fsharp -open FSharp.Json - -// Your record type -type RecordType = { - stringMember: string - intMember: int -} - -let data: RecordType = { stringMember = "The string"; intMember = 123 } - -// serialize record into JSON -let json = Json.serialize data -printfn "%s" json -// json is """{ "stringMember": "The string", "intMember": 123 }""" - -// deserialize from JSON to record -let deserialized = Json.deserialize json -printfn "%A" deserialized -// deserialized is {stringMember = "some value"; intMember = 123;} -``` - -## Maintainer(s) - -- [@vsapronov](https://github.com/vsapronov) +# FSharp.Json: JSON Serialization Library + +FSharp.Json is F# JSON serialization library based on Reflection it's written in F# for F#. + +## Basic Usage Example + +Here's basic example of FSharp.Json usage: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +// Your record type +type RecordType = { + stringMember: string + intMember: int +} + +let data: RecordType = { stringMember = "The string"; intMember = 123 } + +// serialize record into JSON +let json = Json.serialize data +printfn "%s" json +// json is """{ "stringMember": "The string", "intMember": 123 }""" + +// deserialize from JSON to record +let deserialized = Json.deserialize json +printfn "%A" deserialized +// deserialized is {stringMember = "some value"; intMember = 123;} +``` + +## Table of Contents + - [Basic Usage Example](#basic-usage-example) + - [Table of Contents](#table-of-contents) + - [Why?](#why) + - [How?](#how) + - [Documentation](#documentation) + - [API Overview](#api-overview) + - [Advanced functions](#advanced-functions) + - [Configuration](#configuration) + - [Unformatted JSON](#unformatted-json) + - [Supported Types](#supported-types) + - [Customizing JSON Fields Names](#customizing-json-fields-names) + - [Change JSON field name](#change-json-field-name) + - [Change all fields names](#change-all-fields-names) + - [Null Safety](#null-safety) + - [Deserialization of null](#deserialization-of-null) + - [Customization of null deserialization](#customization-of-null-deserialization) + - [Serialization of None](#serialization-of-none) + - [Customization of None serialization](#customization-of-none-serialization) + - [Emums](#emums) + - [Customizing enum serialization](#customizing-enum-serialization) + - [Default enum behaviour](#default-enum-behaviour) + - [Unions](#unions) + - [Changing union case key](#changing-union-case-key) + - [Single case union](#single-case-union) + - [Union modes](#union-modes) + - [Type Transform](#type-transform) + - [DateTime as epoch time](#datetime-as-epoch-time) + - [System.Uri as string](#systemuri-as-string) + - [Transform by default](#transform-by-default) + - [Untyped Data](#untyped-data) + - [Serialization of obj](#serialization-of-obj) + - [Deserialization of obj](#deserialization-of-obj) + - [Release Notes](#release-notes) + - [Contributing and copyright](#contributing-and-copyright) + - [Maintainer(s)](#maintainers) + +## Why? + +Why we need yet another F# JSON serialization library? +Well, if you happy with the library that you are using currently then probably you do not need another one. +There are several available options to choose from: + + * [JSON Type Provider](http://fsharp.github.io/FSharp.Data/library/JsonProvider.html) + * [Json.Net aka Newtonsoft.Json](https://www.newtonsoft.com/json) + * [Chiron](https://github.com/xyncro/chiron) + * [JsonFSharp](https://github.com/PeteProgrammer/JsonFSharp) + * [Thoth.Json](https://mangelmaxime.github.io/Thoth/json/v2.html#code-sample) + * [FSharpLu.Json](https://github.com/Microsoft/fsharplu/tree/master/FSharpLu.Json) + * Let me know what library I missed here + +While all of these libraries do provide some good functionality all of them seem to have a weakness. +Some of them are written in C# without out of the box support for F# types. +Additionally null safety is alien concept in C# however it is a must in F#. +Other libraries provide only low-level functionality leaving a lot of cumbersome coding work to library user. +The type provider library forces developer to define JSON schema in form of json examples which is far from convenient way of defining schemas. + +FSharp.Json was developed with these values in mind: + + * Easy to use API + * Automatic mapping of F# types into JSON + * Out of the box support for F# types + * Null safety + +## How? + +FSharp.Json is pure F# library. +It uses [Reflection][reflection] to get information about F# types at runtime. +The code from [FSharp.Data library][fsharp_data] is used for parsing JSON. +The [JsonValue type][jsonvalue_type] is internalized in the FSharp.Json library. +The core of FSharp.Json library is located in single [Core.fs file][core]. + + [reflection]: https://docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/reflection + [fsharp_data]: http://fsharp.github.io/FSharp.Data/ + [jsonvalue_type]: http://fsharp.github.io/FSharp.Data/reference/fsharp-data-jsonvalue.html + [core]: https://github.com/vsapronov/FSharp.Json/blob/master/src/FSharp.Json/Core.fs + +## Documentation + +This document describe all details of FSharp.Json library. The source code also has thorough documentation in comments to main types. Each feature of FSharp.Json is thoroughly covered by [unit tests](tests/FSharp.Json.Tests). + +## API Overview + +Most of API functions are defined in [Json module](src/FSharp.Json/Interface.fs). + +Easiest way to serialize is to call `Json.serialize` function. +It serializes any supported F# type to string containing JSON. + +Similarly easiest way to deserialize is to call `Json.deserialize<'T>` function. +It takes string containing JSON and returns instance of type 'T. + +#### Advanced functions + +Functions `Json.serialize` and `Json.deserialize` are using default configuration. +Whenever custom configuration should be used following functions are useful: + + * `Json.serializeEx` + * `Json.deserializeEx<'T>` + +Prefix `Ex` stands for "extended". Both of these functions take [JsonConfig](src/FSharp.Json/InterfaceTypes.fs) instance as a first parameter. + +#### Configuration + +[JsonConfig](src/FSharp.Json/InterfaceTypes.fs) represents global configuration of serialization. +There's convenient way to override default configuration by using `JsonConfig.create` function. +All parameters of the function are optional and those that are provided override default values. + +For example, custom `jsonFieldNaming` could be found [here](#change-all-fields-names). + +#### Unformatted JSON + +Some products like [Apache Spark](https://spark.apache.org/) require unformatted JSON in a single line. +It is usefull to produce unformatted single line JSON in some other scenarios. +There is a function to produce unformatted JSON: `Json.serializeU`. +`U` stands for "unformatted". It has the same signature as `Json.serialize` function. +The function is a shorthand to using `unformatted` member on [JsonConfig](src/FSharp.Json/InterfaceTypes.fs). + +## Supported Types + +Here's full list of F# types that are supported by FSharp.Json library. + +| F# Type | JSON Type | +|:---|:---| +sbyte
byte
int16
uint16
int
uint
int64
uint64
bigint
single
float
decimal | number +string | string +char | string +bool | bool +DateTime | string according to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
number epoch time using [transform](#transform) +DateTimeOffset | string according to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
number epoch time using [transform](#transform) +Guid | string +Uri| string using [transform](#transform) +Enum | string enum value name
number enum value
read [Enums](#enums) section +option | option is not represented by itself
`None` value might be represented as `null` or omitted
read more in [Null Safety](#null-safety) section +tuple | list +record | object +map | object +array
list | list +union | object with special structure
read more in [Unions](#unions) section +obj | read [Untyped Data](#untyped-data) section + +## Customizing JSON Fields Names + +When record type instance is serialized into JSON members names are used as JSON fields names. +In some scenarios the JSON should have different fields names then F# record type. +This section describes how FSharp.Json library provides JSON customization abilities. + +#### Change JSON field name + +JSON field name could be easily customized with JsonField attribute: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +// attribute stringMember with JsonField +type RecordType = { + [] + stringMember: string + intMember: int +} + +let data: RecordType = { stringMember = "The string"; intMember = 123 } + +let json = Json.serialize data +printfn "%s" json +// json is """{ "different_name": "The string", "intMember": 123 }""" +// pay attention that "different_name" was used as JSON field name + +let deserialized = Json.deserialize json +printfn "%A" deserialized +// deserialized is {stringMember = "some value"; intMember = 123;} +``` + +In example above JsonField attribute affects both serialization and deserialization. + +#### Change all fields names + +What if all fields names should be different in JSON compared to F# member names? +This could be needed for example if naming convention used in F# does not match JSON naming convention. +FSharp.Json allows to map fields names with naming function. + +In the example below all camel case F# record members are mapped into snake case JSON fields: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +// attribute stringMember with JsonField +type RecordType = { + stringMember: string + intMember: int +} + +let data: RecordType = { stringMember = "The string"; intMember = 123 } + +// create config with JSON field naming setting +let config = JsonConfig.create(jsonFieldNaming = Json.snakeCase) + +let json = Json.serializeEx config data +printfn "%s" json +// json is """{ "string_member": "The string", "int_member": 123 }""" +// pay attention that "string_member" and "int_member" are in snake case + +let deserialized = Json.deserializeEx config json +printfn "%A" deserialized +// deserialized is {stringMember = "some value"; intMember = 123;} +``` + +The `Json` module defines two naming functions that could be used out of the box: snakeCase and lowerCamelCase. +The one can define it's own naming rule - it's just a function `string -> string`. + +## Null Safety + +FSharp.Json is null safe. +This means that library will never deserialize JSON into anything with null value. +FSharp.Json treats option types as an instruction that value could be null in JSON. +For example member of type `string` can't get null value in FSharp.Json, however `string option` member can have `None` value which is translated into null in JSON. +Same logic applies to all types supported by FSharp.Json library. +See examples in sections below. + +#### Deserialization of null + +In the example below `stringMember` member can't be assigned to null even though F# allows string to be null: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type RecordType = { + stringMember: string +} + +let json = """{"stringMember":null}""" + +// this attempt to deserialize will throw exception +let deserialized = Json.deserialize json +``` + +What if the member `stringMember` could be null in JSON? +In such case the record type should explictly use string option type: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type RecordType = { + stringMember: string option +} + +let json = """{"stringMember":null}""" + +// this attempt to deserialize will work fine +let deserialized = Json.deserialize json + +// deserialized.stringMember equals to None +printfn "%A" deserialized +``` + +If value could be null or missing in JSON then F# type used for corresponding member should be option. + +#### Customization of null deserialization + +What is the difference between missing field in JSON and field assigned to null? +By default FSharp.Json library treats both cases as None, however you can customize this logic. +Behaviour that is used to treat option types could be configured: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type RecordType = { + stringMember: string option +} + +// this will work fine by default even when option field is missing +let deserialized1 = Json.deserialize "{}" + +printfn "%A" deserialized1 +// deserialized1.stringMember equals to None + +// create config that require option None to be represented as null +let config = JsonConfig.create(deserializeOption = DeserializeOption.RequireNull) + +// this will throw exception since config in use requires null for None deserialization. +let deserialized2 = Json.deserializeEx config "{}" +``` + +#### Serialization of None +If some member of `option` type has None value it will be serialized into JSON null by default: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type RecordType = { + stringMember: string option +} + +// stringMember has None value +let data = { RecordType.stringMember = None } +let json = Json.serialize data +printfn "%s" json +// json is: """{ "stringMember": null }""" +``` + +#### Customization of None serialization +The one can control how None values are respresented in JSON through config. +Example belows shows how to omit members with None values: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type RecordType = { + stringMember: string option +} + +// stringMember has None value +let data = { RecordType.stringMember = None } + +// create config that omits null values +let config = JsonConfig.create(serializeNone = SerializeNone.Omit) + +let json = Json.serializeEx config data +printfn "%s" json +// json is: """{}""" +``` + +## Emums + +By default enum value is represented as `string` that is enum member name. + +Check example code below: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type NumberEnum = +| One = 1 +| Two = 2 +| Three = 3 + +// value will be represented as enum value name in JSON +type TheNumberEnum = { + value: NumberEnum +} + +let data = { TheNumberEnum.value = NumberEnum.Three } + +let json = Json.serialize data +// json is """{"value":"Three"}""" + +let deserialized = Json.deserialize json +// data is { TheNumberEnum.value = NumberEnum.Three } +``` + +#### Customizing enum serialization + +EnumValue member of [JsonField](src/FSharp.Json/InterfaceTypes.fs) attribute could be used to change serialization of enums. +There are two [modes](src/FSharp.Json/InterfaceTypes.fs) supported currently: enum value name and enum value. + +Here's an example of custom enum serialization: +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type NumberEnum = +| One = 1 +| Two = 2 +| Three = 3 + +// value will be represented as enum value in JSON +type TheAttributedNumberEnum = { + [] + value: NumberEnum +} + +let data = { TheNumberEnum.value = NumberEnum.Three } + +let json = Json.serialize data +// json is """{"value":3}""" + +let deserialized = Json.deserialize json +// data is { TheNumberEnum.value = NumberEnum.Three } +``` + +#### Default enum behaviour + +Sometimes it's needed always serialize enum value as it's value. +Annotating each member of any enum type would be cumbersome. +[JsonConfig]() allows to override default enum behaviour. + +Check the example below: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type NumberEnum = +| One = 1 +| Two = 2 +| Three = 3 + +// value will be represented as enum value name in JSON +type TheNumberEnum = { + value: NumberEnum +} + +let data = { TheNumberEnum.value = NumberEnum.Three } + +// create configuration instructing to serialize enum as enum value +let config = JsonConfig.create(enumValue = EnumMode.Value) + +let json = Json.serializeEx config data +// json is """{"value":3}""" +// value was serialized as enum value which is 3 + +let deserialized = Json.deserializeEx config json +// data is { TheNumberEnum.value = NumberEnum.Three } +``` + +## Unions + +JSON format does not support any data structure similiar to [F# discriminated unions](https://fsharpforfunandprofit.com/posts/discriminated-unions/). +Though it is still possible to represent union in JSON in some reasonable way. +By deafault FSharp.Json serializes union into JSON object with the only one field. +Name of the field corresponds to the union case. Value of the field corresponds to the union case value. + +Here's some example of default union serialization: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +type TheUnion = +| OneFieldCase of string +| ManyFieldsCase of string*int + +let data = OneFieldCase "The string" + +let json = Json.serialize data +// json is """{"OneFieldCase":"The string"}""" + +let deserialized = Json.deserialize json +// deserialized is OneFieldCase("The string") +``` + +#### Changing union case key + +The string that represents union case key could be changed with [JsonUnionCase attribute](src/FSharp.Json/InterfaceTypes.fs). + +See the example below: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +// OneFieldCase is attributed to be "case1" in JSON +type TheUnion = +| [] OneFieldCase of string +| ManyFieldsCase of string*int + +let data = OneFieldCase "The string" + +let json = Json.serialize data +// json is """{"case1":"The string"}""" + +let deserialized = Json.deserialize json +// deserialized is OneFieldCase("The string") +``` + +#### Single case union + +Single case union is a special scenario. +Read [here](https://fsharpforfunandprofit.com/posts/designing-with-types-single-case-dus/) about single case union usage. +In such case serializing union as JSON object is overkill. +It's more convenient to represent single case union the same way as a wrapped type. + +Here's example of single case union serialization: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +// Single case union type +type TheUnion = SingleCase of string + +type TheRecord = { + // value will be just a string - wrapped into union type + value: TheUnion +} + +let data = { TheRecord.value = SingleCase "The string" } + +let json = Json.serialize data +// json is """{"value":"The string"}""" + +let deserialized = Json.deserialize json +// deserialized is { TheRecord.value = SingleCase "The string" } +``` + +#### Union modes + +There's [union mode](src/FSharp.Json/InterfaceTypes.fs) that represents union as JSON object with two fields. +One field is for case key and another one is for case value. This mode is called "case key as a field value" +If this mode is used then names of these two field should be provided through [JsonUnion attribute](src/FSharp.Json/InterfaceTypes.fs). + +See the example below: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +// The union will be represented as JSON object with two fields: casekey and casevalue. +[] +type TheUnion = +| OneFieldCase of string +| ManyFieldsCase of string*int + +let data = OneFieldCase "The string" + +let json = Json.serialize data +// json is """{"casekey":"OneFieldCase", "casevalue":"The string"}""" + +let deserialized = Json.deserialize json +// deserialized is OneFieldCase("The string") +``` + +## Type Transform + +[Supported types](supported-types) section maps F# types into JSON types. +What if some data needed to be represented as a different type then the default JSON type? +If changing type of the member in F# is not an option then type transform can help. + +Any data member is translated F# Type -> JSON type by [default](supported-types) types mapping. +[Type Transform](src/FSharp.Json/InterfaceTypes.fs) is applied in the middle of this translation: F# Type -> Alternative F# Type -> JSON type. +Alternative F# Type -> JSON type is still done by default types mapping, type transform is responsible for F# Type -> Alternative F# Type. + +The [Transforms](src/FSharp.Json/Transforms.fs) module contains transforms that are defined by FSharp.Json library. +You can define your own transforms by implementing [ITypeTransform interface](src/FSharp.Json/InterfaceTypes.fs). + +#### DateTime as epoch time + +Let's imagine that some DateTime member should be represented as [epoch time](https://en.wikipedia.org/wiki/Unix_time) in JSON. +Epoch time is int64 however it is still convenient to work with DateTime in F# code. +In such case [DateTimeEpoch transform](src/FSharp.Json/Transforms.fs) is useful. + +Here's an example of DateTimeEpoch transform usage: + +```fsharp +#r "FSharp.Json.dll" +open System +open FSharp.Json + +// value will be represented as epoch time in JSON +type DateTimeRecord = { + [)>] + value: DateTime +} + +let json = Json.serialize { DateTimeRecord.value = new DateTime(2017, 11, 5, 22, 50, 45) } +// json is """{"value":1509922245}""" + +let deserialized = Json.deserialize json +// deserialized is { DateTimeRecord.value = new DateTime(2017, 11, 5, 22, 50, 45) } +``` + +#### System.Uri as string + +This transformer transforms a Uri to/from a string for serialization. On deserialization, the string value is +handed to the System.Uri constructor. When the URI string is malformed, a UriFormatException might be thrown. + +Example use: + +```fsharp +#r "FSharp.Json.dll" +open System +open FSharp.Json + +// value will be represented as epoch time in JSON +type UriRecord = { + [)>] + value: Uri +} + +let json = Json.serialize { UriRecord.value = Uri("http://localhost:8080/") } +// json is """{"value":"http://localhost:8080/"}""" + +let deserialized = Json.deserialize json +// deserialized is { UriRecord.value = Uri("http://localhost:8080/") } +``` + +#### Transform by default + +To be developed.... + +## Untyped Data + +Using obj type in F# code is bad code smell. +Though FSharp.Json can serialize and deserialize structures without type information. +For allowing obj type in serialization/deserialization allowUntyped flag should be set to `true` on [JsonConfig](src/FSharp.Json/InterfaceTypes.fs). + +#### Serialization of obj + +When serializing obj FSharp.Json uses real run time type. + +Check this example: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +// Record type with obj member +type ObjectRecord = { + value: obj +} + +// Set string value to obj member +let data = { ObjectRecord.value = "The string" } + +// Need to allow untyped data +let config = JsonConfig.create(allowUntyped = true) + +let json = Json.serializeEx config data +// json is """{"value": "The string"}""" +// value was serialized as string because it was assigned to string +``` + +#### Deserialization of obj + +When deserializing obj FSharp.Json assumes the type from JSON. + +See example below: + +```fsharp +#r "FSharp.Json.dll" +open FSharp.Json + +// Record type with obj member +type ObjectRecord = { + value: obj +} + +// value is assigned to string +let json = """{"value": "The string"}""" + +// Need to allow untyped data +let config = JsonConfig.create(allowUntyped = true) + +let data = Json.deserializeEx config json +// data is { ObjectRecord.value = "The string" } +// value was deserialized as string because it was string in JSON +``` + +## Release Notes + +Could be found [here](RELEASE_NOTES.md). + +## Contributing and copyright + +The project is hosted on [GitHub][gh] where you can [report issues][issues], fork +the project and submit pull requests. If you're adding a new public API, please also +consider adding documentation to this [README][readme]. + +The library is available under Public Domain license, which allows modification and +redistribution for both commercial and non-commercial purposes. For more information see the +[License file][license] in the GitHub repository. + + [readme]: tree/master/README.md + [gh]: https://github.com/vsapronov/FSharp.Json + [issues]: https://github.com/vsapronov/FSharp.Json/issues + [license]: https://github.com/vsapronov/FSharp.Json/blob/master/LICENSE.txt + +## Maintainer(s) + +- [@vsapronov](https://github.com/vsapronov) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 25eb60e..005b3e5 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,24 +1,36 @@ -#### 0.3.4 +# Release Notes + +## 0.3.7 +* Added support for numeric types: byte, sbyte, int16, uint16, uint, uint64, bigint +* Added support for floating point single type + +## 0.3.6 +* Documentation cleanup + +## 0.3.5 +* Moved to Release build + +## 0.3.4 * Moved to .NET Standard -#### 0.3.3 +## 0.3.3 * Added .NET Core support -#### 0.3.2 +## 0.3.2 * Added Transform for Uri type -#### 0.3.1 +## 0.3.1 * Fixed FSharp.Core dependency to allow newer versions -#### 0.3 +## 0.3 * Fix for tuples containing option types * Support for char type * Support for enums based on byte and char types * Configurable enum mode * Configurable unformatted setting -#### 0.2 +## 0.2 * Single case union as wrapped type -#### 0.1 +## 0.1 * Initial release \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 3a05052..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,9 +0,0 @@ -init: - - git config --global core.autocrlf input -build_script: - - cmd: dotnet test tests\FSharp.Json.Tests\FSharp.Json.Tests.fsproj -test: off -version: 0.0.1.{build} -artifacts: - - path: bin - name: bin diff --git a/build.cmd b/build.cmd deleted file mode 100644 index 09b44ff..0000000 --- a/build.cmd +++ /dev/null @@ -1,18 +0,0 @@ -@echo off -cls - -.paket\paket.bootstrapper.exe -if errorlevel 1 ( - exit /b %errorlevel% -) - -.paket\paket.exe restore -if errorlevel 1 ( - exit /b %errorlevel% -) - -IF NOT EXIST build.fsx ( - .paket\paket.exe update - packages\build\FAKE\tools\FAKE.exe init.fsx -) -packages\build\FAKE\tools\FAKE.exe build.fsx %* diff --git a/build.fsx b/build.fsx deleted file mode 100644 index d70fc33..0000000 --- a/build.fsx +++ /dev/null @@ -1,218 +0,0 @@ -// -------------------------------------------------------------------------------------- -// FAKE build script -// -------------------------------------------------------------------------------------- - -#r @"packages/build/FAKE/tools/FakeLib.dll" -open System.Web.UI.WebControls.WebParts -open Fake -open Fake.Git -open Fake.AssemblyInfoFile -open Fake.ReleaseNotesHelper -open Fake.UserInputHelper -open Fake.NuGetHelper -open Fake.DotNetCli - -open System -open System.IO -open System.Diagnostics - -// -------------------------------------------------------------------------------------- -// START TODO: Provide project-specific details below -// -------------------------------------------------------------------------------------- - -// Information about the project are used -// - for version and project name in generated AssemblyInfo file -// - by the generated NuGet package -// - to run tests and to publish documentation on GitHub gh-pages -// - for documentation, you also need to edit info in "docsrc/tools/generate.fsx" - -// Git configuration (used for publishing documentation in gh-pages branch) -// The profile where the project is posted -let gitOwner = "vsapronov" -let gitHome = sprintf "%s/%s" "https://github.com" gitOwner - -// The name of the project on GitHub -let gitName = "FSharp.Json" - -// Read additional information from the release notes document -let release = LoadReleaseNotes "RELEASE_NOTES.md" - - -// -------------------------------------------------------------------------------------- -// Generate the documentation - - -let fakePath = "packages" "build" "FAKE" "tools" "FAKE.exe" -let fakeStartInfo script workingDirectory args fsiargs environmentVars = - (fun (info: ProcessStartInfo) -> - info.FileName <- System.IO.Path.GetFullPath fakePath - info.Arguments <- sprintf "%s --fsiargs -d:FAKE %s \"%s\"" args fsiargs script - info.WorkingDirectory <- workingDirectory - let setVar k v = - info.EnvironmentVariables.[k] <- v - for (k, v) in environmentVars do - setVar k v - setVar "MSBuild" msBuildExe - setVar "GIT" Git.CommandHelper.gitPath - setVar "FSI" fsiPath) - -/// Run the given buildscript with FAKE.exe -let executeFAKEWithOutput workingDirectory script fsiargs envArgs = - let exitCode = - ExecProcessWithLambdas - (fakeStartInfo script workingDirectory "" fsiargs envArgs) - TimeSpan.MaxValue false ignore ignore - System.Threading.Thread.Sleep 1000 - exitCode - -// Documentation -let buildDocumentationTarget fsiargs target = - trace (sprintf "Building documentation (%s), this could take some time, please wait..." target) - let exit = executeFAKEWithOutput "docsrc/tools" "generate.fsx" fsiargs ["target", target] - if exit <> 0 then - failwith "generating reference documentation failed" - () - -Target "GenerateReferenceDocs" (fun _ -> - buildDocumentationTarget "-d:RELEASE -d:REFERENCE" "Default" -) - -let generateHelp' fail debug = - let args = - if debug then "--define:HELP" - else "--define:RELEASE --define:HELP" - try - buildDocumentationTarget args "Default" - traceImportant "Help generated" - with - | e when not fail -> - traceImportant "generating help documentation failed" - -let generateHelp fail = - generateHelp' fail false - -Target "GenerateHelp" (fun _ -> - DeleteFile "docsrc/content/release-notes.md" - CopyFile "docsrc/content/" "RELEASE_NOTES.md" - Rename "docsrc/content/release-notes.md" "docsrc/content/RELEASE_NOTES.md" - - DeleteFile "docsrc/content/license.md" - CopyFile "docsrc/content/" "LICENSE.txt" - Rename "docsrc/content/license.md" "docsrc/content/LICENSE.txt" - - generateHelp true -) - -Target "GenerateHelpDebug" (fun _ -> - DeleteFile "docsrc/content/release-notes.md" - CopyFile "docsrc/content/" "RELEASE_NOTES.md" - Rename "docsrc/content/release-notes.md" "docsrc/content/RELEASE_NOTES.md" - - DeleteFile "docsrc/content/license.md" - CopyFile "docsrc/content/" "LICENSE.txt" - Rename "docsrc/content/license.md" "docsrc/content/LICENSE.txt" - - generateHelp' true true -) - -Target "KeepRunning" (fun _ -> - use watcher = !! "docsrc/content/**/*.*" |> WatchChanges (fun changes -> - generateHelp' true true - ) - - traceImportant "Waiting for help edits. Press any key to stop." - - System.Console.ReadKey() |> ignore - - watcher.Dispose() -) - -Target "GenerateDocs" DoNothing - -let createIndexFsx lang = - let content = """(*** hide ***) -// This block of code is omitted in the generated HTML documentation. Use -// it to define helpers that you do not want to show in the documentation. -#I "../../../bin" - -(** -F# Project Scaffold ({0}) -========================= -*) -""" - let targetDir = "docsrc/content" lang - let targetFile = targetDir "index.fsx" - ensureDirectory targetDir - System.IO.File.WriteAllText(targetFile, System.String.Format(content, lang)) - -Target "AddLangDocs" (fun _ -> - let args = System.Environment.GetCommandLineArgs() - if args.Length < 4 then - failwith "Language not specified." - - args.[3..] - |> Seq.iter (fun lang -> - if lang.Length <> 2 && lang.Length <> 3 then - failwithf "Language must be 2 or 3 characters (ex. 'de', 'fr', 'ja', 'gsw', etc.): %s" lang - - let templateFileName = "template.cshtml" - let templateDir = "docsrc/tools/templates" - let langTemplateDir = templateDir lang - let langTemplateFileName = langTemplateDir templateFileName - - if System.IO.File.Exists(langTemplateFileName) then - failwithf "Documents for specified language '%s' have already been added." lang - - ensureDirectory langTemplateDir - Copy langTemplateDir [ templateDir templateFileName ] - - createIndexFsx lang) -) - -// -------------------------------------------------------------------------------------- -// Release Scripts - -#load "paket-files/build/fsharp/FAKE/modules/Octokit/Octokit.fsx" -open Octokit - -Target "Release" (fun _ -> - let user = - match getBuildParam "github-user" with - | s when not (String.IsNullOrWhiteSpace s) -> s - | _ -> getUserInput "Username: " - let pw = - match getBuildParam "github-pw" with - | s when not (String.IsNullOrWhiteSpace s) -> s - | _ -> getUserPassword "Password: " - let remote = - Git.CommandHelper.getGitResult "" "remote -v" - |> Seq.filter (fun (s: string) -> s.EndsWith("(push)")) - |> Seq.tryFind (fun (s: string) -> s.Contains(gitOwner + "/" + gitName)) - |> function None -> gitHome + "/" + gitName | Some (s: string) -> s.Split().[0] - - StageAll "" - Git.Commit.Commit "" (sprintf "Bump version to %s" release.NugetVersion) - Branches.pushBranch "" remote (Information.getBranchName "") - - Branches.tag "" release.NugetVersion - Branches.pushTag "" remote release.NugetVersion - - // release on github - createClient user pw - |> createDraft gitOwner gitName release.NugetVersion (release.SemVer.PreRelease <> None) release.Notes - // TODO: |> uploadFile "PATH_TO_FILE" - |> releaseDraft - |> Async.RunSynchronously -) - -// -------------------------------------------------------------------------------------- - -"GenerateHelp" - ==> "GenerateReferenceDocs" - ==> "GenerateDocs" - -"GenerateHelpDebug" - ==> "KeepRunning" - -RunTargetOrDefault "GenerateDocs" - diff --git a/build.sh b/build.sh deleted file mode 100644 index c5de482..0000000 --- a/build.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env bash - -set -eu - -cd "$(dirname "$0")" - -PAKET_BOOTSTRAPPER_EXE=.paket/paket.bootstrapper.exe -PAKET_EXE=.paket/paket.exe -FAKE_EXE=packages/build/FAKE/tools/FAKE.exe - -FSIARGS="" -FSIARGS2="" -OS=${OS:-"unknown"} -if [ "$OS" != "Windows_NT" ] -then - # Can't use FSIARGS="--fsiargs -d:MONO" in zsh, so split it up - # (Can't use arrays since dash can't handle them) - FSIARGS="--fsiargs" - FSIARGS2="-d:MONO" -fi - -run() { - if [ "$OS" != "Windows_NT" ] - then - mono "$@" - else - "$@" - fi -} - -yesno() { - # NOTE: Defaults to NO - read -p "$1 [y/N] " ynresult - case "$ynresult" in - [yY]*) true ;; - *) false ;; - esac -} - -set +e -run $PAKET_BOOTSTRAPPER_EXE -bootstrapper_exitcode=$? -set -e - -if [ "$OS" != "Windows_NT" ] && - [ $bootstrapper_exitcode -ne 0 ] && - [ $(certmgr -list -c Trust | grep X.509 | wc -l) -le 1 ] && - [ $(certmgr -list -c -m Trust | grep X.509 | wc -l) -le 1 ] -then - echo "Your Mono installation has no trusted SSL root certificates set up." - echo "This may result in the Paket bootstrapper failing to download Paket" - echo "because Github's SSL certificate can't be verified. One way to fix" - echo "this issue would be to download the list of SSL root certificates" - echo "from the Mozilla project by running the following command:" - echo "" - echo " mozroots --import --sync" - echo "" - echo "This will import over 100 SSL root certificates into your Mono" - echo "certificate repository." - echo "" - if yesno "Run 'mozroots --import --sync' now?" - then - mozroots --import --sync - else - echo "Attempting to continue without running mozroots. This might fail." - fi - # Re-run bootstrapper whether or not the user ran mozroots, because maybe - # they fixed the problem in a separate terminal window. - run $PAKET_BOOTSTRAPPER_EXE -fi - -run $PAKET_EXE restore - -[ ! -e build.fsx ] && run $PAKET_EXE update -[ ! -e build.fsx ] && run $FAKE_EXE init.fsx -run $FAKE_EXE "$@" $FSIARGS $FSIARGS2 build.fsx - diff --git a/docsrc/content/api_overview.md b/docsrc/content/api_overview.md deleted file mode 100644 index dfc7c42..0000000 --- a/docsrc/content/api_overview.md +++ /dev/null @@ -1,40 +0,0 @@ -API Overview -============ - -Most of API functions are defined in [Json module](reference/fsharp-json-json.html). - -Easiest way to serialize is to call `Json.serialize` function. -It serializes any supported F# type to string containing JSON. - -Similarly easiest way to deserialize is to call `Json.deserialize<'T>` function. -It takes string containing JSON and returns instance of type 'T. - -Advanced functions ------------------- - -Functions `Json.serialize` and `Json.deserialize` are using default configuration. -Whenever custom configuration should be used following functions are useful: - - * `Json.serializeEx` - * `Json.deserializeEx<'T>` - -Prefix `Ex` stands for "extended". Both of these functions take [JsonConfig](reference/fsharp-json-jsonconfig.html) instance as a first parameter. - -Configuration -------------- - -[JsonConfig](reference/fsharp-json-jsonconfig.html) represents global configuration of serialization. -There's convenient way to override default configuration by using `JsonConfig.create` function. -All parameters of the function are optional and those that are provided override default values. - -Examples of how to create and use JsonConfig could be found on pages discussing corresponding features. -For example, custom `jsonFieldNaming` could be found [here](fields_naming.html#Change-all-fields-names). - -Unformatted JSON ----------------- - -Some products like [Apache Spark](https://spark.apache.org/) require unformatted JSON in a single line. -It is usefull to produce unformatted single line JSON in some other scenarios. -There is a function to produce unformatted JSON: `Json.serializeU`. -`U` stands for "unformatted". It has the same signature as `Json.serialize` function. -The function is a shorthand to using `unformatted` member on [JsonConfig](reference/fsharp-json-jsonconfig.html). diff --git a/docsrc/content/basic_example.fsx b/docsrc/content/basic_example.fsx deleted file mode 100644 index bea2895..0000000 --- a/docsrc/content/basic_example.fsx +++ /dev/null @@ -1,29 +0,0 @@ -(*** hide ***) -#I "../../bin/FSharp.Json" - -(** -Basic Usage Example -=================== - -Here's basic example of FSharp.Json usage: -*) -#r "FSharp.Json.dll" -open FSharp.Json - -// Your record type -type RecordType = { - stringMember: string - intMember: int -} - -let data: RecordType = { stringMember = "The string"; intMember = 123 } - -// serialize record into JSON -let json = Json.serialize data -printfn "%s" json -// json is """{ "stringMember": "The string", "intMember": 123 }""" - -// deserialize from JSON to record -let deserialized = Json.deserialize json -printfn "%A" deserialized -// deserialized is {stringMember = "some value"; intMember = 123;} diff --git a/docsrc/content/enums.fsx b/docsrc/content/enums.fsx deleted file mode 100644 index af41476..0000000 --- a/docsrc/content/enums.fsx +++ /dev/null @@ -1,98 +0,0 @@ -(*** hide ***) -#I "../../bin/FSharp.Json" - -(** -Emums -===== - -By default enum value is represented as `string` that is enum member name. - -Check example code below: -*) -#r "FSharp.Json.dll" -open FSharp.Json - -type NumberEnum = -| One = 1 -| Two = 2 -| Three = 3 - -// value will be represented as enum value name in JSON -type TheNumberEnum = { - value: NumberEnum -} - -let data = { TheNumberEnum.value = NumberEnum.Three } - -let json = Json.serialize data -// json is """{"value":"Three"}""" - -let deserialized = Json.deserialize json -// data is { TheNumberEnum.value = NumberEnum.Three } - -(** - -Customizing enum serialization ------------------------------- - -EnumValue member of [JsonField](reference/fsharp-json-jsonfield.html) attribute could be used to change serialization of enums. -There are two [modes](reference/fsharp-json-enummode.html) supported currently: enum value name and enum value. - -Here's an example of custom enum serialization: -*) -#r "FSharp.Json.dll" -open FSharp.Json - -type NumberEnum = -| One = 1 -| Two = 2 -| Three = 3 - -// value will be represented as enum value in JSON -type TheAttributedNumberEnum = { - [] - value: NumberEnum -} - -let data = { TheNumberEnum.value = NumberEnum.Three } - -let json = Json.serialize data -// json is """{"value":3}""" - -let deserialized = Json.deserialize json -// data is { TheNumberEnum.value = NumberEnum.Three } - -(** -Default enum behaviour ----------------------- - -Sometimes it's needed always serialize enum value as it's value. -Annotating each member of any enum type would be cumbersome. -[JsonConfig]() allows to override default enum behaviour. - -Check the example below: -*) -#r "FSharp.Json.dll" -open FSharp.Json - -type NumberEnum = -| One = 1 -| Two = 2 -| Three = 3 - -// value will be represented as enum value name in JSON -type TheNumberEnum = { - value: NumberEnum -} - -let data = { TheNumberEnum.value = NumberEnum.Three } - -// create configuration instructing to serialize enum as enum value -let config = JsonConfig.create(enumValue = EnumMode.Value) - -let json = Json.serializeEx config data -// json is """{"value":3}""" -// value was serialized as enum value which is 3 - -let deserialized = Json.deserializeEx config json -// data is { TheNumberEnum.value = NumberEnum.Three } diff --git a/docsrc/content/fields_naming.fsx b/docsrc/content/fields_naming.fsx deleted file mode 100644 index 654f393..0000000 --- a/docsrc/content/fields_naming.fsx +++ /dev/null @@ -1,77 +0,0 @@ -(*** hide ***) -#I "../../bin/FSharp.Json" - -(** -Customizing JSON Fields Names -============================= - -When record type instance is serialized into JSON members names are used as JSON fields names. -In some scenarios the JSON should have different fields names then F# record type. -This page describes how FSharp.Json library provides JSON customization abilities. - -Change JSON field name ----------------------- - -JSON field name could be easily customized with JsonField attribute: -*) -#r "FSharp.Json.dll" -open FSharp.Json - -// attribute stringMember with JsonField -type RecordType = { - [] - stringMember: string - intMember: int -} - -let data: RecordType = { stringMember = "The string"; intMember = 123 } - -let json = Json.serialize data -printfn "%s" json -// json is """{ "different_name": "The string", "intMember": 123 }""" -// pay attention that "different_name" was used as JSON field name - -let deserialized = Json.deserialize json -printfn "%A" deserialized -// deserialized is {stringMember = "some value"; intMember = 123;} - -(** -In example above JsonField attribute affects both serialization and deserialization. - -Change all fields names ------------------------ - -What if all fields names should be different in JSON compared to F# member names? -This could be needed for example if naming convention used in F# does not match JSON naming convention. -FSharp.Json allows to map fields names with naming function. - -In the example below all camel case F# record members are mapped into snake case JSON fields: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -// attribute stringMember with JsonField -type RecordType = { - stringMember: string - intMember: int -} - -let data: RecordType = { stringMember = "The string"; intMember = 123 } - -// create config with JSON field naming setting -let config = JsonConfig.create(jsonFieldNaming = Json.snakeCase) - -let json = Json.serializeEx config data -printfn "%s" json -// json is """{ "string_member": "The string", "int_member": 123 }""" -// pay attention that "string_member" and "int_member" are in snake case - -let deserialized = Json.deserializeEx config json -printfn "%A" deserialized -// deserialized is {stringMember = "some value"; intMember = 123;} - -(** -The `Json` module defines two naming functions that could be used out of the box: snakeCase and lowerCamelCase. -The one can define it's own naming rule - it's just a function `string -> string`. -*) diff --git a/docsrc/content/index.md b/docsrc/content/index.md deleted file mode 100644 index 5c46d53..0000000 --- a/docsrc/content/index.md +++ /dev/null @@ -1,84 +0,0 @@ -FSharp.Json: JSON Serialization Library -======================================= - -FSharp.Json is F# JSON serialization library based on Reflection it's written in F# for F#. - -Find [basic usage example](basic_example.html) to get an idea how to use the library. - -Why? ----- - -Why we need yet another F# JSON serialization library? -Well, if you happy with the library that you are using currently then probably you do not need another one. -There are several available options to choose from: - - * [JSON Type Provider](http://fsharp.github.io/FSharp.Data/library/JsonProvider.html) - * [Json.Net aka Newtonsoft.Json](https://www.newtonsoft.com/json) - * [Chiron](https://github.com/xyncro/chiron) - * [JsonFSharp](https://github.com/PeteProgrammer/JsonFSharp) - * Let me know what library I missed here - -While all of these libraries do provide some good functionality all of them seem to have a weakness. -Some of them are written in C# without out of the box support for F# types. -Additionally null safety is alien concept in C# however it is a must in F#. -Other libraries provide only low-level functionality leaving a lot of cumbersome coding work to library user. -The type provider library forces developer to define JSON schema in form of json examples which is far from convenient way of defining schemas. - -FSharp.Json was developed with these values in mind: - - * Easy to use API - * Automatic mapping of F# types into JSON - * Out of the box support for F# types - * Null safety - -How? ----- - -FSharp.Json is pure F# library. -It uses [Reflection][reflection] to get information about F# types at runtime. -The code from [FSharp.Data library][fsharp_data] is used for parsing JSON. -The [JsonValue type][jsonvalue_type] is internalized in the FSharp.Json library. -The core of FSharp.Json library is located in single [Core.fs file][core]. - - [reflection]: https://docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/reflection - [fsharp_data]: http://fsharp.github.io/FSharp.Data/ - [jsonvalue_type]: http://fsharp.github.io/FSharp.Data/reference/fsharp-data-jsonvalue.html - [core]: https://github.com/vsapronov/FSharp.Json/blob/master/src/FSharp.Json/Core.fs - -Documentation -------------- - -Following pages are describing main features and aspects of FSharp.Json: - - * [Basic Usage Example](basic_example.html) - * [API Overview](api_overview.html) - * [Supported Types](supported_types.html) - * [Fields Naming](fields_naming.html) - * [Null Safety](null_safety.html) - * [Enums](enums.html) - * [Unions](unions.html) - * [Type Transform](transform.html) - * [Untyped Data](untyped_data.html) - -Each feature of FSharp.Json is thoroughly covered by [unit tests][unit_tests]. - -[API Reference](reference/index.html) contains automatically generated documentation for all types, modules -and functions in the library. - - [unit_tests]: https://github.com/vsapronov/FSharp.Json/tree/master/tests/FSharp.Json.Tests - -Contributing and copyright --------------------------- - -The project is hosted on [GitHub][gh] where you can [report issues][issues], fork -the project and submit pull requests. If you're adding a new public API, please also -consider adding [samples][content] that can be turned into a documentation. - -The library is available under Public Domain license, which allows modification and -redistribution for both commercial and non-commercial purposes. For more information see the -[License file][license] in the GitHub repository. - - [content]: https://github.com/vsapronov/FSharp.Json/tree/master/docsrc/content - [gh]: https://github.com/vsapronov/FSharp.Json - [issues]: https://github.com/vsapronov/FSharp.Json/issues - [license]: https://github.com/vsapronov/FSharp.Json/blob/master/LICENSE.txt diff --git a/docsrc/content/null_safety.fsx b/docsrc/content/null_safety.fsx deleted file mode 100644 index fa9b3e3..0000000 --- a/docsrc/content/null_safety.fsx +++ /dev/null @@ -1,124 +0,0 @@ -(*** hide ***) -#I "../../bin/FSharp.Json" - -(** -Null Safety -=========== - -FSharp.Json is null safe. -This means that library will never deserialize JSON into anything with null value. -FSharp.Json treats option types as an instruction that value could be null in JSON. -For example member of type `string` can't get null value in FSharp.Json, however `string option` member can have `None` value which is translated into null in JSON. -Same logic applies to all types supported by FSharp.Json library. -See examples in sections below. - -Deserialization of null ------------------------ - -In the example below `stringMember` member can't be assigned to null even though F# allows string to be null: -*) -#r "FSharp.Json.dll" -open FSharp.Json - -type RecordType = { - stringMember: string -} - -let json = """{"stringMember":null}""" - -// this attempt to deserialize will throw exception -let deserialized = Json.deserialize json - -(** -What if the member `stringMember` could be null in JSON? -In such case the record type should explictly use string option type: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -type RecordType = { - stringMember: string option -} - -let json = """{"stringMember":null}""" - -// this attempt to deserialize will work fine -let deserialized = Json.deserialize json - -// deserialized.stringMember equals to None -printfn "%A" deserialized - -(** -If value could be null or missing in JSON then F# type used for corresponding member should be option. - -Customization of null deserialization -------------------------------------- - -What is the difference between missing field in JSON and field assigned to null? -By default FSharp.Json library treats both cases as None, however you can customize this logic. -Behaviour that is used to treat option types could be configured: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -type RecordType = { - stringMember: string option -} - -// this will work fine by default even when option field is missing -let deserialized1 = Json.deserialize "{}" - -printfn "%A" deserialized1 -// deserialized1.stringMember equals to None - -// create config that require option None to be represented as null -let config = JsonConfig.create(deserializeOption = DeserializeOption.RequireNull) - -// this will throw exception since config in use requires null for None deserialization. -let deserialized2 = Json.deserializeEx config "{}" - -(** -Serialization of None ---------------------- -If some member of `option` type has None value it will be serialized into JSON null by default: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -type RecordType = { - stringMember: string option -} - -// stringMember has None value -let data = { RecordType.stringMember = None } -let json = Json.serialize data -printfn "%s" json -// json is: """{ "stringMember": null }""" - -(** -Customization of None serialization ------------------------------------ -The one can control how None values are respresented in JSON through config. - -Example belows shows how to omit members with None values: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -type RecordType = { - stringMember: string option -} - -// stringMember has None value -let data = { RecordType.stringMember = None } - -// create config that omits null values -let config = JsonConfig.create(serializeNone = SerializeNone.Omit) - -let json = Json.serializeEx config data -printfn "%s" json -// json is: """{}""" diff --git a/docsrc/content/supported_types.md b/docsrc/content/supported_types.md deleted file mode 100644 index 02f7373..0000000 --- a/docsrc/content/supported_types.md +++ /dev/null @@ -1,91 +0,0 @@ -Supported Types -=============== - -Here's full list of F# types that are supported by FSharp.Json library. - -int ---- -Represented as `number` in JSON. - -int64 ------ -Represented as `number` in JSON. - -float ------ -Represented as `number` in JSON. - -decimal -------- -Represented as `number` in JSON. - -string ------- -Represented as `string` in JSON. - -char ----- -Represented as `string` with single character in JSON. - -bool ----- -Represented as `bool` in JSON. - -DateTime --------- -Represented as `string` according to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). -Could be represented as `number` epoch time using [transform](transform.html). - -DateTimeOffset --------------- -Represented as `string` according to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). -Could be represented as `number` epoch time using [transform](transform.html). - -Guid ----- -Represented as `string`. - -Uri ----- -Represented as `string` when using the provided transformation attribute - see [transform](transform.html). - -Enum ----- -Represented as `string` that is enum value name. -Could be represented as `number` corresponding to enum value. -Read more on [Enums](enums.html) page. - -option ------- -Option is not represented by itself. -None value might be represented as `null` or omitted. -Read more on [Null Safety](null_safety.html) page. - -tuple ------ -Tuples are represented as `list` in JSON. - -record ------- -Records are represented as `object` in JSON. - -map ---- -Map is represented as `object` in JSON. - -array ------ -Array is represented as `list` in JSON. - -list ----- -List is represented as `list` in JSON. - -union ------ -Unions are represented as `object` with special structure in JSON. -Read more on [Unions](unions.html) page. - -obj ---- -Read [Untyped Data](untyped_data.html) page. \ No newline at end of file diff --git a/docsrc/content/transform.fsx b/docsrc/content/transform.fsx deleted file mode 100644 index 4090998..0000000 --- a/docsrc/content/transform.fsx +++ /dev/null @@ -1,77 +0,0 @@ -(*** hide ***) -#I "../../bin/FSharp.Json" - -(** -Type Transform -============== - -[Supported types](supported_types.html) page maps F# types into JSON types. -What if some data needed to be represented as a different type then the default JSON type? -If changing type of the member in F# is not an option then type transform can help. - -Any data member is translated F# Type -> JSON type by [default](supported_types.html) types mapping. -[Type Transform](reference/fsharp-json-itypetransform.html) is applied in the middle of this translation: F# Type -> Alternative F# Type -> JSON type. -Alternative F# Type -> JSON type is still done by default types mapping, type transform is responsible for F# Type -> Alternative F# Type. - -The [Transforms](reference/fsharp-json-transforms.html) module contains transforms that are defined by FSharp.Json library. -You can define your own transforms by implementing [ITypeTransform interface](reference/fsharp-json-itypetransform.html). - -DateTime as epoch time ----------------------- - -Let's imagine that some DateTime member should be represented as [epoch time](https://en.wikipedia.org/wiki/Unix_time) in JSON. -Epoch time is int64 however it is still convenient to work with DateTime in F# code. -In such case [DateTimeEpoch transform](reference/fsharp-json-transforms-datetimeepoch.html) is useful. -You can see it's implementation [here](https://github.com/vsapronov/FSharp.Json/blob/master/src/FSharp.Json/Transforms.fs). - -Here's an example of DateTimeEpoch transform usage: -*) -#r "FSharp.Json.dll" -open System -open FSharp.Json - -// value will be represented as epoch time in JSON -type DateTimeRecord = { - [)>] - value: DateTime -} - -let json = Json.serialize { DateTimeRecord.value = new DateTime(2017, 11, 5, 22, 50, 45) } -// json is """{"value":1509922245}""" - -let deserialized = Json.deserialize json -// deserialized is { DateTimeRecord.value = new DateTime(2017, 11, 5, 22, 50, 45) } - -(** - -System.Uri as string ----------------------- - -This transformer transforms a Uri to/from a string for serialization. On deserialization, the string value is -handed to the System.Uri constructor. When the URI string is malformed, a UriFormatException might be thrown. -Example use: - - -*) -#r "FSharp.Json.dll" -open System -open FSharp.Json - -// value will be represented as epoch time in JSON -type UriRecord = { - [)>] - value: Uri -} - -let json = Json.serialize { UriRecord.value = Uri("http://localhost:8080/") } -// json is """{"value":"http://localhost:8080/"}""" - -let deserialized = Json.deserialize json -// deserialized is { UriRecord.value = Uri("http://localhost:8080/") } - -(* -Transform by default --------------------- - -To be developed.... -*) diff --git a/docsrc/content/unions.fsx b/docsrc/content/unions.fsx deleted file mode 100644 index 726f694..0000000 --- a/docsrc/content/unions.fsx +++ /dev/null @@ -1,113 +0,0 @@ -(*** hide ***) -#I "../../bin/FSharp.Json" - -(** -Unions -====== - -JSON format does not support any data structure similiar to [F# discriminated unions](https://fsharpforfunandprofit.com/posts/discriminated-unions/). -Though it is still possible to represent union in JSON in some reasonable way. -By deafault FSharp.Json serializes union into JSON object with the only one field. -Name of the field corresponds to the union case. Value of the field corresponds to the union case value. - -Here's some example of default union serialization: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -type TheUnion = -| OneFieldCase of string -| ManyFieldsCase of string*int - -let data = OneFieldCase "The string" - -let json = Json.serialize data -// json is """{"OneFieldCase":"The string"}""" - -let deserialized = Json.deserialize json -// deserialized is OneFieldCase("The string") - -(** -Changing union case key ------------------------ - -The string that represents union case key could be changed with [JsonUnionCase attribute](reference/fsharp-json-jsonunioncase.html). - -See the example below: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -// OneFieldCase is attributed to be "case1" in JSON -type TheUnion = -| [] OneFieldCase of string -| ManyFieldsCase of string*int - -let data = OneFieldCase "The string" - -let json = Json.serialize data -// json is """{"case1":"The string"}""" - -let deserialized = Json.deserialize json -// deserialized is OneFieldCase("The string") - -(** -Single case union ------------------ - -Single case union is a special scenario. -Read [here](https://fsharpforfunandprofit.com/posts/designing-with-types-single-case-dus/) about single case union usage. -In such case serializing union as JSON object is overkill. -It's more convenient to represent single case union the same way as a wrapped type. - -Here's example of single case union serialization: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -// Single case union type -type TheUnion = SingleCase of string - -type TheRecord = { - // value will be just a string - wrapped into union type - value: TheUnion -} - -let data = { TheRecord.value = SingleCase "The string" } - -let json = Json.serialize data -// json is """{"value":"The string"}""" - -let deserialized = Json.deserialize json -// deserialized is { TheRecord.value = SingleCase "The string" } - -(** -Union modes ------------ - -There's [union mode](reference/fsharp-json-unionmode.html) that represents union as JSON object with two fields. -One field is for case key and another one is for case value. This mode is called "case key as a field value" -If this mode is used then names of these two field should be provided through [JsonUnion attribute](reference/fsharp-json-jsonunion.html). - -See the example below: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -// The union will be represented as JSON object with two fields: casekey and casevalue. -[] -type TheUnion = -| OneFieldCase of string -| ManyFieldsCase of string*int - -let data = OneFieldCase "The string" - -let json = Json.serialize data -// json is """{"casekey":"OneFieldCase", "casevalue":"The string"}""" - -let deserialized = Json.deserialize json -// deserialized is OneFieldCase("The string") diff --git a/docsrc/content/untyped_data.fsx b/docsrc/content/untyped_data.fsx deleted file mode 100644 index e12c5bc..0000000 --- a/docsrc/content/untyped_data.fsx +++ /dev/null @@ -1,63 +0,0 @@ -(*** hide ***) -#I "../../bin/FSharp.Json" - -(** -Untyped Data -============ - -Using obj type in F# code is bad code smell. -Though FSharp.Json can serialize and deserialize structures without type information. -For allowing obj type in serialization/deserialization allowUntyped flag should be set to `true` on [JsonConfig](reference/fsharp-json-jsonconfig.html). - -Serialization of obj --------------------- - -When serializing obj FSharp.Json uses real run time type. - -Check this example: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -// Record type with obj member -type ObjectRecord = { - value: obj -} - -// Set string value to obj member -let data = { ObjectRecord.value = "The string" } - -// Need to allow untyped data -let config = JsonConfig.create(allowUntyped = true) - -let json = Json.serializeEx config data -// json is """{"value": "The string"}""" -// value was serialized as string because it was assigned to string - -(** -Deserialization of obj ----------------------- - -When deserializing obj FSharp.Json assumes the type from JSON. - -See example below: -*) - -#r "FSharp.Json.dll" -open FSharp.Json - -// Record type with obj member -type ObjectRecord = { - value: obj -} - -// value is assigned to string -let json = """{"value": "The string"}""" - -// Need to allow untyped data -let config = JsonConfig.create(allowUntyped = true) - -let data = Json.deserializeEx config json -// data is { ObjectRecord.value = "The string" } -// value was deserialized as string because it was string in JSON diff --git a/docsrc/files/img/logo-template.pdn b/docsrc/files/img/logo-template.pdn deleted file mode 100644 index 52606f5701c62c79bca692489b4d19150329a5e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15052 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 PmMh&#w`1pP#_E3ov+rLx diff --git a/docsrc/files/img/logo.png b/docsrc/files/img/logo.png deleted file mode 100644 index 8a2b81b9eb60b9bd48e50daed8ab02a46ee4992f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1581 zcmXw3dr%W+5Wl3S(FfL4WtA!Y%7hEfB!WB|b8zRyCiVIVTx zNzPm!kts^~A#+bmdOVOCle8;y)vowVJNH%WRc?h-Y9RnDXcF+bn z*li~;306aP%Y%y_0u+mAh&qS~58j$LH~q#G z(!AI7P7v@a;K4anPh1DRbFD{?CC`k4tH9`WpLUy8FJIZ&Ii50G%=g!EI`_@yHw=Ec z=jKi23khOhIw@uVsAYKr)=cunp1k<@G3BZAvlAk{wfW3t?TVfRh!}mVDil!J0WWlD z3%}LeE(WSh7j%QSNvLtZ*W;c&roXfii2sXub+u%OU|XU6CK6!I2&}+Z!O@)L}$~ZX;#W(qagHT z71H?4SU^yr9j8p=&f*U4Zmu~(<4}3Q;KhMCgk57OH1o0=vDbDeJlhOG@UYRlcj+!l zR&kXeG(uh~Dg6&&i4w;(*$!rzE7IKcSk_Fcs{m23@{D*jhIsVppUhHARrKQ8LG?u4 zBN}BZGVz8uIDpY5SyqBT1w7x8>wYC08jB2q```#kF{@YG6v&H^H%LlYy`>Lm6d!~= zwvWFNr!zcrtVJc)x(<`~S%g(V^^`H3H-vys4vLDLzqg6~&tQRa|$R z*ku3G;X1JCE!AJi>b+b~bDZw6)-bzsN%$Mo<7GMX4DNP3ZJGzWN+Ev!2aC;4_T+%$ zO5<9xc7at4lw5qc=hm2AI>c`C+NDdVQ31~@o&`(4jfL2awpVp;-xQ5cP|s2$A$C3V zMAwipYc*(j1|)}^U}J6}h-^9xa^P53gAXH*EXSG*^dYYk z3FpKeKWJt&mSHllRRb)R9CL6@hh~O%{5`-~ce$*}_97@*b9fu}#3XxVg~|?omiifh+Hsmj>=l_z6AzHj%P zh9}7VaJVZ*w+<*dGr}Yk37JWCJiXKDFk<0meCm1n1*b!Zh2hMsABR7*2lEj%fRFdH zVWE_cr~s-Bsw)*rRP*%zFHtiJ&C|ofM4a4m VXWV0Pq6A; -// otherwise, use the current 'output' directory. -#if RELEASE -let root = website -#else -let root = "file://" + (__SOURCE_DIRECTORY__ @@ "../../docs") -#endif - -// Paths with template/source/output locations -let bin = __SOURCE_DIRECTORY__ @@ "../../bin" -let content = __SOURCE_DIRECTORY__ @@ "../content" -let output = __SOURCE_DIRECTORY__ @@ "../../docs" -let files = __SOURCE_DIRECTORY__ @@ "../files" -let templates = __SOURCE_DIRECTORY__ @@ "templates" -let formatting = __SOURCE_DIRECTORY__ @@ "../../packages/build/FSharp.Formatting/" -let docTemplate = "docpage.cshtml" - -// Where to look for *.csproj templates (in this order) -let layoutRootsAll = new System.Collections.Generic.Dictionary() -layoutRootsAll.Add("en",[ templates; formatting @@ "templates" - formatting @@ "templates/reference" ]) -subDirectories (directoryInfo templates) -|> Seq.iter (fun d -> - let name = d.Name - if name.Length = 2 || name.Length = 3 then - layoutRootsAll.Add( - name, [templates @@ name - formatting @@ "templates" - formatting @@ "templates/reference" ])) - -// Copy static files and CSS + JS from F# Formatting -let copyFiles () = - CopyRecursive files output true |> Log "Copying file: " - ensureDirectory (output @@ "content") - CopyRecursive (formatting @@ "styles") (output @@ "content") true - |> Log "Copying styles and scripts: " - -let binaries = - let manuallyAdded = - referenceBinaries - - let conventionBased = - directoryInfo bin - |> subDirectories - |> Array.map (fun d -> d.FullName @@ (sprintf "%s.dll" d.Name)) - |> List.ofArray - - conventionBased @ manuallyAdded - -let libDirs = - let conventionBasedbinDirs = - directoryInfo bin - |> subDirectories - |> Array.map (fun d -> d.FullName) - |> List.ofArray - - conventionBasedbinDirs @ [bin] - -// Build API reference from XML comments -let buildReference () = - CleanDir (output @@ "reference") - MetadataFormat.Generate - ( binaries, output @@ "reference", layoutRootsAll.["en"], - parameters = ("root", root)::info, - sourceRepo = githubLink @@ "tree/master", - sourceFolder = __SOURCE_DIRECTORY__ @@ ".." @@ "..", - publicOnly = true,libDirs = libDirs ) - -// Build documentation from `fsx` and `md` files in `docs/content` -let buildDocumentation () = - - // First, process files which are placed in the content root directory. - - Literate.ProcessDirectory - ( content, docTemplate, output, replacements = ("root", root)::info, - layoutRoots = layoutRootsAll.["en"], - generateAnchors = true, - processRecursive = false) - - // And then process files which are placed in the sub directories - // (some sub directories might be for specific language). - - let subdirs = Directory.EnumerateDirectories(content, "*", SearchOption.TopDirectoryOnly) - for dir in subdirs do - let dirname = (new DirectoryInfo(dir)).Name - let layoutRoots = - // Check whether this directory name is for specific language - let key = layoutRootsAll.Keys - |> Seq.tryFind (fun i -> i = dirname) - match key with - | Some lang -> layoutRootsAll.[lang] - | None -> layoutRootsAll.["en"] // "en" is the default language - - Literate.ProcessDirectory - ( dir, docTemplate, output @@ dirname, replacements = ("root", root)::info, - layoutRoots = layoutRoots, - generateAnchors = true ) - -// Generate -copyFiles() -#if HELP -buildDocumentation() -#endif -#if REFERENCE -buildReference() -#endif diff --git a/docsrc/tools/templates/template.cshtml b/docsrc/tools/templates/template.cshtml deleted file mode 100644 index 2b42215..0000000 --- a/docsrc/tools/templates/template.cshtml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - @Title - - - - - - - - - - - - - - - - - Fork me on GitHub - - diff --git a/paket.dependencies b/paket.dependencies deleted file mode 100644 index a580f83..0000000 --- a/paket.dependencies +++ /dev/null @@ -1,7 +0,0 @@ -group Build - source https://nuget.org/api/v2 - - nuget FAKE - nuget FSharp.Formatting - - github fsharp/FAKE modules/Octokit/Octokit.fsx diff --git a/paket.lock b/paket.lock deleted file mode 100644 index 0a26858..0000000 --- a/paket.lock +++ /dev/null @@ -1,512 +0,0 @@ - - -GROUP Build -NUGET - remote: https://www.nuget.org/api/v2 - FAKE (4.64.12) - FSharp.Compiler.Service (2.0.0.6) - FSharp.Formatting (2.14.4) - FSharp.Compiler.Service (2.0.0.6) - FSharpVSPowerTools.Core (>= 2.3 < 2.4) - FSharpVSPowerTools.Core (2.3) - FSharp.Compiler.Service (>= 2.0.0.3) - Microsoft.NETCore.Platforms (2.0.1) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (< netstandard1.0) (>= netstandard1.1) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.1) (>= win8)) (&& (< netstandard1.0) (>= netstandard1.1) (< win8)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.1) (>= wp8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) - Microsoft.NETCore.Targets (2.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - NETStandard.Library (2.0.2) - restriction: && (< net45) (>= netstandard1.1) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= wp8) - Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.AppContext (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Console (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Globalization (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO.Compression (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO.Compression.ZipFile (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO.FileSystem (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Linq (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Net.Http (>= 4.3.2) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Net.Sockets (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.ObjectModel (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Reflection (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Threading (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Threading.Timer (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Xml.XDocument (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Octokit (0.29) - NETStandard.Library (>= 1.6) - restriction: && (< net45) (>= netstandard1.1) - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.native.System (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - runtime.native.System.IO.Compression (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (>= net46) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1.1) - runtime.native.System.Net.Http (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - System.AppContext (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) - System.Buffers (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (>= net46) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Resources.ResourceManager (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Runtime (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Threading (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Collections (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Collections.Concurrent (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Console (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.DiagnosticSource (4.4.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (>= net46) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) - System.Collections (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Reflection (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac) - System.Threading (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Diagnostics.Tools (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Tracing (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Globalization (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Globalization.Calendars (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.IO.Compression (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Buffers (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.IO.Compression.ZipFile (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Buffers (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Linq.Expressions (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Net.Http (4.3.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) (< portable-net45+win8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Net.Primitives (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Net.Sockets (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ObjectModel (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Emit (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.Lightweight (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Primitives (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.TypeExtensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Handles (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.0) (>= netstandard1.1) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.1) (>= win8)) (&& (< netstandard1.0) (>= netstandard1.1) (< win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Runtime.Numerics (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Security.Cryptography.Cng (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.3)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.OpenSsl (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.Cng (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Text.Encoding (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.RegularExpressions (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks.Extensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) - System.Collections (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) - System.Runtime (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) - System.Threading.Tasks (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) - System.Threading.Timer (4.3) - restriction: || (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) - System.Xml.ReaderWriter (4.3.1) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Xml.XDocument (4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) -GITHUB - remote: fsharp/FAKE - modules/Octokit/Octokit.fsx (b011a602d0b690fb80a30e5b97df53523d6c4b23) - Octokit (>= 0.20) \ No newline at end of file