From 2331edfc846ffaef6a1461a1d4d1bf92cd9425db Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Wed, 23 Jan 2019 16:08:34 -0200 Subject: [PATCH 01/32] Creating benchmark project --- .gitignore | 1 + .paket/Paket.Restore.targets | 10 +- FSharp.Data.GraphQL.sln | 87 +++--- .../FSharp.Data.GraphQL.Server.fsproj | 1 - .../FSharp.Data.GraphQL.Shared.fsproj | 3 +- .../ObservableExtensions.fs | 2 +- .../paket.references | 3 +- .../DatabaseSetup.fs | 164 +++++++++++ .../FSharp.Data.GraphQL.Benchmarks.Sql.fsproj | 34 +++ .../Program.fs | 10 + .../Schema.fs | 276 ++++++++++++++++++ .../scripts/fetch-database.ps1 | 25 ++ 12 files changed, 575 insertions(+), 41 deletions(-) rename src/{FSharp.Data.GraphQL.Server => FSharp.Data.GraphQL.Shared}/ObservableExtensions.fs (99%) create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/DatabaseSetup.fs create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/Program.fs create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.ps1 diff --git a/.gitignore b/.gitignore index bfcb0cbe6..257533f25 100644 --- a/.gitignore +++ b/.gitignore @@ -196,3 +196,4 @@ docs/content/release-notes.md docs/tools/FSharp.Formatting.svclog project.lock.json src/FSharp.Data.GraphQL.Samples.GiraffeServer/Properties/launchSettings.json +/tests/FSharp.Data.GraphQL.Benchmarks.Sql/ml-latest diff --git a/.paket/Paket.Restore.targets b/.paket/Paket.Restore.targets index b4f593eb8..52f41c608 100644 --- a/.paket/Paket.Restore.targets +++ b/.paket/Paket.Restore.targets @@ -62,6 +62,9 @@ true true + + + True @@ -102,7 +105,11 @@ true - + + true @@ -183,6 +190,7 @@ runtime runtime true + true diff --git a/FSharp.Data.GraphQL.sln b/FSharp.Data.GraphQL.sln index 227f34eaf..0ecdaa3e8 100644 --- a/FSharp.Data.GraphQL.sln +++ b/FSharp.Data.GraphQL.sln @@ -10,7 +10,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{63297B EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Server", "src/FSharp.Data.GraphQL.Server/FSharp.Data.GraphQL.Server.fsproj", "{474179D3-0090-49E9-88F8-2971C0966077}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Server", "src\FSharp.Data.GraphQL.Server\FSharp.Data.GraphQL.Server.fsproj", "{474179D3-0090-49E9-88F8-2971C0966077}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{BF60BC93-E09B-4E5F-9D85-95A519479D54}" ProjectSection(SolutionItems) = preProject @@ -21,86 +21,88 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{BF60 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{83F16175-43B1-4C90-A1EE-8E351C33435D}" ProjectSection(SolutionItems) = preProject - docs/tools/generate.fsx = docs/tools/generate.fsx - docs/tools/templates/template.cshtml = docs/tools/templates/template.cshtml + docs\tools\generate.fsx = docs\tools\generate.fsx + docs\tools\templates\template.cshtml = docs\tools\templates\template.cshtml EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "content", "content", "{8E6D5255-776D-4B61-85F9-73C37AA1FB9A}" ProjectSection(SolutionItems) = preProject - docs/content/client-side.md = docs/content/client-side.md - docs/content/execution-pipeline.md = docs/content/execution-pipeline.md - docs/content/index.md = docs/content/index.md - docs/content/linq.md = docs/content/linq.md - docs/content/type-system.md = docs/content/type-system.md + docs\content\client-side.md = docs\content\client-side.md + docs\content\execution-pipeline.md = docs\content\execution-pipeline.md + docs\content\index.md = docs\content\index.md + docs\content\linq.md = docs\content\linq.md + docs\content\type-system.md = docs\content\type-system.md EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{ED8079DD-2B06-4030-9F0F-DC548F98E1C4}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Tests", "tests/FSharp.Data.GraphQL.Tests/FSharp.Data.GraphQL.Tests.fsproj", "{54AAFE43-FA5F-485A-AD40-0240165FC633}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Tests", "tests\FSharp.Data.GraphQL.Tests\FSharp.Data.GraphQL.Tests.fsproj", "{54AAFE43-FA5F-485A-AD40-0240165FC633}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{B0C25450-74BF-40C2-9E02-09AADBAE2C2F}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Benchmarks", "tests/FSharp.Data.GraphQL.Benchmarks/FSharp.Data.GraphQL.Benchmarks.fsproj", "{751357AE-F2B2-4B38-956E-81E0B8606C73}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Benchmarks", "tests\FSharp.Data.GraphQL.Benchmarks\FSharp.Data.GraphQL.Benchmarks.fsproj", "{751357AE-F2B2-4B38-956E-81E0B8606C73}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "graphiql-client", "graphiql-client", "{CAE5916B-1415-4982-B705-7318D77C029C}" ProjectSection(SolutionItems) = preProject - samples/graphiql-client/.babelrc = samples/graphiql-client/.babelrc - samples/graphiql-client/index.html = samples/graphiql-client/index.html - samples/graphiql-client/index.jsx = samples/graphiql-client/index.jsx - samples/graphiql-client/package.json = samples/graphiql-client/package.json - samples/graphiql-client/server.fsx = samples/graphiql-client/server.fsx - samples/graphiql-client/webpack.config.js = samples/graphiql-client/webpack.config.js + samples\graphiql-client\.babelrc = samples\graphiql-client\.babelrc + samples\graphiql-client\index.html = samples\graphiql-client\index.html + samples\graphiql-client\index.jsx = samples\graphiql-client\index.jsx + samples\graphiql-client\package.json = samples\graphiql-client\package.json + samples\graphiql-client\server.fsx = samples\graphiql-client\server.fsx + samples\graphiql-client\webpack.config.js = samples\graphiql-client\webpack.config.js EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "relay-starter-kit", "relay-starter-kit", "{9B25360F-2CE4-43D2-AFF0-5EAA693E98F7}" ProjectSection(SolutionItems) = preProject - samples/relay-starter-kit/.babelrc = samples/relay-starter-kit/.babelrc - samples/relay-starter-kit/index.html = samples/relay-starter-kit/index.html - samples/relay-starter-kit/index.jsx = samples/relay-starter-kit/index.jsx - samples/relay-starter-kit/package.json = samples/relay-starter-kit/package.json - samples/relay-starter-kit/server.fsx = samples/relay-starter-kit/server.fsx - samples/relay-starter-kit/webpack.config.js = samples/relay-starter-kit/webpack.config.js + samples\relay-starter-kit\.babelrc = samples\relay-starter-kit\.babelrc + samples\relay-starter-kit\index.html = samples\relay-starter-kit\index.html + samples\relay-starter-kit\index.jsx = samples\relay-starter-kit\index.jsx + samples\relay-starter-kit\package.json = samples\relay-starter-kit\package.json + samples\relay-starter-kit\server.fsx = samples\relay-starter-kit\server.fsx + samples\relay-starter-kit\webpack.config.js = samples\relay-starter-kit\webpack.config.js EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "data", "data", "{E7139F5F-22CA-4392-8C1C-481A39EEB554}" ProjectSection(SolutionItems) = preProject - samples/relay-starter-kit/data/schema.json = samples/relay-starter-kit/data/schema.json + samples\relay-starter-kit\data\schema.json = samples\relay-starter-kit\data\schema.json EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{DFA5AAFF-31B8-4203-822C-8ACC4D7A7D74}" ProjectSection(SolutionItems) = preProject - samples/relay-starter-kit/build/babelRelayPlugin.js = samples/relay-starter-kit/build/babelRelayPlugin.js + samples\relay-starter-kit\build\babelRelayPlugin.js = samples\relay-starter-kit\build\babelRelayPlugin.js EndProjectSection EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Client", "src/FSharp.Data.GraphQL.Client/FSharp.Data.GraphQL.Client.fsproj", "{7C9CC625-FB4E-4215-9F7C-494AA6043821}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Client", "src\FSharp.Data.GraphQL.Client\FSharp.Data.GraphQL.Client.fsproj", "{7C9CC625-FB4E-4215-9F7C-494AA6043821}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client-provider", "client-provider", "{3D948D55-3CD2-496D-A04C-3B4E7BB69140}" ProjectSection(SolutionItems) = preProject - samples/client-provider/query.fsx = samples/client-provider/query.fsx + samples\client-provider\query.fsx = samples\client-provider\query.fsx EndProjectSection EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Shared", "src/FSharp.Data.GraphQL.Shared/FSharp.Data.GraphQL.Shared.fsproj", "{6768EA38-1335-4B8E-BC09-CCDED1F9AAF6}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Shared", "src\FSharp.Data.GraphQL.Shared\FSharp.Data.GraphQL.Shared.fsproj", "{6768EA38-1335-4B8E-BC09-CCDED1F9AAF6}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "todo-graphql", "todo-graphql", "{766203BF-7108-418F-BE92-87E7006E5E94}" ProjectSection(SolutionItems) = preProject - samples/todo-graphql/client.fsx = samples/todo-graphql/client.fsx - samples/todo-graphql/fableconfig.json = samples/todo-graphql/fableconfig.json - samples/todo-graphql/files.fsx = samples/todo-graphql/files.fsx - samples/todo-graphql/index.html = samples/todo-graphql/index.html - samples/todo-graphql/package.json = samples/todo-graphql/package.json - samples/todo-graphql/server.fsx = samples/todo-graphql/server.fsx + samples\todo-graphql\client.fsx = samples\todo-graphql\client.fsx + samples\todo-graphql\fableconfig.json = samples\todo-graphql\fableconfig.json + samples\todo-graphql\files.fsx = samples\todo-graphql\files.fsx + samples\todo-graphql\index.html = samples\todo-graphql\index.html + samples\todo-graphql\package.json = samples\todo-graphql\package.json + samples\todo-graphql\server.fsx = samples\todo-graphql\server.fsx EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "data", "data", "{D381D216-2464-4F84-8DFF-2CB2F2507DDE}" ProjectSection(SolutionItems) = preProject - samples/todo-graphql/data/tasks.json = samples/todo-graphql/data/tasks.json + samples\todo-graphql\data\tasks.json = samples\todo-graphql\data\tasks.json EndProjectSection EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Samples.GiraffeServer", "src/FSharp.Data.GraphQL.Samples.GiraffeServer/FSharp.Data.GraphQL.Samples.GiraffeServer.fsproj", "{C7DA852B-D30A-4209-B767-640224C7C31E}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Samples.GiraffeServer", "src\FSharp.Data.GraphQL.Samples.GiraffeServer\FSharp.Data.GraphQL.Samples.GiraffeServer.fsproj", "{C7DA852B-D30A-4209-B767-640224C7C31E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{BEFD8748-2467-45F9-A4AD-B450B12D5F78}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Server.Middlewares", "src/FSharp.Data.GraphQL.Server.Middlewares/FSharp.Data.GraphQL.Server.Middlewares.fsproj", "{8FB23F61-77CB-42C7-8EEC-B22D7C4E4067}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Server.Middlewares", "src\FSharp.Data.GraphQL.Server.Middlewares\FSharp.Data.GraphQL.Server.Middlewares.fsproj", "{8FB23F61-77CB-42C7-8EEC-B22D7C4E4067}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.GraphQL.Benchmarks.Sql", "tests\FSharp.Data.GraphQL.Benchmarks.Sql\FSharp.Data.GraphQL.Benchmarks.Sql.fsproj", "{4E9D9411-AE5E-458F-92A7-85368A5A30AB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -196,6 +198,18 @@ Global {8FB23F61-77CB-42C7-8EEC-B22D7C4E4067}.Release|x64.Build.0 = Release|Any CPU {8FB23F61-77CB-42C7-8EEC-B22D7C4E4067}.Release|x86.ActiveCfg = Release|Any CPU {8FB23F61-77CB-42C7-8EEC-B22D7C4E4067}.Release|x86.Build.0 = Release|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Debug|x64.ActiveCfg = Debug|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Debug|x64.Build.0 = Debug|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Debug|x86.ActiveCfg = Debug|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Debug|x86.Build.0 = Debug|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Release|Any CPU.Build.0 = Release|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Release|x64.ActiveCfg = Release|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Release|x64.Build.0 = Release|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Release|x86.ActiveCfg = Release|Any CPU + {4E9D9411-AE5E-458F-92A7-85368A5A30AB}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -217,6 +231,7 @@ Global {D381D216-2464-4F84-8DFF-2CB2F2507DDE} = {766203BF-7108-418F-BE92-87E7006E5E94} {C7DA852B-D30A-4209-B767-640224C7C31E} = {BEFD8748-2467-45F9-A4AD-B450B12D5F78} {8FB23F61-77CB-42C7-8EEC-B22D7C4E4067} = {BEFD8748-2467-45F9-A4AD-B450B12D5F78} + {4E9D9411-AE5E-458F-92A7-85368A5A30AB} = {ED8079DD-2B06-4030-9F0F-DC548F98E1C4} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C5B9895C-9DF8-4557-8D44-7D0C4C31F86E} diff --git a/src/FSharp.Data.GraphQL.Server/FSharp.Data.GraphQL.Server.fsproj b/src/FSharp.Data.GraphQL.Server/FSharp.Data.GraphQL.Server.fsproj index 7e814ab05..987be14fb 100644 --- a/src/FSharp.Data.GraphQL.Server/FSharp.Data.GraphQL.Server.fsproj +++ b/src/FSharp.Data.GraphQL.Server/FSharp.Data.GraphQL.Server.fsproj @@ -11,7 +11,6 @@ - diff --git a/src/FSharp.Data.GraphQL.Shared/FSharp.Data.GraphQL.Shared.fsproj b/src/FSharp.Data.GraphQL.Shared/FSharp.Data.GraphQL.Shared.fsproj index 428ccb1a8..73411f29e 100644 --- a/src/FSharp.Data.GraphQL.Shared/FSharp.Data.GraphQL.Shared.fsproj +++ b/src/FSharp.Data.GraphQL.Shared/FSharp.Data.GraphQL.Shared.fsproj @@ -7,11 +7,12 @@ $(DefineConstants);NETSTANDARD2_0 + + - diff --git a/src/FSharp.Data.GraphQL.Server/ObservableExtensions.fs b/src/FSharp.Data.GraphQL.Shared/ObservableExtensions.fs similarity index 99% rename from src/FSharp.Data.GraphQL.Server/ObservableExtensions.fs rename to src/FSharp.Data.GraphQL.Shared/ObservableExtensions.fs index 4c1e2ea8f..9bfb345f1 100644 --- a/src/FSharp.Data.GraphQL.Server/ObservableExtensions.fs +++ b/src/FSharp.Data.GraphQL.Shared/ObservableExtensions.fs @@ -4,7 +4,7 @@ open System open System.Reactive.Linq /// Extension methods to observable, used in place of FSharp.Control.Observable -module internal Observable = +module Observable = let ofSeq<'Item> (items : 'Item seq) = { new IObservable<'Item> with member __.Subscribe(observer) = diff --git a/src/FSharp.Data.GraphQL.Shared/paket.references b/src/FSharp.Data.GraphQL.Shared/paket.references index ff66d772d..b33d01967 100644 --- a/src/FSharp.Data.GraphQL.Shared/paket.references +++ b/src/FSharp.Data.GraphQL.Shared/paket.references @@ -1 +1,2 @@ -FParsec \ No newline at end of file +FParsec +System.Reactive \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/DatabaseSetup.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/DatabaseSetup.fs new file mode 100644 index 000000000..22ce8a663 --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/DatabaseSetup.fs @@ -0,0 +1,164 @@ +namespace FSharp.Data.Benchmarks.Sql + +open System +open System.Data.SqlClient +open FSharp.Data + +type GenomeScores = CsvProvider<"ml-latest/genome-scores.csv"> +type GenomeTags = CsvProvider<"ml-latest/genome-tags.csv"> +type Links = CsvProvider<"ml-latest/links.csv"> +type Movies = CsvProvider<"ml-latest/movies.csv"> +type Ratings = CsvProvider<"ml-latest/ratings.csv"> +type Tags = CsvProvider<"ml-latest/tags.csv"> + +module internal Run = + let sequentially = + Seq.reduce (fun fst snd -> async { + do! fst + return! snd }) + +[] +module internal Helpers = + let openConnection connectionString = async { + let conn = new SqlConnection(connectionString) + do! conn.OpenAsync() |> Async.AwaitTask + return conn } + + let createCommand connection = new SqlCommand("", connection) + + let setParameters (parameters : seq) (command : SqlCommand) = + let toDbNull (value : obj) = + value + |> Option.ofObj + |> Option.orElse (Some (upcast DBNull.Value)) + |> Option.get + command.Parameters.Clear() + parameters + |> Seq.map (fun (name, value) -> name, toDbNull value) + |> Seq.iter (fun (name, value) -> command.Parameters.AddWithValue(name, value) |> ignore) + command + + let executeNonQuery sql (command : SqlCommand) = async { + command.CommandText <- sql + do! command.ExecuteNonQueryAsync() |> Async.AwaitTask |> Async.Ignore + command.Parameters.Clear() } + + let executeScalar<'T> sql (command : SqlCommand) = async { + command.CommandText <- sql + let! res = command.ExecuteScalarAsync() |> Async.AwaitTask + command.Parameters.Clear() + return res :?> 'T } + +module DatabaseSetup = + let buildIfNotExists connectionString = async { + printfn "Checking if database exists..." + use! connection = openConnection connectionString + use command = createCommand connection + // Create database + do! command |> executeNonQuery "USE master" + let! databaseExists = command |> executeScalar "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'MovieLens') SELECT (CAST(0 AS BIT)); ELSE SELECT (CAST(1 AS BIT))" + if databaseExists + then + printfn "Database MovieLens found. Skipping database setup." + else + printfn "Database MovieLens not found. Creating database..." + do! command |> executeNonQuery "CREATE DATABASE MovieLens" + do! command |> executeNonQuery "USE MovieLens" + // Movies + printfn "Creating table Movies..." + do! command |> executeNonQuery "CREATE TABLE Movies (MovieId INT NOT NULL PRIMARY KEY, Genres VARCHAR(255) NOT NULL, Title VARCHAR(255) NOT NULL)" + let! movies = Movies.AsyncGetSample() + do! + movies.Rows + |> Seq.mapi (fun ix movie -> async { + printfn "Inserting Movies table row #%i..." ix + do! + command + |> setParameters ["@MovieId", upcast movie.MovieId; "@Genres", upcast movie.Genres; "@Title", upcast movie.Title] + |> executeNonQuery "INSERT INTO Movies (MovieId, Genres, Title) VALUES (@MovieId, @Genres, @Title)" }) + |> Run.sequentially + // Ratings + printfn "Creating table Ratings..." + do! command |> executeNonQuery "CREATE TABLE Ratings ( + MovieId INT NOT NULL FOREIGN KEY REFERENCES Movies(MovieId), + UserId INT NOT NULL, + Rating DECIMAL(2, 1) NOT NULL, + [Timestamp] INT NOT NULL, + PRIMARY KEY (MovieId, UserId))" + let! ratings = Ratings.AsyncGetSample() + do! + ratings.Rows + |> Seq.mapi (fun ix rating -> async { + printfn "Inserting Ratings table row #%i..." ix + do! + command + |> setParameters ["@MovieId", upcast rating.MovieId; "@UserId", upcast rating.UserId; "@Rating", upcast rating.Rating; "@Timestamp", upcast rating.Timestamp] + |> executeNonQuery "INSERT INTO Ratings (MovieId, UserId, Rating, [Timestamp]) VALUES (@MovieId, @UserId, @Rating, @Timestamp)" }) + |> Run.sequentially + // Tags + printfn "Creating table Tags..." + do! command |> executeNonQuery "CREATE TABLE Tags ( + TagId INT NOT NULL IDENTITY(1, 1) PRIMARY KEY, + MovieId INT NOT NULL FOREIGN KEY REFERENCES Movies(MovieId), + UserId INT NOT NULL, + Tag VARCHAR(255) NOT NULL, + [Timestamp] INT NOT NULL)" + let! tags = Tags.AsyncGetSample() + do! + tags.Rows + |> Seq.mapi (fun ix tag -> async { + printfn "Inserting Tags table row #%i..." ix + do! + command + |> setParameters ["@MovieId", upcast tag.MovieId; "@UserId", upcast tag.UserId; "@Tag", upcast tag.Tag; "@Timestamp", upcast tag.Timestamp] + |> executeNonQuery "INSERT INTO Tags (MovieId, UserId, Tag, [Timestamp]) VALUES (@MovieId, @UserId, @Tag, @Timestamp)" }) + |> Run.sequentially + // Links + printfn "Creating table Links..." + do! command |> executeNonQuery "CREATE TABLE Links ( + MovieId INT NOT NULL FOREIGN KEY REFERENCES Movies(MovieId), + ImdbId INT NOT NULL, + TmdbId INT NULL, + PRIMARY KEY (MovieId), + UNIQUE (ImdbId))" + let! links = Links.AsyncGetSample() + do! + links.Rows + |> Seq.mapi (fun ix link -> async { + printfn "Inserting Links table row #%i..." ix + do! + command + |> setParameters ["@MovieId", upcast link.MovieId; "@ImdbId", upcast link.ImdbId; "@TmdbId", upcast link.TmdbId] + |> executeNonQuery "INSERT INTO Links (MovieId, ImdbId, TmdbId) VALUES (@MovieId, @ImdbId, @TmdbId)" }) + |> Run.sequentially + // GenomeTags + printfn "Creating table GenomeTags..." + do! command |> executeNonQuery "CREATE TABLE GenomeTags (TagId INT NOT NULL PRIMARY KEY, Tag VARCHAR(255) NOT NULL)" + let! genomeTags = GenomeTags.AsyncGetSample() + do! + genomeTags.Rows + |> Seq.mapi (fun ix genomeTag -> async { + printfn "Inserting GenomeTags table row #%i..." ix + do! + command + |> setParameters ["@TagId", upcast genomeTag.TagId; "@Tag", upcast genomeTag.Tag] + |> executeNonQuery "INSERT INTO GenomeTags (TagId, Tag) VALUES (@TagId, @Tag)" }) + |> Run.sequentially + // GenomeScores + printfn "Creating table GenomeScores..." + do! command |> executeNonQuery "CREATE TABLE GenomeScores ( + MovieId INT NOT NULL FOREIGN KEY REFERENCES Movies(MovieId), + TagId INT NOT NULL FOREIGN KEY REFERENCES GenomeTags(TagId), + Relevance DECIMAL(28,27) NOT NULL + PRIMARY KEY (MovieId, TagId))" + let! genomeScores = GenomeScores.AsyncGetSample() + do! + genomeScores.Rows + |> Seq.mapi (fun ix genomeScore -> async { + printfn "Inserting GenomeScores table row #%i..." ix + do! + command + |> setParameters ["@MovieId", upcast genomeScore.MovieId; "@TagId", upcast genomeScore.TagId; "@Relevance", upcast genomeScore.Relevance] + |> executeNonQuery "INSERT INTO GenomeScores(MovieId, TagId, Relevance) VALUES (@MovieId, @TagId, @Relevance)" }) + |> Run.sequentially } + diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj new file mode 100644 index 000000000..00c0cd19f --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj @@ -0,0 +1,34 @@ + + + + Exe + netcoreapp2.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Program.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Program.fs new file mode 100644 index 000000000..7ee7e9565 --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Program.fs @@ -0,0 +1,10 @@ +module FSharp.Data.Benchmarks.Sql.Program + +let [] private SuccessCode = 0 + +let connectionString = "Data Source=.;Integrated Security=True" + +[] +let main argv = + DatabaseSetup.buildIfNotExists connectionString |> Async.RunSynchronously + SuccessCode diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs new file mode 100644 index 000000000..c07f9970a --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs @@ -0,0 +1,276 @@ +namespace FSharp.Data.GraphQL.Benchmarks.Sql + +#nowarn "40" + +open FSharp.Data.GraphQL +open FSharp.Data.GraphQL.Types +open System.Collections.Generic +open System.Data.SqlClient +open System.Dynamic +open Dapper + +type Root = + { RequestId : string } + +type Movie = + { MovieId : int + Genres : string + Title : string } + +type Rating = + { MovieId : int + UserId : int + Rating : decimal + Timestamp : int } + +type Link = + { MovieId : int + ImdbId : int + TmdbId : System.Nullable } + +type Tag = + { TagId : int + MovieId : int + UserId : int + Tag : string + Timestamp : int } + +type GenomeTag = + { TagId : int + Tag : string } + +type GenomeScore = + { MovieId : int + TagId : int + Relevance : decimal } + +module Dapper = + let query<'Result> (query : string) (connection : SqlConnection) : 'Result seq = + let cmd = CommandDefinition(query, flags = CommandFlags.None) + connection.QueryAsync<'Result>(cmd) + |> Async.AwaitTask + |> Observable.ofAsync + |> Observable.concatSeq + |> Observable.toSeq + + let queryFirst<'Result> (query : string) (connection : SqlConnection) : Async<'Result> = + let cmd = CommandDefinition(query, flags = CommandFlags.None) + connection.QueryFirstAsync<'Result>(cmd) |> Async.AwaitTask + + let paramQuery<'Result> (query : string) (param : obj) (connection : SqlConnection) : 'Result seq = + let cmd = CommandDefinition(query, param, flags = CommandFlags.None) + connection.QueryAsync<'Result>(cmd) + |> Async.AwaitTask + |> Observable.ofAsync + |> Observable.concatSeq + |> Observable.toSeq + + let paramQueryFirst<'Result> (query : string) (param : obj) (connection : SqlConnection) : Async<'Result> = + let cmd = CommandDefinition(query, param, flags = CommandFlags.None) + connection.QueryFirstAsync<'Result>(cmd) |> Async.AwaitTask + + let mapParamQuery<'Result> (query : string) (param : Map) (connection : SqlConnection) : 'Result seq = + let expando = ExpandoObject() + let expandoDictionary = expando :> IDictionary + for paramValue in param do + expandoDictionary.Add(paramValue.Key, paramValue.Value :> obj) + connection |> paramQuery query expando + + let mapParamQueryFirst<'Result> (query : string) (param : Map) (connection : SqlConnection) : Async<'Result> = + let expando = ExpandoObject() + let expandoDictionary = expando :> IDictionary + for paramValue in param do + expandoDictionary.Add(paramValue.Key, paramValue.Value :> obj) + connection |> paramQueryFirst query expando + +module Database = + let [] private connectionString = + "Data Source=.;Initial Catalog=MovieLens;Integrated Security=True" + + let openConnection connectionString = async { + let conn = new SqlConnection(connectionString) + do! conn.OpenAsync() |> Async.AwaitTask + return conn } + + let getMovie (id : int) = async { + let! connection = openConnection connectionString + return! + connection + |> Dapper.mapParamQueryFirst "SELECT TOP 1 * FROM Movies WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", id]) } + + let tryGetMovie id = async { + let! movie = getMovie id + if movie = Unchecked.defaultof + then return None + else return Some movie } + + let getTag (movieId : int) = async { + let! connection = openConnection connectionString + return! + connection + |> Dapper.mapParamQueryFirst "SELECT TOP 1 * FROM Tags WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } + + let tryGetTag id = async { + let! tag = getTag id + if tag = Unchecked.defaultof + then return None + else return Some tag } + + let getTagsOfUser (userId : int) (movieId : int) = async { + let! connection = openConnection connectionString + return + connection + |> Dapper.mapParamQuery "SELECT * FROM Tags WHERE UserId = @UserId AND MovieId = @MovieId" (Map.ofSeq ["@UserId", userId; "@MovieId", movieId]) } + + let getTags (movieId : int) = async { + let! connection = openConnection connectionString + return + connection + |> Dapper.mapParamQuery "SELECT * FROM Tags WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } + + let getRatingsOfUser (userId : int) (movieId : int) = async { + let! connection = openConnection connectionString + return + connection + |> Dapper.mapParamQuery "SELECT * FROM Ratings WHERE UserId = @UserId AND MovieId = @MovieId" (Map.ofSeq ["@UserId", userId; "@MovieId", movieId]) } + + let getRatings (movieId : int) = async { + let! connection = openConnection connectionString + return + connection + |> Dapper.mapParamQuery "SELECT * FROM Ratings WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } + + let getLinks (movieId : int) = async { + let! connection = openConnection connectionString + return + connection + |> Dapper.mapParamQuery "SELECT * FROM Links WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } + + let getGenomeScoresForTag (tagId : int) (movieId : int) = async { + let! connection = openConnection connectionString + return + connection + |> Dapper.mapParamQuery "SELECT * FROM GenomeScores WHERE TagId = @TagId AND MovieId = @MovieId" (Map.ofSeq ["@TagId", tagId; "@MovieId", movieId]) } + + let getGenomeScores (movieId : int) = async { + let! connection = openConnection connectionString + return + connection + |> Dapper.mapParamQuery "SELECT * FROM GenomeScores WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } + +module SchemaDefinition = + let rec Rating = + Define.Object( + name = "Rating", + isTypeOf = (fun o -> o :? Rating), + fieldsFn = fun () -> + [ Define.Field("movieId", Int, resolve = fun _ (r : Rating) -> r.MovieId) + Define.AsyncField("movie", Movie, resolve = fun _ (r : Rating) -> Database.getMovie r.MovieId) + Define.Field("userId", Int, resolve = fun _ (r : Rating) -> r.UserId) + Define.Field("rating", Float, resolve = fun _ (r : Rating) -> System.Convert.ToDouble(r.Rating)) + Define.Field("timestamp", Int, resolve = fun _ (r : Rating) -> r.Timestamp) ]) + + and Link = + Define.Object( + name = "Link", + isTypeOf = (fun o -> o :? Link), + fieldsFn = fun () -> + [ Define.Field("movieId", Int, resolve = fun _ (l : Link) -> l.MovieId) + Define.AsyncField("movie", Movie, resolve = fun _ (l : Link) -> Database.getMovie l.MovieId) + Define.Field("imdbId", Int, resolve = fun _ (l : Link) -> l.ImdbId) + Define.Field("tmdbId", Nullable Int, resolve = fun _ (l : Link) -> l.TmdbId |> Option.ofNullable) ]) + + and Tag = + Define.Object( + name = "Tag", + isTypeOf = (fun o -> o :? Tag), + fieldsFn = fun () -> + [ Define.Field("tagId", Int, resolve = fun _ (t : Tag) -> t.TagId) + Define.Field("movieId", Int, resolve = fun _ (t : Tag) -> t.MovieId) + Define.AsyncField("movie", Movie, resolve = fun _ (t : Tag) -> Database.getMovie t.MovieId) + Define.Field("userId", Int, resolve = fun _ (t : Tag) -> t.UserId) + Define.Field("timestamp", Int, resolve = fun _ (t : Tag) -> t.Timestamp) ]) + + and GenomeTag = + Define.Object( + name = "GenomeTag", + isTypeOf = (fun o -> o :? GenomeTag), + fieldsFn = fun () -> + [ Define.Field("tagId", Int, resolve = fun _ (gt : GenomeTag) -> gt.TagId) + Define.AsyncField("tag", Tag, resolve = fun _ (gt : GenomeTag) -> Database.getTag gt.TagId) + Define.Field("value", String, resolve = fun _ (gt : GenomeTag) -> gt.Tag) ]) + + and GenomeScore = + Define.Object( + name = "GenomeScore", + isTypeOf = (fun o -> o :? GenomeScore), + fieldsFn = fun () -> + [ Define.Field("movieId", Int, resolve = fun _ (gs : GenomeScore) -> gs.MovieId) + Define.AsyncField("movie", Movie, resolve = fun _ (gs : GenomeScore) -> Database.getMovie gs.MovieId) + Define.Field("tagId", Int, resolve = fun _ (gs : GenomeScore) -> gs.TagId) + Define.AsyncField("tag", Tag, resolve = fun _ (gs : GenomeScore) -> Database.getTag gs.MovieId) + Define.Field("relevance", Float, resolve = fun _ (gs : GenomeScore) -> System.Convert.ToDouble(gs.Relevance)) ]) + + and Movie = + Define.Object( + name = "Movie", + isTypeOf = (fun o -> o :? Movie), + fieldsFn = fun () -> + [ Define.Field("movieId", Int, resolve = fun _ (m : Movie) -> m.MovieId) + Define.Field("title", String, resolve = fun _ (m : Movie) -> m.Title) + Define.Field("genres", ListOf String, resolve = fun _ (m : Movie) -> m.Genres.Split('|')) + Define.AsyncField( + "ratings", + ListOf Rating, + "Gets movie ratings", + args = [ Define.Input("userId", Nullable Int) ], + resolve = fun ctx (m : Movie) -> + match ctx.TryArg("userId") with + | Some (Some userId) -> Database.getRatingsOfUser userId m.MovieId + | _ -> Database.getRatings m.MovieId) + Define.AsyncField( + "links", + ListOf Link, + "Gets movie links", + resolve = fun _ (m : Movie) -> Database.getLinks m.MovieId) + Define.AsyncField( + "tags", + ListOf Tag, + "Gets movie tags", + args = [ Define.Input("userId", Nullable Int) ], + resolve = fun ctx (m : Movie) -> + match ctx.TryArg("userId") with + | Some (Some userId) -> Database.getTagsOfUser userId m.MovieId + | _ -> Database.getTags m.MovieId) + Define.AsyncField( + "genomeScores", + ListOf GenomeScore, + "Gets movie genome scores", + args = [ Define.Input("tagId", Nullable Int) ], + resolve = fun ctx (m : Movie) -> + match ctx.TryArg("tagId") with + | Some (Some tagId) -> Database.getGenomeScoresForTag tagId m.MovieId + | _ -> Database.getGenomeScores m.MovieId) ]) + let Query = + Define.Object( + name = "Query", + fields = [ + Define.Field( + "requestId", + String, + resolve = fun _ (r : Root) -> r.RequestId) + Define.AsyncField( + "movie", + Nullable Movie, + "Gets movie by it's id", + args = [ Define.Input("movieId", Int) ], + resolve = fun ctx _ -> Database.tryGetMovie (ctx.Arg("movieId"))) ]) + +module Schema = + let config = SchemaConfig.Default + + let root requestId = { RequestId = requestId } + + let instance = Schema(SchemaDefinition.Query, config = config) + + let executor = Executor(instance) \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.ps1 b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.ps1 new file mode 100644 index 000000000..df86e3398 --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.ps1 @@ -0,0 +1,25 @@ +$curr_path = (Get-Item (Split-Path -parent $MyInvocation.MyCommand.Definition)).Parent.FullName +$db_path = $curr_path + "\ml-latest" +Write-Host "Checking if path ""$db_path"" exists..." +If (!(Test-Path $db_path)) +{ + Write-Host "Path not found. Downloading database files..." + $clnt = new-object System.Net.WebClient + $url = "http://files.grouplens.org/datasets/movielens/ml-latest.zip" + $file = $curr_path + "\ml-latest.zip" + $clnt.DownloadFile($url,$file) + + Write-Host "Download finished. Unzipping database files..." + $shell_app=new-object -com shell.application + $zip_file = $shell_app.namespace($file) + $destination = $shell_app.namespace($curr_path) + $destination.CopyHere($zip_file.items()) + + Write-Host "Unzipping done. Removing zip file..." + Remove-Item -Path $file + Write-Host "Database files successfuly downloaded." +} +Else +{ + Write-Host "Path already exists. Skipping download of database." +} \ No newline at end of file From 24071efe64c462e8de2acb510d2808abafea1d54 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Wed, 23 Jan 2019 18:01:09 -0200 Subject: [PATCH 02/32] Creating some benchmark tests --- ...marks.Sql.QueryBenchmarks-report-github.md | 17 +++++++ ....Benchmarks.Sql.QueryBenchmarks-report.csv | 5 ++ ...Benchmarks.Sql.QueryBenchmarks-report.html | 34 ++++++++++++++ .../Config.fs | 11 +++++ .../DatabaseSetup.fs | 16 +++---- .../FSharp.Data.GraphQL.Benchmarks.Sql.fsproj | 4 ++ .../Helpers.fs | 28 +++++++++++ .../Program.fs | 7 ++- .../Queries.fs | 46 +++++++++++++++++++ .../QueryBenchmarks.fs | 28 +++++++++++ .../Schema.fs | 11 +---- 11 files changed, 186 insertions(+), 21 deletions(-) create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/Config.fs create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md new file mode 100644 index 000000000..84e2b5546 --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md @@ -0,0 +1,17 @@ +``` ini + +BenchmarkDotNet=v0.11.3, OS=Windows 10.0.17134.523 (1803/April2018Update/Redstone4) +Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores +.NET Core SDK=2.2.100 + [Host] : .NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT DEBUG + Core : .NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT + +Job=Core Runtime=Core + +``` +| Method | Mean | Error | StdDev | Median | Min | Max | Op/s | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op | +|---------------- |-------------:|------------:|------------:|-------------:|--------------:|-------------:|---------:|------------:|------------:|------------:|--------------------:| +| SimpleQuery | 2.238 ms | 0.7627 ms | 2.2248 ms | 1.032 ms | 0.7647 ms | 8.564 ms | 446.7835 | - | - | - | 22.38 KB | +| FlatQuery | 1.433 ms | 0.0954 ms | 0.2691 ms | 1.355 ms | 1.0211 ms | 2.175 ms | 697.8076 | - | - | - | 38.01 KB | +| LongListQuery | 1,590.288 ms | 31.4637 ms | 72.9220 ms | 1,583.767 ms | 1,438.3572 ms | 1,825.454 ms | 0.6288 | 76000.0000 | 19000.0000 | 3000.0000 | 39.12 KB | +| LongStreamQuery | 6,299.963 ms | 125.7192 ms | 275.9567 ms | 6,234.619 ms | 5,924.5985 ms | 6,991.723 ms | 0.1587 | 150000.0000 | 39000.0000 | 4000.0000 | 50.5 KB | diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv new file mode 100644 index 000000000..c7691befc --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv @@ -0,0 +1,5 @@ +Method;Job;AnalyzeLaunchVariance;EvaluateOverhead;MaxAbsoluteError;MaxRelativeError;MinInvokeCount;MinIterationTime;OutlierMode;Affinity;EnvironmentVariables;Jit;Platform;Runtime;AllowVeryLargeObjects;Concurrent;CpuGroups;Force;HeapAffinitizeMask;HeapCount;NoAffinitize;RetainVm;Server;Arguments;BuildConfiguration;Clock;EngineFactory;NuGetReferences;Toolchain;IsMutator;InvocationCount;IterationCount;IterationTime;LaunchCount;MaxIterationCount;MaxWarmupIterationCount;MinIterationCount;MinWarmupIterationCount;RunStrategy;UnrollFactor;WarmupCount;Mean;Error;StdDev;Median;Min;Max;Op/s;Gen 0/1k Op;Gen 1/1k Op;Gen 2/1k Op;Allocated Memory/Op +SimpleQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;2.238 ms;0.7627 ms;2.2248 ms;1.032 ms;0.7647 ms;8.564 ms;446.7835;-;-;-;22.38 KB +FlatQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;1.433 ms;0.0954 ms;0.2691 ms;1.355 ms;1.0211 ms;2.175 ms;697.8076;-;-;-;38.01 KB +LongListQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,590.288 ms";31.4637 ms;72.9220 ms;"1,583.767 ms";"1,438.3572 ms";"1,825.454 ms";0.6288;76000.0000;19000.0000;3000.0000;39.12 KB +LongStreamQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"6,299.963 ms";125.7192 ms;275.9567 ms;"6,234.619 ms";"5,924.5985 ms";"6,991.723 ms";0.1587;150000.0000;39000.0000;4000.0000;50.5 KB diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html new file mode 100644 index 000000000..5e8af91f8 --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html @@ -0,0 +1,34 @@ + + + + +FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks + + + + +

+BenchmarkDotNet=v0.11.3, OS=Windows 10.0.17134.523 (1803/April2018Update/Redstone4)
+Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
+.NET Core SDK=2.2.100
+  [Host] : .NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT DEBUG
+  Core   : .NET Core 2.2.0 (CoreCLR 4.6.27110.04, CoreFX 4.6.27110.04), 64bit RyuJIT
+
+
Job=Core  Runtime=Core  
+
+ + + + + + + + +
Method MeanErrorStdDevMedian Min MaxOp/sGen 0/1k OpGen 1/1k OpGen 2/1k OpAllocated Memory/Op
SimpleQuery2.238 ms0.7627 ms2.2248 ms1.032 ms0.7647 ms8.564 ms446.7835---22.38 KB
FlatQuery1.433 ms0.0954 ms0.2691 ms1.355 ms1.0211 ms2.175 ms697.8076---38.01 KB
LongListQuery1,590.288 ms31.4637 ms72.9220 ms1,583.767 ms1,438.3572 ms1,825.454 ms0.628876000.000019000.00003000.000039.12 KB
LongStreamQuery6,299.963 ms125.7192 ms275.9567 ms6,234.619 ms5,924.5985 ms6,991.723 ms0.1587150000.000039000.00004000.000050.5 KB
+ + diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Config.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Config.fs new file mode 100644 index 000000000..90bc8262c --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Config.fs @@ -0,0 +1,11 @@ +namespace FSharp.Data.GraphQL.Benchmarks.Sql + +open BenchmarkDotNet.Configs +open BenchmarkDotNet.Columns +open BenchmarkDotNet.Exporters + +type JobConfig() as this= + inherit ManualConfig() + do + this.Add(StatisticColumn.Mean, StatisticColumn.Min, StatisticColumn.Max, StatisticColumn.OperationsPerSecond) + this.Add(MarkdownExporter.GitHub) \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/DatabaseSetup.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/DatabaseSetup.fs index 22ce8a663..081ebef6c 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/DatabaseSetup.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/DatabaseSetup.fs @@ -1,4 +1,4 @@ -namespace FSharp.Data.Benchmarks.Sql +namespace FSharp.Data.GraphQL.Benchmarks.Sql open System open System.Data.SqlClient @@ -17,16 +17,15 @@ module internal Run = do! fst return! snd }) -[] -module internal Helpers = - let openConnection connectionString = async { +module internal DatabaseSetup = + let private openConnection connectionString = async { let conn = new SqlConnection(connectionString) do! conn.OpenAsync() |> Async.AwaitTask return conn } - let createCommand connection = new SqlCommand("", connection) + let private createCommand connection = new SqlCommand("", connection) - let setParameters (parameters : seq) (command : SqlCommand) = + let private setParameters (parameters : seq) (command : SqlCommand) = let toDbNull (value : obj) = value |> Option.ofObj @@ -38,18 +37,17 @@ module internal Helpers = |> Seq.iter (fun (name, value) -> command.Parameters.AddWithValue(name, value) |> ignore) command - let executeNonQuery sql (command : SqlCommand) = async { + let private executeNonQuery sql (command : SqlCommand) = async { command.CommandText <- sql do! command.ExecuteNonQueryAsync() |> Async.AwaitTask |> Async.Ignore command.Parameters.Clear() } - let executeScalar<'T> sql (command : SqlCommand) = async { + let private executeScalar<'T> sql (command : SqlCommand) = async { command.CommandText <- sql let! res = command.ExecuteScalarAsync() |> Async.AwaitTask command.Parameters.Clear() return res :?> 'T } -module DatabaseSetup = let buildIfNotExists connectionString = async { printfn "Checking if database exists..." use! connection = openConnection connectionString diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj index 00c0cd19f..8d8507a88 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj @@ -8,6 +8,10 @@ + + + + diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs new file mode 100644 index 000000000..e3c9871ac --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs @@ -0,0 +1,28 @@ +module internal FSharp.Data.GraphQL.Benchmarks.Sql.Helpers + +open FSharp.Data.GraphQL +open FSharp.Data.GraphQL.Execution +open System.Text +open System + +let private fail (errs : #seq) = + let sb = StringBuilder() + for err in errs do + sb.AppendLine(err.ToString()) |> ignore + failwithf "Query execution resulted in errors:%s%s" Environment.NewLine (sb.ToString()) + +let private execute (executor : Executor) (query : string) = + let root = { RequestId = Guid.NewGuid().ToString() } + executor.AsyncExecute(query, data = root) |> Async.RunSynchronously + +let executeDirect executor query = + match execute executor query with + | Direct (_, errors) -> if not (Seq.isEmpty errors) then fail errors + | _ -> failwith "Expected direct result!" + +let executeDeferred executor query = + match execute executor query with + | Deferred (_, errors, deferred) -> + if not (Seq.isEmpty errors) then fail errors + deferred |> Observable.toSeq |> Seq.iter (fun _ -> ()) + | _ -> failwith "Expected deferred result!" \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Program.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Program.fs index 7ee7e9565..8e3e47748 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Program.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Program.fs @@ -1,10 +1,13 @@ -module FSharp.Data.Benchmarks.Sql.Program +module FSharp.Data.GraphQL.Benchmarks.Sql.Program + +open BenchmarkDotNet.Running let [] private SuccessCode = 0 let connectionString = "Data Source=.;Integrated Security=True" [] -let main argv = +let main _ = DatabaseSetup.buildIfNotExists connectionString |> Async.RunSynchronously + BenchmarkRunner.Run() |> ignore SuccessCode diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs new file mode 100644 index 000000000..0c21ded00 --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs @@ -0,0 +1,46 @@ +module FSharp.Data.GraphQL.Benchmarks.Sql.Queries + +let simple = """query simpleQuery { + requestId + movie (movieId : 1) { + title + } +}""" + +let flat = """query flatQuery { + requestId + movie (movieId: 1) { + title + genres + ratings (userId: 283199) { + rating + timestamp + } + } +}""" + +let longList = """query longListQuery { + requestId + movie (movieId: 1) { + title + genres + ratings { + userId + rating + timestamp + } + } +}""" + +let longStream = """query longStreamQuery { + requestId + movie (movieId: 1) { + title + genres + ratings @stream { + userId + rating + timestamp + } + } +}""" \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs new file mode 100644 index 000000000..ea391332a --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs @@ -0,0 +1,28 @@ +namespace FSharp.Data.GraphQL.Benchmarks.Sql + +open BenchmarkDotNet.Attributes +open FSharp.Data.GraphQL +open Helpers + +[] +[); CoreJob; MonoJob>] +type QueryBenchmarks() = + let mutable schema = Unchecked.defaultof> + let mutable executor = Unchecked.defaultof> + + [] + member __.Setup() = + schema <- Schema(SchemaDefinition.Query, config = SchemaConfig.Default) + executor <- Executor(schema) + + [] + member __.SimpleQuery() = executeDirect executor Queries.simple + + [] + member __.FlatQuery() = executeDirect executor Queries.flat + + [] + member __.LongListQuery() = executeDirect executor Queries.longList + + [] + member __.LongStreamQuery() = executeDeferred executor Queries.longStream \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs index c07f9970a..e136400d1 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs @@ -264,13 +264,4 @@ module SchemaDefinition = Nullable Movie, "Gets movie by it's id", args = [ Define.Input("movieId", Int) ], - resolve = fun ctx _ -> Database.tryGetMovie (ctx.Arg("movieId"))) ]) - -module Schema = - let config = SchemaConfig.Default - - let root requestId = { RequestId = requestId } - - let instance = Schema(SchemaDefinition.Query, config = config) - - let executor = Executor(instance) \ No newline at end of file + resolve = fun ctx _ -> Database.tryGetMovie (ctx.Arg("movieId"))) ]) \ No newline at end of file From 57a138b104578a76ca5cbd32223ddf40e48d7891 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Wed, 23 Jan 2019 19:14:42 -0200 Subject: [PATCH 03/32] Updating queries --- ...marks.Sql.QueryBenchmarks-report-github.md | 12 ++-- ....Benchmarks.Sql.QueryBenchmarks-report.csv | 8 +-- ...Benchmarks.Sql.QueryBenchmarks-report.html | 10 +-- .../Helpers.fs | 12 ++-- .../Queries.fs | 28 ++++----- .../QueryBenchmarks.fs | 11 ++-- .../Schema.fs | 63 +++---------------- 7 files changed, 51 insertions(+), 93 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md index 84e2b5546..722ac4501 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md @@ -9,9 +9,9 @@ Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical co Job=Core Runtime=Core ``` -| Method | Mean | Error | StdDev | Median | Min | Max | Op/s | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op | -|---------------- |-------------:|------------:|------------:|-------------:|--------------:|-------------:|---------:|------------:|------------:|------------:|--------------------:| -| SimpleQuery | 2.238 ms | 0.7627 ms | 2.2248 ms | 1.032 ms | 0.7647 ms | 8.564 ms | 446.7835 | - | - | - | 22.38 KB | -| FlatQuery | 1.433 ms | 0.0954 ms | 0.2691 ms | 1.355 ms | 1.0211 ms | 2.175 ms | 697.8076 | - | - | - | 38.01 KB | -| LongListQuery | 1,590.288 ms | 31.4637 ms | 72.9220 ms | 1,583.767 ms | 1,438.3572 ms | 1,825.454 ms | 0.6288 | 76000.0000 | 19000.0000 | 3000.0000 | 39.12 KB | -| LongStreamQuery | 6,299.963 ms | 125.7192 ms | 275.9567 ms | 6,234.619 ms | 5,924.5985 ms | 6,991.723 ms | 0.1587 | 150000.0000 | 39000.0000 | 4000.0000 | 50.5 KB | +| Method | Mean | Error | StdDev | Median | Min | Max | Op/s | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op | +|---------------- |-------------:|------------:|------------:|--------------:|--------------:|-------------:|---------:|------------:|------------:|------------:|--------------------:| +| SimpleQuery | 1.692 ms | 0.5130 ms | 1.5047 ms | 0.8638 ms | 0.5520 ms | 5.489 ms | 590.9996 | - | - | - | 22.38 KB | +| FlatQuery | 1.593 ms | 0.1143 ms | 0.3149 ms | 1.5009 ms | 1.1316 ms | 2.582 ms | 627.8552 | - | - | - | 38.01 KB | +| LongListQuery | 1,394.840 ms | 27.7700 ms | 70.1784 ms | 1,383.1667 ms | 1,296.3221 ms | 1,584.532 ms | 0.7169 | 75000.0000 | 19000.0000 | 2000.0000 | 39.12 KB | +| LongStreamQuery | 6,247.535 ms | 126.1488 ms | 224.2294 ms | 6,217.0907 ms | 5,910.6571 ms | 6,733.767 ms | 0.1601 | 142000.0000 | 38000.0000 | 3000.0000 | 2633.83 KB | diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv index c7691befc..6a4067684 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv @@ -1,5 +1,5 @@ Method;Job;AnalyzeLaunchVariance;EvaluateOverhead;MaxAbsoluteError;MaxRelativeError;MinInvokeCount;MinIterationTime;OutlierMode;Affinity;EnvironmentVariables;Jit;Platform;Runtime;AllowVeryLargeObjects;Concurrent;CpuGroups;Force;HeapAffinitizeMask;HeapCount;NoAffinitize;RetainVm;Server;Arguments;BuildConfiguration;Clock;EngineFactory;NuGetReferences;Toolchain;IsMutator;InvocationCount;IterationCount;IterationTime;LaunchCount;MaxIterationCount;MaxWarmupIterationCount;MinIterationCount;MinWarmupIterationCount;RunStrategy;UnrollFactor;WarmupCount;Mean;Error;StdDev;Median;Min;Max;Op/s;Gen 0/1k Op;Gen 1/1k Op;Gen 2/1k Op;Allocated Memory/Op -SimpleQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;2.238 ms;0.7627 ms;2.2248 ms;1.032 ms;0.7647 ms;8.564 ms;446.7835;-;-;-;22.38 KB -FlatQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;1.433 ms;0.0954 ms;0.2691 ms;1.355 ms;1.0211 ms;2.175 ms;697.8076;-;-;-;38.01 KB -LongListQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,590.288 ms";31.4637 ms;72.9220 ms;"1,583.767 ms";"1,438.3572 ms";"1,825.454 ms";0.6288;76000.0000;19000.0000;3000.0000;39.12 KB -LongStreamQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"6,299.963 ms";125.7192 ms;275.9567 ms;"6,234.619 ms";"5,924.5985 ms";"6,991.723 ms";0.1587;150000.0000;39000.0000;4000.0000;50.5 KB +SimpleQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;1.692 ms;0.5130 ms;1.5047 ms;0.8638 ms;0.5520 ms;5.489 ms;590.9996;-;-;-;22.38 KB +FlatQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;1.593 ms;0.1143 ms;0.3149 ms;1.5009 ms;1.1316 ms;2.582 ms;627.8552;-;-;-;38.01 KB +LongListQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,394.840 ms";27.7700 ms;70.1784 ms;"1,383.1667 ms";"1,296.3221 ms";"1,584.532 ms";0.7169;75000.0000;19000.0000;2000.0000;39.12 KB +LongStreamQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"6,247.535 ms";126.1488 ms;224.2294 ms;"6,217.0907 ms";"5,910.6571 ms";"6,733.767 ms";0.1601;142000.0000;38000.0000;3000.0000;2633.83 KB diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html index 5e8af91f8..c71129631 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html @@ -23,12 +23,12 @@ - + - - - - + + + +
Method MeanErrorStdDevMedian Min MaxOp/sGen 0/1k OpGen 1/1k OpGen 2/1k OpAllocated Memory/Op
Method MeanErrorStdDev Median Min MaxOp/sGen 0/1k OpGen 1/1k OpGen 2/1k OpAllocated Memory/Op
SimpleQuery2.238 ms0.7627 ms2.2248 ms1.032 ms0.7647 ms8.564 ms446.7835---22.38 KB
FlatQuery1.433 ms0.0954 ms0.2691 ms1.355 ms1.0211 ms2.175 ms697.8076---38.01 KB
LongListQuery1,590.288 ms31.4637 ms72.9220 ms1,583.767 ms1,438.3572 ms1,825.454 ms0.628876000.000019000.00003000.000039.12 KB
LongStreamQuery6,299.963 ms125.7192 ms275.9567 ms6,234.619 ms5,924.5985 ms6,991.723 ms0.1587150000.000039000.00004000.000050.5 KB
SimpleQuery1.692 ms0.5130 ms1.5047 ms0.8638 ms0.5520 ms5.489 ms590.9996---22.38 KB
FlatQuery1.593 ms0.1143 ms0.3149 ms1.5009 ms1.1316 ms2.582 ms627.8552---38.01 KB
LongListQuery1,394.840 ms27.7700 ms70.1784 ms1,383.1667 ms1,296.3221 ms1,584.532 ms0.716975000.000019000.00002000.000039.12 KB
LongStreamQuery6,247.535 ms126.1488 ms224.2294 ms6,217.0907 ms5,910.6571 ms6,733.767 ms0.1601142000.000038000.00003000.00002633.83 KB
diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs index e3c9871ac..e3373e424 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs @@ -17,12 +17,16 @@ let private execute (executor : Executor) (query : string) = let executeDirect executor query = match execute executor query with - | Direct (_, errors) -> if not (Seq.isEmpty errors) then fail errors + | Direct (data, errors) -> + if not (Seq.isEmpty errors) + then fail errors + else data | _ -> failwith "Expected direct result!" let executeDeferred executor query = match execute executor query with - | Deferred (_, errors, deferred) -> - if not (Seq.isEmpty errors) then fail errors - deferred |> Observable.toSeq |> Seq.iter (fun _ -> ()) + | Deferred (data, errors, deferred) -> + if not (Seq.isEmpty errors) + then fail errors + else (data, deferred |> Observable.toSeq |> Array.ofSeq) | _ -> failwith "Expected deferred result!" \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs index 0c21ded00..47f280a89 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs @@ -1,13 +1,13 @@ module FSharp.Data.GraphQL.Benchmarks.Sql.Queries -let simple = """query simpleQuery { +let movie = """query q { requestId movie (movieId : 1) { title } }""" -let flat = """query flatQuery { +let movieUserRating = """query q { requestId movie (movieId: 1) { title @@ -19,28 +19,22 @@ let flat = """query flatQuery { } }""" -let longList = """query longListQuery { +let private movieRatings = sprintf """query q { requestId movie (movieId: 1) { title genres - ratings { + tags %s { + name userId - rating timestamp + relevance } } }""" -let longStream = """query longStreamQuery { - requestId - movie (movieId: 1) { - title - genres - ratings @stream { - userId - rating - timestamp - } - } -}""" \ No newline at end of file +let movieRatingsDirect = movieRatings "" + +let movieRatingsStreamed = movieRatings "@stream" + +let movieRatingsDeferred = movieRatings "@defer" \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs index ea391332a..416aa23cf 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs @@ -16,13 +16,16 @@ type QueryBenchmarks() = executor <- Executor(schema) [] - member __.SimpleQuery() = executeDirect executor Queries.simple + member __.MovieQuery() = executeDirect executor Queries.movie [] - member __.FlatQuery() = executeDirect executor Queries.flat + member __.MovieUserRatingQuery() = executeDirect executor Queries.movieUserRating [] - member __.LongListQuery() = executeDirect executor Queries.longList + member __.MovieRatingsDirectQuery() = executeDirect executor Queries.movieRatingsDirect [] - member __.LongStreamQuery() = executeDeferred executor Queries.longStream \ No newline at end of file + member __.MovieRatingsStreamed() = executeDeferred executor Queries.movieRatingsStreamed + + [] + member __.MovieRatingsDeferred() = executeDeferred executor Queries.movieRatingsDeferred \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs index e136400d1..5621c5f80 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs @@ -33,15 +33,7 @@ type Tag = MovieId : int UserId : int Tag : string - Timestamp : int } - -type GenomeTag = - { TagId : int - Tag : string } - -type GenomeScore = - { MovieId : int - TagId : int + Timestamp : int Relevance : decimal } module Dapper = @@ -126,7 +118,11 @@ module Database = let! connection = openConnection connectionString return connection - |> Dapper.mapParamQuery "SELECT * FROM Tags WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } + |> Dapper.mapParamQuery """SELECT GT.TagId, T.MovieId, T.UserId, T.Tag, T.[Timestamp], GS.Relevance +FROM Tags T +INNER JOIN GenomeTags GT ON T.Tag = GT.Tag +INNER JOIN GenomeScores GS ON (GS.TagId = GT.TagId AND GS.MovieId = T.MovieId) +WHERE T.MovieId = @MovieId""" (Map.ofSeq ["@MovieId", movieId]) } let getRatingsOfUser (userId : int) (movieId : int) = async { let! connection = openConnection connectionString @@ -146,18 +142,6 @@ module Database = connection |> Dapper.mapParamQuery "SELECT * FROM Links WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } - let getGenomeScoresForTag (tagId : int) (movieId : int) = async { - let! connection = openConnection connectionString - return - connection - |> Dapper.mapParamQuery "SELECT * FROM GenomeScores WHERE TagId = @TagId AND MovieId = @MovieId" (Map.ofSeq ["@TagId", tagId; "@MovieId", movieId]) } - - let getGenomeScores (movieId : int) = async { - let! connection = openConnection connectionString - return - connection - |> Dapper.mapParamQuery "SELECT * FROM GenomeScores WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } - module SchemaDefinition = let rec Rating = Define.Object( @@ -189,27 +173,9 @@ module SchemaDefinition = Define.Field("movieId", Int, resolve = fun _ (t : Tag) -> t.MovieId) Define.AsyncField("movie", Movie, resolve = fun _ (t : Tag) -> Database.getMovie t.MovieId) Define.Field("userId", Int, resolve = fun _ (t : Tag) -> t.UserId) - Define.Field("timestamp", Int, resolve = fun _ (t : Tag) -> t.Timestamp) ]) - - and GenomeTag = - Define.Object( - name = "GenomeTag", - isTypeOf = (fun o -> o :? GenomeTag), - fieldsFn = fun () -> - [ Define.Field("tagId", Int, resolve = fun _ (gt : GenomeTag) -> gt.TagId) - Define.AsyncField("tag", Tag, resolve = fun _ (gt : GenomeTag) -> Database.getTag gt.TagId) - Define.Field("value", String, resolve = fun _ (gt : GenomeTag) -> gt.Tag) ]) - - and GenomeScore = - Define.Object( - name = "GenomeScore", - isTypeOf = (fun o -> o :? GenomeScore), - fieldsFn = fun () -> - [ Define.Field("movieId", Int, resolve = fun _ (gs : GenomeScore) -> gs.MovieId) - Define.AsyncField("movie", Movie, resolve = fun _ (gs : GenomeScore) -> Database.getMovie gs.MovieId) - Define.Field("tagId", Int, resolve = fun _ (gs : GenomeScore) -> gs.TagId) - Define.AsyncField("tag", Tag, resolve = fun _ (gs : GenomeScore) -> Database.getTag gs.MovieId) - Define.Field("relevance", Float, resolve = fun _ (gs : GenomeScore) -> System.Convert.ToDouble(gs.Relevance)) ]) + Define.Field("timestamp", Int, resolve = fun _ (t : Tag) -> t.Timestamp) + Define.Field("name", String, resolve = fun _ (t : Tag) -> t.Tag) + Define.Field("relevance", Float, resolve = fun _ (t : Tag) -> System.Convert.ToDouble(t.Relevance)) ]) and Movie = Define.Object( @@ -241,16 +207,7 @@ module SchemaDefinition = resolve = fun ctx (m : Movie) -> match ctx.TryArg("userId") with | Some (Some userId) -> Database.getTagsOfUser userId m.MovieId - | _ -> Database.getTags m.MovieId) - Define.AsyncField( - "genomeScores", - ListOf GenomeScore, - "Gets movie genome scores", - args = [ Define.Input("tagId", Nullable Int) ], - resolve = fun ctx (m : Movie) -> - match ctx.TryArg("tagId") with - | Some (Some tagId) -> Database.getGenomeScoresForTag tagId m.MovieId - | _ -> Database.getGenomeScores m.MovieId) ]) + | _ -> Database.getTags m.MovieId) ]) let Query = Define.Object( name = "Query", From da79a2b440717908a308def8407f45428eb6e20d Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Wed, 23 Jan 2019 19:33:53 -0200 Subject: [PATCH 04/32] Refactoring and implementing new kinds of query benchmarks --- .../Queries.fs | 95 ++++++++++++------- .../QueryBenchmarks.fs | 28 ++++-- 2 files changed, 82 insertions(+), 41 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs index 47f280a89..d7893e82c 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs @@ -1,40 +1,65 @@ -module FSharp.Data.GraphQL.Benchmarks.Sql.Queries +namespace FSharp.Data.GraphQL.Benchmarks.Sql -let movie = """query q { - requestId - movie (movieId : 1) { - title - } -}""" +type DeferralType = + | Direct + | Deferred + | Streamed + override this.ToString() = + match this with + | Direct -> "" + | Deferred -> "@defer" + | Streamed -> "@stream" -let movieUserRating = """query q { - requestId - movie (movieId: 1) { - title - genres - ratings (userId: 283199) { - rating - timestamp - } - } -}""" +module Queries = + let singleMovie = """query q { + requestId + movie (movieId : 1) { + title + } + }""" -let private movieRatings = sprintf """query q { - requestId - movie (movieId: 1) { - title - genres - tags %s { - name - userId - timestamp - relevance - } - } -}""" + let singleMovieSingleUserRating = """query q { + requestId + movie (movieId: 1) { + title + genres + ratings (userId: 283199) { + rating + timestamp + } + } + }""" -let movieRatingsDirect = movieRatings "" + let movieTags (deferralType : DeferralType) = + sprintf """query q { + requestId + movie (movieId: 1) { + title + genres + tags %A { + name + userId + timestamp + relevance + } + } + }""" deferralType -let movieRatingsStreamed = movieRatings "@stream" - -let movieRatingsDeferred = movieRatings "@defer" \ No newline at end of file + let movieTagsAndLinks (tagsDeferralType : DeferralType) (linksDeferralType : DeferralType) = + sprintf """query q { + requestId + movie (movieId: 1) { + title + genres + tags %A { + name + userId + timestamp + relevance + } + links %A { + imdbId + tmdbId + } + } + }""" tagsDeferralType linksDeferralType \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs index 416aa23cf..2b90fa39e 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs @@ -2,13 +2,14 @@ open BenchmarkDotNet.Attributes open FSharp.Data.GraphQL -open Helpers [] [); CoreJob; MonoJob>] type QueryBenchmarks() = let mutable schema = Unchecked.defaultof> let mutable executor = Unchecked.defaultof> + let executeDirect query = Helpers.executeDirect executor query + let executeDeferred query = Helpers.executeDeferred executor query [] member __.Setup() = @@ -16,16 +17,31 @@ type QueryBenchmarks() = executor <- Executor(schema) [] - member __.MovieQuery() = executeDirect executor Queries.movie + member __.SingleMovie() = executeDirect Queries.singleMovie [] - member __.MovieUserRatingQuery() = executeDirect executor Queries.movieUserRating + member __.SingleMovieSingleUserRating() = executeDirect Queries.singleMovieSingleUserRating [] - member __.MovieRatingsDirectQuery() = executeDirect executor Queries.movieRatingsDirect + member __.MovieTagsDirect() = executeDirect (Queries.movieTags Direct) [] - member __.MovieRatingsStreamed() = executeDeferred executor Queries.movieRatingsStreamed + member __.MovieTagsStreamed() = executeDeferred (Queries.movieTags Streamed) [] - member __.MovieRatingsDeferred() = executeDeferred executor Queries.movieRatingsDeferred \ No newline at end of file + member __.MovieTagsDeferred() = executeDeferred (Queries.movieTags Deferred) + + [] + member __.MovieTagsDirectAndLinksDirect() = executeDirect (Queries.movieTagsAndLinks Direct Direct) + + [] + member __.MovieTagsStreamedAndLinksDirect() = executeDeferred (Queries.movieTagsAndLinks Streamed Direct) + + [] + member __.MovieTagsStreamedAndLinksStreamed() = executeDeferred (Queries.movieTagsAndLinks Streamed Streamed) + + [] + member __.MovieTagsDeferredAndLinksDeferred() = executeDeferred (Queries.movieTagsAndLinks Deferred Deferred) + + [] + member __.MovieTagsStreamedAndLinksDeferred() = executeDeferred (Queries.movieTagsAndLinks Streamed Deferred) \ No newline at end of file From 33a81da249e7a94f3d016c2b88150d5c73081719 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Wed, 23 Jan 2019 19:56:36 -0200 Subject: [PATCH 05/32] Fixing schema design errors --- ...hmarks.Sql.QueryBenchmarks-report-github.md | 18 ++++++++++++------ ...L.Benchmarks.Sql.QueryBenchmarks-report.csv | 14 ++++++++++---- ....Benchmarks.Sql.QueryBenchmarks-report.html | 16 +++++++++++----- .../Queries.fs | 10 +++++----- .../Schema.fs | 6 +++--- 5 files changed, 41 insertions(+), 23 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md index 722ac4501..f24598b4a 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md @@ -9,9 +9,15 @@ Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical co Job=Core Runtime=Core ``` -| Method | Mean | Error | StdDev | Median | Min | Max | Op/s | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op | -|---------------- |-------------:|------------:|------------:|--------------:|--------------:|-------------:|---------:|------------:|------------:|------------:|--------------------:| -| SimpleQuery | 1.692 ms | 0.5130 ms | 1.5047 ms | 0.8638 ms | 0.5520 ms | 5.489 ms | 590.9996 | - | - | - | 22.38 KB | -| FlatQuery | 1.593 ms | 0.1143 ms | 0.3149 ms | 1.5009 ms | 1.1316 ms | 2.582 ms | 627.8552 | - | - | - | 38.01 KB | -| LongListQuery | 1,394.840 ms | 27.7700 ms | 70.1784 ms | 1,383.1667 ms | 1,296.3221 ms | 1,584.532 ms | 0.7169 | 75000.0000 | 19000.0000 | 2000.0000 | 39.12 KB | -| LongStreamQuery | 6,247.535 ms | 126.1488 ms | 224.2294 ms | 6,217.0907 ms | 5,910.6571 ms | 6,733.767 ms | 0.1601 | 142000.0000 | 38000.0000 | 3000.0000 | 2633.83 KB | +| Method | Mean | Error | StdDev | Median | Min | Max | Op/s | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op | +|---------------------------------- |----------:|----------:|----------:|-----------:|-----------:|----------:|-------:|------------:|------------:|------------:|--------------------:| +| SingleMovie | 2.046 ms | 0.6497 ms | 1.9157 ms | 0.9003 ms | 0.5736 ms | 6.357 ms | 488.76 | - | - | - | 24.11 KB | +| SingleMovieSingleUserRating | 1.511 ms | 0.0719 ms | 0.1979 ms | 1.4612 ms | 1.1930 ms | 2.166 ms | 661.78 | - | - | - | 41.68 KB | +| MovieTagsDirect | 32.058 ms | 0.7612 ms | 2.1346 ms | 31.5728 ms | 28.3333 ms | 37.816 ms | 31.19 | 1000.0000 | - | - | 48.18 KB | +| MovieTagsStreamed | 67.306 ms | 1.3853 ms | 4.0410 ms | 66.6163 ms | 59.7592 ms | 76.686 ms | 14.86 | 2000.0000 | 1000.0000 | - | 83.96 KB | +| MovieTagsDeferred | 44.227 ms | 0.8798 ms | 2.5243 ms | 44.1868 ms | 38.9480 ms | 50.599 ms | 22.61 | 1000.0000 | - | - | 59.1 KB | +| MovieTagsDirectAndLinksDirect | 31.890 ms | 0.6293 ms | 0.9798 ms | 31.9148 ms | 29.7126 ms | 33.809 ms | 31.36 | 1000.0000 | - | - | 60.31 KB | +| MovieTagsStreamedAndLinksDirect | 67.420 ms | 1.4543 ms | 2.6957 ms | 66.7677 ms | 63.1727 ms | 74.908 ms | 14.83 | 2000.0000 | 1000.0000 | - | 92.8 KB | +| MovieTagsStreamedAndLinksStreamed | 66.878 ms | 1.3958 ms | 2.8512 ms | 66.7963 ms | 61.6435 ms | 74.211 ms | 14.95 | 2000.0000 | 1000.0000 | - | 94.13 KB | +| MovieTagsDeferredAndLinksDeferred | 45.175 ms | 0.9025 ms | 2.3458 ms | 45.2692 ms | 40.5602 ms | 51.800 ms | 22.14 | 1000.0000 | - | - | 72.16 KB | +| MovieTagsStreamedAndLinksDeferred | 68.978 ms | 1.5421 ms | 4.3747 ms | 67.9400 ms | 62.0436 ms | 80.226 ms | 14.50 | 2000.0000 | 1000.0000 | - | 93.71 KB | diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv index 6a4067684..6dc28ac6e 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv @@ -1,5 +1,11 @@ Method;Job;AnalyzeLaunchVariance;EvaluateOverhead;MaxAbsoluteError;MaxRelativeError;MinInvokeCount;MinIterationTime;OutlierMode;Affinity;EnvironmentVariables;Jit;Platform;Runtime;AllowVeryLargeObjects;Concurrent;CpuGroups;Force;HeapAffinitizeMask;HeapCount;NoAffinitize;RetainVm;Server;Arguments;BuildConfiguration;Clock;EngineFactory;NuGetReferences;Toolchain;IsMutator;InvocationCount;IterationCount;IterationTime;LaunchCount;MaxIterationCount;MaxWarmupIterationCount;MinIterationCount;MinWarmupIterationCount;RunStrategy;UnrollFactor;WarmupCount;Mean;Error;StdDev;Median;Min;Max;Op/s;Gen 0/1k Op;Gen 1/1k Op;Gen 2/1k Op;Allocated Memory/Op -SimpleQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;1.692 ms;0.5130 ms;1.5047 ms;0.8638 ms;0.5520 ms;5.489 ms;590.9996;-;-;-;22.38 KB -FlatQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;1.593 ms;0.1143 ms;0.3149 ms;1.5009 ms;1.1316 ms;2.582 ms;627.8552;-;-;-;38.01 KB -LongListQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,394.840 ms";27.7700 ms;70.1784 ms;"1,383.1667 ms";"1,296.3221 ms";"1,584.532 ms";0.7169;75000.0000;19000.0000;2000.0000;39.12 KB -LongStreamQuery;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"6,247.535 ms";126.1488 ms;224.2294 ms;"6,217.0907 ms";"5,910.6571 ms";"6,733.767 ms";0.1601;142000.0000;38000.0000;3000.0000;2633.83 KB +SingleMovie;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;2.046 ms;0.6497 ms;1.9157 ms;0.9003 ms;0.5736 ms;6.357 ms;488.76;-;-;-;24.11 KB +SingleMovieSingleUserRating;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;1.511 ms;0.0719 ms;0.1979 ms;1.4612 ms;1.1930 ms;2.166 ms;661.78;-;-;-;41.68 KB +MovieTagsDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;32.058 ms;0.7612 ms;2.1346 ms;31.5728 ms;28.3333 ms;37.816 ms;31.19;1000.0000;-;-;48.18 KB +MovieTagsStreamed;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;67.306 ms;1.3853 ms;4.0410 ms;66.6163 ms;59.7592 ms;76.686 ms;14.86;2000.0000;1000.0000;-;83.96 KB +MovieTagsDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;44.227 ms;0.8798 ms;2.5243 ms;44.1868 ms;38.9480 ms;50.599 ms;22.61;1000.0000;-;-;59.1 KB +MovieTagsDirectAndLinksDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;31.890 ms;0.6293 ms;0.9798 ms;31.9148 ms;29.7126 ms;33.809 ms;31.36;1000.0000;-;-;60.31 KB +MovieTagsStreamedAndLinksDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;67.420 ms;1.4543 ms;2.6957 ms;66.7677 ms;63.1727 ms;74.908 ms;14.83;2000.0000;1000.0000;-;92.8 KB +MovieTagsStreamedAndLinksStreamed;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;66.878 ms;1.3958 ms;2.8512 ms;66.7963 ms;61.6435 ms;74.211 ms;14.95;2000.0000;1000.0000;-;94.13 KB +MovieTagsDeferredAndLinksDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;45.175 ms;0.9025 ms;2.3458 ms;45.2692 ms;40.5602 ms;51.800 ms;22.14;1000.0000;-;-;72.16 KB +MovieTagsStreamedAndLinksDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;68.978 ms;1.5421 ms;4.3747 ms;67.9400 ms;62.0436 ms;80.226 ms;14.50;2000.0000;1000.0000;-;93.71 KB diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html index c71129631..3e494bdf0 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html @@ -23,12 +23,18 @@ - + - - - - + + + + + + + + + +
Method MeanErrorStdDev Median Min MaxOp/sGen 0/1k OpGen 1/1k OpGen 2/1k OpAllocated Memory/Op
MethodMeanErrorStdDevMedian MinMaxOp/sGen 0/1k OpGen 1/1k OpGen 2/1k OpAllocated Memory/Op
SimpleQuery1.692 ms0.5130 ms1.5047 ms0.8638 ms0.5520 ms5.489 ms590.9996---22.38 KB
FlatQuery1.593 ms0.1143 ms0.3149 ms1.5009 ms1.1316 ms2.582 ms627.8552---38.01 KB
LongListQuery1,394.840 ms27.7700 ms70.1784 ms1,383.1667 ms1,296.3221 ms1,584.532 ms0.716975000.000019000.00002000.000039.12 KB
LongStreamQuery6,247.535 ms126.1488 ms224.2294 ms6,217.0907 ms5,910.6571 ms6,733.767 ms0.1601142000.000038000.00003000.00002633.83 KB
SingleMovie2.046 ms0.6497 ms1.9157 ms0.9003 ms0.5736 ms6.357 ms488.76---24.11 KB
SingleMovieSingleUserRating1.511 ms0.0719 ms0.1979 ms1.4612 ms1.1930 ms2.166 ms661.78---41.68 KB
MovieTagsDirect32.058 ms0.7612 ms2.1346 ms31.5728 ms28.3333 ms37.816 ms31.191000.0000--48.18 KB
MovieTagsStreamed67.306 ms1.3853 ms4.0410 ms66.6163 ms59.7592 ms76.686 ms14.862000.00001000.0000-83.96 KB
MovieTagsDeferred44.227 ms0.8798 ms2.5243 ms44.1868 ms38.9480 ms50.599 ms22.611000.0000--59.1 KB
MovieTagsDirectAndLinksDirect31.890 ms0.6293 ms0.9798 ms31.9148 ms29.7126 ms33.809 ms31.361000.0000--60.31 KB
MovieTagsStreamedAndLinksDirect67.420 ms1.4543 ms2.6957 ms66.7677 ms63.1727 ms74.908 ms14.832000.00001000.0000-92.8 KB
MovieTagsStreamedAndLinksStreamed66.878 ms1.3958 ms2.8512 ms66.7963 ms61.6435 ms74.211 ms14.952000.00001000.0000-94.13 KB
MovieTagsDeferredAndLinksDeferred45.175 ms0.9025 ms2.3458 ms45.2692 ms40.5602 ms51.800 ms22.141000.0000--72.16 KB
MovieTagsStreamedAndLinksDeferred68.978 ms1.5421 ms4.3747 ms67.9400 ms62.0436 ms80.226 ms14.502000.00001000.0000-93.71 KB
diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs index d7893e82c..0de74a06c 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs @@ -36,14 +36,14 @@ module Queries = movie (movieId: 1) { title genres - tags %A { + tags %s { name userId timestamp relevance } } - }""" deferralType + }""" (deferralType.ToString()) let movieTagsAndLinks (tagsDeferralType : DeferralType) (linksDeferralType : DeferralType) = sprintf """query q { @@ -51,15 +51,15 @@ module Queries = movie (movieId: 1) { title genres - tags %A { + tags %s { name userId timestamp relevance } - links %A { + links %s { imdbId tmdbId } } - }""" tagsDeferralType linksDeferralType \ No newline at end of file + }""" (tagsDeferralType.ToString()) (linksDeferralType.ToString()) \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs index 5621c5f80..f90d52ace 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs @@ -138,9 +138,9 @@ WHERE T.MovieId = @MovieId""" (Map.ofSeq ["@MovieId", movieId]) } let getLinks (movieId : int) = async { let! connection = openConnection connectionString - return + return! connection - |> Dapper.mapParamQuery "SELECT * FROM Links WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } + |> Dapper.mapParamQueryFirst "SELECT * FROM Links WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } module SchemaDefinition = let rec Rating = @@ -196,7 +196,7 @@ module SchemaDefinition = | _ -> Database.getRatings m.MovieId) Define.AsyncField( "links", - ListOf Link, + Link, "Gets movie links", resolve = fun _ (m : Movie) -> Database.getLinks m.MovieId) Define.AsyncField( From 1e7b76fc077f1d066dedb07d512b3530ea695a1b Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Wed, 23 Jan 2019 20:00:35 -0200 Subject: [PATCH 06/32] Fixing query errors --- tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs | 9 +++++---- .../QueryBenchmarks.fs | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs index 0de74a06c..df1b26775 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs @@ -45,7 +45,7 @@ module Queries = } }""" (deferralType.ToString()) - let movieTagsAndLinks (tagsDeferralType : DeferralType) (linksDeferralType : DeferralType) = + let movieTagsAndRatings (tagsDeferralType : DeferralType) (linksDeferralType : DeferralType) = sprintf """query q { requestId movie (movieId: 1) { @@ -57,9 +57,10 @@ module Queries = timestamp relevance } - links %s { - imdbId - tmdbId + ratings %s { + userId + rating + timestamp } } }""" (tagsDeferralType.ToString()) (linksDeferralType.ToString()) \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs index 2b90fa39e..e9faf9918 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs @@ -32,16 +32,16 @@ type QueryBenchmarks() = member __.MovieTagsDeferred() = executeDeferred (Queries.movieTags Deferred) [] - member __.MovieTagsDirectAndLinksDirect() = executeDirect (Queries.movieTagsAndLinks Direct Direct) + member __.MovieTagsDirectAndRatingsDirect() = executeDirect (Queries.movieTagsAndRatings Direct Direct) [] - member __.MovieTagsStreamedAndLinksDirect() = executeDeferred (Queries.movieTagsAndLinks Streamed Direct) + member __.MovieTagsStreamedAndRatingsDirect() = executeDeferred (Queries.movieTagsAndRatings Streamed Direct) [] - member __.MovieTagsStreamedAndLinksStreamed() = executeDeferred (Queries.movieTagsAndLinks Streamed Streamed) + member __.MovieTagsStreamedAndRatingsStreamed() = executeDeferred (Queries.movieTagsAndRatings Streamed Streamed) [] - member __.MovieTagsDeferredAndLinksDeferred() = executeDeferred (Queries.movieTagsAndLinks Deferred Deferred) + member __.MovieTagsDeferredAndRatingsDeferred() = executeDeferred (Queries.movieTagsAndRatings Deferred Deferred) [] - member __.MovieTagsStreamedAndLinksDeferred() = executeDeferred (Queries.movieTagsAndLinks Streamed Deferred) \ No newline at end of file + member __.MovieTagsStreamedAndRatingsDeferred() = executeDeferred (Queries.movieTagsAndRatings Streamed Deferred) \ No newline at end of file From 24b31effee72b5abe49a303abe81f635ef961789 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Thu, 24 Jan 2019 16:34:38 -0200 Subject: [PATCH 07/32] Added new benchmarks --- .../Helpers.fs | 2 +- .../Queries.fs | 91 ++++++++++++------- .../QueryBenchmarks.fs | 11 ++- .../Schema.fs | 51 +++++++++-- 4 files changed, 112 insertions(+), 43 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs index e3373e424..77238ac95 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Helpers.fs @@ -9,7 +9,7 @@ let private fail (errs : #seq) = let sb = StringBuilder() for err in errs do sb.AppendLine(err.ToString()) |> ignore - failwithf "Query execution resulted in errors:%s%s" Environment.NewLine (sb.ToString()) + failwithf "Query execution has errors:%s%s" Environment.NewLine (sb.ToString()) let private execute (executor : Executor) (query : string) = let root = { RequestId = Guid.NewGuid().ToString() } diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs index df1b26775..2d81d135f 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs @@ -12,55 +12,76 @@ type DeferralType = module Queries = let singleMovie = """query q { - requestId - movie (movieId : 1) { - title + requestId + objects { + movie(movieId: 1) { + title + } } }""" - let singleMovieSingleUserRating = """query q { - requestId - movie (movieId: 1) { - title - genres - ratings (userId: 283199) { - rating - timestamp + let singleMovieSingleUserRating = + """query q { + requestId + objects { + movie(movieId: 1) { + title + genres + ratings(userId: 283199) { + rating + timestamp + } } } }""" let movieTags (deferralType : DeferralType) = sprintf """query q { - requestId - movie (movieId: 1) { - title - genres - tags %s { - name - userId - timestamp - relevance + requestId + objects { + movie(movieId: 1) { + title + genres + tags %s { + name + userId + timestamp + relevance + } } } }""" (deferralType.ToString()) let movieTagsAndRatings (tagsDeferralType : DeferralType) (linksDeferralType : DeferralType) = sprintf """query q { - requestId - movie (movieId: 1) { - title - genres - tags %s { - name - userId - timestamp - relevance - } - ratings %s { - userId - rating - timestamp + requestId + objects { + movie (movieId: 1) { + title + genres + tags %s { + name + userId + timestamp + relevance + } + ratings %s { + userId + rating + timestamp + } } } - }""" (tagsDeferralType.ToString()) (linksDeferralType.ToString()) \ No newline at end of file + }""" (tagsDeferralType.ToString()) (linksDeferralType.ToString()) + + let allMovies (deferralType : DeferralType) = + sprintf """query q { + requestId + collections { + movies %s { + movieId + title + genres + } + } + }""" (deferralType.ToString()) \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs index e9faf9918..029f41c23 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs @@ -44,4 +44,13 @@ type QueryBenchmarks() = member __.MovieTagsDeferredAndRatingsDeferred() = executeDeferred (Queries.movieTagsAndRatings Deferred Deferred) [] - member __.MovieTagsStreamedAndRatingsDeferred() = executeDeferred (Queries.movieTagsAndRatings Streamed Deferred) \ No newline at end of file + member __.MovieTagsStreamedAndRatingsDeferred() = executeDeferred (Queries.movieTagsAndRatings Streamed Deferred) + + [] + member __.AllMoviesDirect() = executeDirect (Queries.allMovies Direct) + + [] + member __.AllMoviesDeferred() = executeDeferred (Queries.allMovies Deferred) + + [] + member __.AllMoviesStreamed() = executeDeferred (Queries.allMovies Streamed) \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs index f90d52ace..ef4cfb8d9 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs @@ -84,6 +84,12 @@ module Database = do! conn.OpenAsync() |> Async.AwaitTask return conn } + let getAllMovies () = async { + let! connection = openConnection connectionString + return + connection + |> Dapper.query "SELECT * FROM Movies" } + let getMovie (id : int) = async { let! connection = openConnection connectionString return! @@ -142,6 +148,13 @@ WHERE T.MovieId = @MovieId""" (Map.ofSeq ["@MovieId", movieId]) } connection |> Dapper.mapParamQueryFirst "SELECT * FROM Links WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } +type Context = + { GetMovie : int -> Async + Movies : Async } + static member Instance = + { Movies = Database.getAllMovies () + GetMovie = Database.getMovie } + module SchemaDefinition = let rec Rating = Define.Object( @@ -208,6 +221,28 @@ module SchemaDefinition = match ctx.TryArg("userId") with | Some (Some userId) -> Database.getTagsOfUser userId m.MovieId | _ -> Database.getTags m.MovieId) ]) + + let Collections = + Define.Object( + name = "Collections", + fields = [ + Define.AsyncField( + "movies", + ListOf Movie, + "Gets a list of movies", + resolve = fun _ c -> c.Movies) ]) + + let Objects = + Define.Object( + name = "objects", + fields = [ + Define.AsyncField( + "movie", + Nullable Movie, + "Gets movie by it's id", + args = [ Define.Input("movieId", Int) ], + resolve = fun ctx _ -> Database.tryGetMovie (ctx.Arg("movieId"))) ]) + let Query = Define.Object( name = "Query", @@ -216,9 +251,13 @@ module SchemaDefinition = "requestId", String, resolve = fun _ (r : Root) -> r.RequestId) - Define.AsyncField( - "movie", - Nullable Movie, - "Gets movie by it's id", - args = [ Define.Input("movieId", Int) ], - resolve = fun ctx _ -> Database.tryGetMovie (ctx.Arg("movieId"))) ]) \ No newline at end of file + Define.Field( + "objects", + Objects, + "Get's objects by querying collections", + resolve = fun _ _ -> Context.Instance) + Define.Field( + "collections", + Collections, + "Gets collections on the server", + resolve = fun _ _ -> Context.Instance) ]) \ No newline at end of file From 5548fd1ff2f117c6041a583b476a6c535bea8c27 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Thu, 24 Jan 2019 17:13:43 -0200 Subject: [PATCH 08/32] Switching to MARS --- .../QueryBenchmarks.fs | 4 ++ .../Schema.fs | 42 ++++++++++++------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs index 029f41c23..c9ee2d6f9 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs @@ -16,6 +16,10 @@ type QueryBenchmarks() = schema <- Schema(SchemaDefinition.Query, config = SchemaConfig.Default) executor <- Executor(schema) + [] + member __.Cleanup() = + Database.connection.Dispose() + [] member __.SingleMovie() = executeDirect Queries.singleMovie diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs index ef4cfb8d9..61fc6f555 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Schema.fs @@ -77,21 +77,26 @@ module Dapper = module Database = let [] private connectionString = - "Data Source=.;Initial Catalog=MovieLens;Integrated Security=True" + "Data Source=.;Initial Catalog=MovieLens;Integrated Security=True;MultipleActiveResultSets=True" let openConnection connectionString = async { let conn = new SqlConnection(connectionString) do! conn.OpenAsync() |> Async.AwaitTask return conn } + let connection = openConnection connectionString |> Async.RunSynchronously + let getAllMovies () = async { - let! connection = openConnection connectionString return connection |> Dapper.query "SELECT * FROM Movies" } + let getTopMovies count = async { + return + connection + |> Dapper.mapParamQuery "SELECT TOP (@Count) * FROM Movies" (Map.ofSeq ["@Count", count]) } + let getMovie (id : int) = async { - let! connection = openConnection connectionString return! connection |> Dapper.mapParamQueryFirst "SELECT TOP 1 * FROM Movies WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", id]) } @@ -103,7 +108,6 @@ module Database = else return Some movie } let getTag (movieId : int) = async { - let! connection = openConnection connectionString return! connection |> Dapper.mapParamQueryFirst "SELECT TOP 1 * FROM Tags WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } @@ -115,13 +119,11 @@ module Database = else return Some tag } let getTagsOfUser (userId : int) (movieId : int) = async { - let! connection = openConnection connectionString return connection |> Dapper.mapParamQuery "SELECT * FROM Tags WHERE UserId = @UserId AND MovieId = @MovieId" (Map.ofSeq ["@UserId", userId; "@MovieId", movieId]) } let getTags (movieId : int) = async { - let! connection = openConnection connectionString return connection |> Dapper.mapParamQuery """SELECT GT.TagId, T.MovieId, T.UserId, T.Tag, T.[Timestamp], GS.Relevance @@ -131,29 +133,28 @@ INNER JOIN GenomeScores GS ON (GS.TagId = GT.TagId AND GS.MovieId = T.MovieId) WHERE T.MovieId = @MovieId""" (Map.ofSeq ["@MovieId", movieId]) } let getRatingsOfUser (userId : int) (movieId : int) = async { - let! connection = openConnection connectionString return connection |> Dapper.mapParamQuery "SELECT * FROM Ratings WHERE UserId = @UserId AND MovieId = @MovieId" (Map.ofSeq ["@UserId", userId; "@MovieId", movieId]) } let getRatings (movieId : int) = async { - let! connection = openConnection connectionString return connection |> Dapper.mapParamQuery "SELECT * FROM Ratings WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } let getLinks (movieId : int) = async { - let! connection = openConnection connectionString return! connection |> Dapper.mapParamQueryFirst "SELECT * FROM Links WHERE MovieId = @MovieId" (Map.ofSeq ["@MovieId", movieId]) } type Context = - { GetMovie : int -> Async + { Movie : int -> Async + TopMovies : int -> Async Movies : Async } static member Instance = { Movies = Database.getAllMovies () - GetMovie = Database.getMovie } + TopMovies = Database.getTopMovies + Movie = Database.tryGetMovie } module SchemaDefinition = let rec Rating = @@ -230,7 +231,11 @@ module SchemaDefinition = "movies", ListOf Movie, "Gets a list of movies", - resolve = fun _ c -> c.Movies) ]) + args = [ Define.Input("count", Nullable Int) ], + resolve = fun ctx c -> + match ctx.TryArg("count") with + | Some (Some count) -> c.TopMovies count + | _ -> c.Movies) ]) let Objects = Define.Object( @@ -241,7 +246,7 @@ module SchemaDefinition = Nullable Movie, "Gets movie by it's id", args = [ Define.Input("movieId", Int) ], - resolve = fun ctx _ -> Database.tryGetMovie (ctx.Arg("movieId"))) ]) + resolve = fun ctx c -> c.Movie (ctx.Arg("movieId"))) ]) let Query = Define.Object( @@ -260,4 +265,13 @@ module SchemaDefinition = "collections", Collections, "Gets collections on the server", - resolve = fun _ _ -> Context.Instance) ]) \ No newline at end of file + resolve = fun _ _ -> Context.Instance) ]) + +module Schema = + let config = SchemaConfig.Default + + let root requestId = { RequestId = requestId } + + let instance = Schema(SchemaDefinition.Query, config = config) + + let executor = Executor(instance) \ No newline at end of file From 9036472458419b274267a6417938007955ade789 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Thu, 24 Jan 2019 17:20:43 -0200 Subject: [PATCH 09/32] Adding nested defer benchmarks --- .../Queries.fs | 18 +++++++++++- .../QueryBenchmarks.fs | 29 ++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs index 2d81d135f..7945541de 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/Queries.fs @@ -84,4 +84,20 @@ module Queries = genres } } - }""" (deferralType.ToString()) \ No newline at end of file + }""" (deferralType.ToString()) + + let fiftyMoviesWithLinks (moviesDeferralType :DeferralType) (linksDeferralType : DeferralType) = + sprintf """query q { + requestId + collections { + movies (count: 50) %s { + movieId + title + genres + links %s { + imdbId + tmdbId + } + } + } + }""" (moviesDeferralType.ToString()) (linksDeferralType.ToString()) \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs index c9ee2d6f9..4382417a4 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/QueryBenchmarks.fs @@ -57,4 +57,31 @@ type QueryBenchmarks() = member __.AllMoviesDeferred() = executeDeferred (Queries.allMovies Deferred) [] - member __.AllMoviesStreamed() = executeDeferred (Queries.allMovies Streamed) \ No newline at end of file + member __.AllMoviesStreamed() = executeDeferred (Queries.allMovies Streamed) + + [] + member __.FiftyDirectMoviesWithDirectLinks() = executeDirect (Queries.fiftyMoviesWithLinks Direct Direct) + + [] + member __.FiftyDirectMoviesWithDeferredLinks() = executeDeferred (Queries.fiftyMoviesWithLinks Direct Deferred) + + [] + member __.FiftyDirectMoviesWithStreamedLinks() = executeDeferred (Queries.fiftyMoviesWithLinks Direct Streamed) + + [] + member __.FiftyDeferredMoviesWithDirectLinks() = executeDeferred (Queries.fiftyMoviesWithLinks Deferred Direct) + + [] + member __.FiftyStreamedMoviesWithDirectLinks() = executeDeferred (Queries.fiftyMoviesWithLinks Streamed Direct) + + [] + member __.FiftyDeferredMoviesWithDeferredLinks() = executeDeferred (Queries.fiftyMoviesWithLinks Deferred Deferred) + + [] + member __.FiftyDeferredMoviesWithStreamedLinks() = executeDeferred (Queries.fiftyMoviesWithLinks Deferred Streamed) + + [] + member __.FiftyStreamedMoviesWithDeferredLinks() = executeDeferred (Queries.fiftyMoviesWithLinks Streamed Deferred) + + [] + member __.FiftyStreamedMoviesWithStreamedLinks() = executeDeferred (Queries.fiftyMoviesWithLinks Streamed Streamed) \ No newline at end of file From df06543535c0def7f1bb7709370a5f26ed88f072 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Thu, 24 Jan 2019 17:27:03 -0200 Subject: [PATCH 10/32] Converting to paket --- paket.dependencies | 5 ++++- .../FSharp.Data.GraphQL.Benchmarks.Sql.fsproj | 22 ++++--------------- .../paket.references | 5 +++++ 3 files changed, 13 insertions(+), 19 deletions(-) create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references diff --git a/paket.dependencies b/paket.dependencies index 48582c543..f617a95bf 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -31,4 +31,7 @@ group Test nuget xunit.runner.visualstudio nuget System.Reflection.Metadata nuget FSharp.Data.TypeProviders - nuget Microsoft.NET.Test.Sdk \ No newline at end of file + nuget Microsoft.NET.Test.Sdk + nuget System.Data.SqlClient + nuget FSharp.Data + nuget Dapper \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj index 8d8507a88..68e93e59d 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj @@ -1,10 +1,9 @@ - - + + Exe netcoreapp2.2 - @@ -14,25 +13,12 @@ - - - - - - - - - - - - - - - + + \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references new file mode 100644 index 000000000..c09767f1c --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references @@ -0,0 +1,5 @@ +BenchmarkDotNet +Dapper +FSharp.Data +System.Data.SqlClient +FSharp.Core \ No newline at end of file From 1e089ecad42e7a043dffebaffebf22e47f8385eb Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Thu, 24 Jan 2019 17:35:24 -0200 Subject: [PATCH 11/32] Updating paket.references for new project --- paket.lock | 417 +++++++++++------- .../paket.references | 1 + 2 files changed, 254 insertions(+), 164 deletions(-) diff --git a/paket.lock b/paket.lock index 2323719f8..5a30a8fbe 100644 --- a/paket.lock +++ b/paket.lock @@ -1857,6 +1857,17 @@ NUGET BenchmarkDotNet.Core (>= 0.10.9) - restriction: >= net46 Microsoft.CodeAnalysis.CSharp (>= 2.0) - restriction: >= net46 System.Threading.Tasks (>= 4.3) - restriction: >= net46 + Dapper (1.50.5) + NETStandard.Library (>= 1.6.1) - restriction: && (< net451) (>= netstandard1.3) (< netstandard2.0) + System.Collections.Concurrent (>= 4.3) - restriction: && (< net451) (>= netstandard1.3) (< netstandard2.0) + System.Collections.NonGeneric (>= 4.3) - restriction: && (< net451) (>= netstandard1.3) (< netstandard2.0) + System.Data.SqlClient (>= 4.4) - restriction: || (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (&& (< net451) (>= netstandard2.0)) + System.Dynamic.Runtime (>= 4.3) - restriction: && (< net451) (>= netstandard1.3) (< netstandard2.0) + System.Reflection.Emit (>= 4.3) - restriction: && (< net451) (>= netstandard1.3) (< netstandard2.0) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: || (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (&& (< net451) (>= netstandard2.0)) + System.Reflection.TypeExtensions (>= 4.4) - restriction: || (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (&& (< net451) (>= netstandard2.0)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< net451) (>= netstandard1.3) (< netstandard2.0) + System.Xml.XmlDocument (>= 4.3) - restriction: && (< net451) (>= netstandard1.3) (< netstandard2.0) FSharp.Core (4.2.2) System.Collections (>= 4.0.11) - restriction: >= netstandard1.6 System.Console (>= 4.0) - restriction: >= netstandard1.6 @@ -1881,6 +1892,9 @@ NUGET System.Threading.Thread (>= 4.0) - restriction: >= netstandard1.6 System.Threading.ThreadPool (>= 4.0.10) - restriction: >= netstandard1.6 System.Threading.Timer (>= 4.0.1) - restriction: >= netstandard1.6 + FSharp.Data (2.4.6) + FSharp.Core (>= 4.0.0.1) - restriction: && (< net40) (< portable-net45+win8+wp8+wpa81) + Zlib.Portable (>= 1.11) - restriction: || (&& (< net40) (>= portable-net45+win8)) (&& (< net40) (< portable-net45+win8) (>= portable-net45+win8+wp8+wpa81)) FSharp.Data.TypeProviders (5.0.0.2) FSharp.Core (>= 3.1.2.5) Libuv (1.10) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) @@ -1931,9 +1945,9 @@ NUGET Microsoft.CodeAnalysis.VisualBasic (2.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) Microsoft.CodeAnalysis.Common (>= 2.3.1) Microsoft.CSharp (4.4) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Dynamic.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Dynamic.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) Microsoft.DiaSymReader.Native (1.5) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) Microsoft.DotNet.InternalAbstractions (1.0) - restriction: || (>= net46) (>= netcoreapp1.1) System.AppContext (>= 4.1) - restriction: && (< net451) (>= netstandard1.3) @@ -2015,10 +2029,10 @@ NUGET Microsoft.NETCore.DotNetHostResolver (2.0) - restriction: >= netcoreapp1.1 Microsoft.NETCore.DotNetAppHost (>= 2.0) Microsoft.NETCore.Jit (2.0) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) - Microsoft.NETCore.Platforms (2.0) - restriction: || (&& (>= monoandroid) (>= netstandard1.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netstandard1.3)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.2) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard1.6)) (>= monotouch) (&& (< net20) (>= net45) (< portable-net451+win81+wpa81)) (&& (< net20) (>= net451) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net461) (< netstandard1.3)) (&& (< net20) (>= net461) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (< netstandard1.0) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< net20) (< netstandard1.3) (>= netstandard2.0)) (&& (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netcoreapp1.0) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (< netstandard1.2) (>= uap10.0) (< win8)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.3) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.NETCore.Platforms (2.2) - restriction: || (&& (>= monoandroid) (>= netstandard1.3) (< netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios)) (&& (< monoandroid) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard1.6) (< xamarinios)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.3)) (>= monotouch) (&& (>= net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (< net451) (>= net461) (< netstandard2.0)) (>= netcoreapp1.0) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard2.0) (>= xamarinios)) (>= uap10.1) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) Microsoft.NETCore.Runtime.CoreCLR (2.0) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) Microsoft.NETCore.Jit (>= 2.0) - Microsoft.NETCore.Targets (2.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.2) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (< netstandard1.2) (>= uap10.0) (< win8)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + Microsoft.NETCore.Targets (2.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) Microsoft.TestPlatform.ObjectModel (15.3) - restriction: >= netcoreapp1.0 NETStandard.Library (>= 1.6.1) - restriction: && (< net46) (>= netstandard1.5) System.ComponentModel.EventBasedAsync (>= 4.3) - restriction: && (< net46) (>= netstandard1.5) @@ -2042,60 +2056,60 @@ NUGET NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac)) (< portable-net45+win8+wpa81) System.Dynamic.Runtime (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac)) (< portable-net45+win8+wpa81) System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac)) (< portable-net45+win8+wpa81) - Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (< 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) - Microsoft.Win32.Registry (4.4) - restriction: || (>= net46) (>= netcoreapp1.1) - Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 - NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.AccessControl (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - NETStandard.Library (2.0) - restriction: || (&& (>= monoandroid) (>= netstandard1.0)) (>= monotouch) (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net35) (>= netstandard1.1)) (&& (< net452) (>= netstandard1.1)) (&& (>= net46) (< net461) (< netstandard2.0)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.0) (< netstandard1.1) (>= portable-net45+win8)) (&& (>= netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (>= netstandard1.1) (< netstandard2.0) (< xamarinmac)) (>= xamarinios) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wpa81) (< portable-net451+win81+wpa81)) (&& (< netstandard1.0) (>= portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.AppContext (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Console (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO.Compression.ZipFile (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Net.Http (>= 4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Net.Sockets (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net451+win81+wpa81)) (&& (>= net45) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.0) (>= portable-net45+win8+wpa81) (< portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Threading.Timer (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) - System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.Win32.Registry (4.5) - restriction: || (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= net46) (>= netcoreapp1.1) + System.Buffers (>= 4.4) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5) - restriction: || (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Security.AccessControl (>= 4.5) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 4.5) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + NETStandard.Library (2.0) - restriction: || (&& (>= monoandroid) (>= netstandard1.0) (< netstandard2.0)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (>= portable-net45+win8)) (&& (< monoandroid) (>= netstandard1.1) (< netstandard2.0) (< xamarinmac)) (>= monotouch) (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net35) (>= netstandard1.1)) (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (&& (< net452) (>= netstandard1.1)) (&& (>= net46) (< net461) (< netstandard2.0)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard2.0) (>= xamarinios)) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net451+win81+wpa81)) (>= monotouch) (&& (>= net45) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wpa81) (< portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.AppContext (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Console (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.Compression.ZipFile (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Http (>= 4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Sockets (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net451+win81+wpa81)) (&& (>= net45) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.0) (>= portable-net45+win8+wpa81) (< portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading.Timer (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) Newtonsoft.Json (11.0.2) Microsoft.CSharp (>= 4.3) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) @@ -2106,21 +2120,25 @@ NUGET runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) - runtime.native.System (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= net45) (< portable-net451+win81+wpa81)) (&& (< net20) (>= net451) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + runtime.native.System (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) - runtime.native.System.IO.Compression (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + runtime.native.System.Data.SqlClient.sni (4.5) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + runtime.win-arm64.runtime.native.System.Data.SqlClient.sni (>= 4.4) + runtime.win-x64.runtime.native.System.Data.SqlClient.sni (>= 4.4) + runtime.win-x86.runtime.native.System.Data.SqlClient.sni (>= 4.4) + runtime.native.System.IO.Compression (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< 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)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (>= net46) (< 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) runtime.native.System.Net.Http (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) - runtime.native.System.Net.Security (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) + runtime.native.System.Net.Security (4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) runtime.native.System.Security.Cryptography.Apple (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.1) runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.1) runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.1) @@ -2139,19 +2157,17 @@ NUGET runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) - System.AppContext (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (>= net46) (>= netcoreapp1.1) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + runtime.win-arm64.runtime.native.System.Data.SqlClient.sni (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + runtime.win-x64.runtime.native.System.Data.SqlClient.sni (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + runtime.win-x86.runtime.native.System.Data.SqlClient.sni (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + System.AppContext (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (>= net46) (>= netcoreapp1.1) (&& (< 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) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) + System.Buffers (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) (&& (>= uap10.1) (< win8) (< wpa81)) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.3) (< netstandard1.6) (< win81) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (>= net46) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< 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.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) @@ -2162,16 +2178,16 @@ NUGET 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.Collections.Immutable (1.4) - restriction: || (>= monoandroid) (>= monotouch) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netstandard1.1) (< netstandard2.0)) (&& (< netstandard1.1) (>= portable-net45+win8)) (&& (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Collections.Immutable (1.4) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (>= netstandard1.1) (< netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8)) (>= monotouch) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) NETStandard.Library (>= 1.6.1) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) - System.Collections.NonGeneric (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) + System.Collections.NonGeneric (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) 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.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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections.Specialized (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) + System.Collections.Specialized (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) System.Collections.NonGeneric (>= 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.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2179,17 +2195,17 @@ NUGET 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ComponentModel (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8)) + System.ComponentModel (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) 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.ComponentModel.Annotations (4.4) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8)) (< portable-net45+win8) - System.ComponentModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8)) (< portable-net45+win8) + NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.4) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8)) (< portable-net45+win8) + System.ComponentModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.4) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8)) (< portable-net45+win8) System.ComponentModel.EventBasedAsync (4.3) - restriction: >= netcoreapp1.0 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.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.ComponentModel.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8)) (&& (< net20) (>= net45) (>= netstandard1.3) (< netstandard1.5)) (&& (< net20) (>= net45) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< netstandard1.0) (>= netstandard1.3) (>= win8)) (&& (>= netstandard1.3) (< netstandard2.0) (>= wpa81)) (&& (< netstandard1.3) (>= wpa81)) (>= wp8) + System.ComponentModel.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8)) (&& (< net20) (>= net45) (>= netstandard1.3) (< netstandard1.5)) (&& (< net20) (>= net45) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< netstandard1.0) (>= netstandard1.3) (>= win8)) (&& (>= netstandard1.3) (< netstandard2.0) (>= wpa81)) (&& (< netstandard1.3) (>= wpa81)) (>= wp8) System.ComponentModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2209,24 +2225,55 @@ NUGET System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.5) (< win8) (< wp8) (< wpa81)) System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.5) (< win8) (< wp8) (< wpa81)) System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.5) (< win8) (< wp8) (< wpa81)) - System.Console (4.3) - restriction: || (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (>= net46) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) + System.Console (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (>= net46) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) + System.Data.Common (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< monoandroid) (< netstandard1.2) (>= portable-net451+win81+wpa81) (< win81)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< net461) (< netstandard2.0)) (&& (< netstandard1.3) (< win81) (>= wpa81)) (&& (< netstandard2.0) (< uap10.1) (>= win81)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.RegularExpressions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Data.SqlClient (4.6) + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= uap10.1 + Microsoft.Win32.Registry (>= 4.5) - restriction: || (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) + runtime.native.System.Data.SqlClient.sni (>= 4.4) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Data.SqlClient.sni (>= 4.5) - restriction: || (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + System.Buffers (>= 4.4) - restriction: && (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) + System.Data.Common (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< monoandroid) (< netstandard1.2) (>= portable-net451+win81+wpa81) (< win81)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< net461) (< netstandard2.0)) (&& (< netstandard1.3) (< win81) (>= wpa81)) (&& (< netstandard2.0) (< uap10.1) (>= win81)) + System.Diagnostics.DiagnosticSource (>= 4.4.1) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.DiagnosticSource (>= 4.5) - restriction: || (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.IO.Pipes (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Memory (>= 4.5.1) - restriction: || (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Net.NameResolution (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Security (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 4.4) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal.Windows (>= 4.4) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal.Windows (>= 4.5) - restriction: || (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + System.Text.Encoding.CodePages (>= 4.4) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding.CodePages (>= 4.5) - restriction: || (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) (&& (>= uap10.1) (< win8) (< wpa81)) 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: && (>= netcoreapp1.1) (< netcoreapp2.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.DiagnosticSource (4.5.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Collections (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Reflection (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) System.Diagnostics.FileVersionInfo (4.3) - restriction: >= net46 System.Diagnostics.Process (4.3) - restriction: || (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2258,7 +2305,7 @@ NUGET 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.Diagnostics.Tools (4.3) - restriction: || (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (>= net46) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Diagnostics.Tools (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= 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) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) 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) @@ -2272,11 +2319,11 @@ NUGET 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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.1) (< win8) (< wpa81)) 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.Dynamic.Runtime (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) + System.Dynamic.Runtime (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (>= net46) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) 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.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) @@ -2291,29 +2338,29 @@ NUGET 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.Threading (>= 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) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (< 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) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) + System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net451) (>= net46) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.Compression (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (< 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) @@ -2329,7 +2376,7 @@ NUGET 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.Compression.ZipFile (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (< 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) @@ -2339,7 +2386,7 @@ NUGET 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (>= net46) (>= netcoreapp1.1) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (>= net46) (>= netcoreapp1.1) (&& (>= 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) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) 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) @@ -2348,7 +2395,7 @@ NUGET 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO.FileSystem.Watcher (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2381,6 +2428,26 @@ NUGET System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.IO.Pipes (4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< net46) (>= netstandard1.3) + runtime.native.System (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Buffers (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.IO (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Net.Primitives (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Net.Sockets (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Reflection (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Runtime (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Runtime.Extensions (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Runtime.Handles (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Security.Principal (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Text.Encoding (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Threading (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Threading.Overlapped (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) + System.Threading.Tasks (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) System.IO.UnmanagedMemoryStream (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) System.Buffers (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2391,13 +2458,13 @@ NUGET System.Runtime.InteropServices (>= 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.Linq (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) + System.Linq (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) + System.Linq.Expressions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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) @@ -2435,7 +2502,11 @@ NUGET System.Reflection.Extensions (>= 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.Net.Http (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + System.Memory (4.5.2) - restriction: || (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (>= uap10.1) + System.Buffers (>= 4.4) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Numerics.Vectors (>= 4.4) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (>= net461) + System.Runtime.CompilerServices.Unsafe (>= 4.5.2) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Net.Http (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) 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) 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) @@ -2462,7 +2533,7 @@ NUGET 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.NameResolution (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) + System.Net.NameResolution (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) runtime.native.System (>= 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)) (&& (< monoandroid) (< netstandard1.3)) @@ -2477,7 +2548,7 @@ NUGET System.Security.Principal.Windows (>= 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)) (&& (< monoandroid) (< netstandard1.3)) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Net.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.6) (< win8)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + System.Net.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) 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) @@ -2496,7 +2567,7 @@ NUGET 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.Threading (>= 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.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Net.Security (4.3.1) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) + System.Net.Security (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2521,11 +2592,12 @@ NUGET System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.6)) (>= net46) System.Security.Principal (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + System.Security.Principal.Windows (>= 4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) System.Threading.ThreadPool (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Net.Sockets (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Sockets (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (< 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) @@ -2537,9 +2609,8 @@ NUGET 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.Numerics.Vectors (4.4) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) - NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.0) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Numerics.Vectors (4.4) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (< net451) (>= net461) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= uap10.1)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netstandard2.0) (>= uap10.1)) + System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< 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) @@ -2571,78 +2642,79 @@ NUGET System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) (>= net46) System.Xml.XmlSerializer (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net451+win81+wpa81) (< win8)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netstandard1.5)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net451+win81+wpa81)) (&& (< netstandard1.2) (>= uap10.0) (< win8)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.5) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios)) (&& (< monoandroid) (< net451) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< net451) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net451) (< netstandard1.5) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) (&& (>= uap10.1) (< win8) (< wpa81)) 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.DispatchProxy (4.4) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netstandard2.0)) + NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netstandard2.0)) 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) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (>= netcoreapp1.0) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + System.Reflection.Emit.ILGeneration (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) 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) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp1.0) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + System.Reflection.Emit.Lightweight (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (&& (< net451) (>= netstandard2.0)) (>= netcoreapp1.0) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) 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: || (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.2) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net45) (< portable-net451+win81+wpa81)) (&& (< net20) (>= net451) (< netstandard1.1)) (&& (< net20) (>= net451) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.1)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (< netstandard1.1) (< win8) (>= wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) + System.Reflection.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (>= net45) (< netstandard1.1) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.1)) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< netstandard1.1) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) 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.Metadata (1.5) - NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (>= netstandard1.1) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections.Immutable (>= 1.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netstandard1.1) (< netstandard2.0)) (&& (< netstandard1.1) (>= portable-net45+win8)) (&& (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netcoreapp1.0) (&& (< netstandard1.2) (>= uap10.0) (< win8)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Immutable (>= 1.4) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (>= netstandard1.1) (< netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8)) (>= monotouch) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= netcoreapp1.0) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) 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) (< net20) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net45) (>= net46)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) - 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.Reflection.TypeExtensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46)) (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (&& (< net451) (>= netstandard2.0)) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< 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) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) System.Resources.Reader (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.2) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net45) (< portable-net451+win81+wpa81)) (&& (< net20) (>= net451) (< netstandard1.1)) (&& (< net20) (>= net451) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (< netstandard1.1) (< win8) (>= wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.5) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< net451) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net451) (< netstandard1.5) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + System.Runtime (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.5) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< net451) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net451) (< netstandard1.5) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) (&& (>= uap10.1) (< win8) (< wpa81)) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) + System.Runtime.CompilerServices.Unsafe (4.5.2) - restriction: || (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios)) (&& (< net451) (>= net461) (>= netstandard2.0)) (&& (< net451) (>= net461) (< netstandard2.0)) (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) + System.Runtime.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) (&& (>= uap10.1) (< win8) (< wpa81)) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (< 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net45) (< portable-net451+win81+wpa81)) (&& (< net20) (>= net451) (< netstandard1.3)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= net46) (>= netcoreapp1.1) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net451) (>= netstandard1.3) (< netstandard2.0)) (>= net46) (>= netcoreapp1.1) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (< 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.3)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net45) (< portable-net451+win81+wpa81)) (&& (< net20) (>= net451) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (>= net46)) (>= netcoreapp1.0) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.3) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.3)) (&& (>= net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (>= net46)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (>= netcoreapp1.0) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net451+win81+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)) @@ -2654,7 +2726,7 @@ NUGET System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (4.3) - restriction: || (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) + System.Runtime.Numerics (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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) @@ -2669,13 +2741,13 @@ NUGET 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.Private.DataContractSerialization (>= 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.Serialization.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< net20) (>= net46) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) (>= netcoreapp1.0) + System.Runtime.Serialization.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< net20) (>= net46) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) (>= netcoreapp1.0) 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.Security.AccessControl (4.4) - restriction: || (&& (>= monoandroid) (>= net46)) (&& (>= monoandroid) (>= netcoreapp1.1)) (&& (>= monotouch) (>= net46)) (&& (>= monotouch) (>= netcoreapp1.1)) (&& (>= net46) (>= xamarinios)) (&& (>= net46) (>= xamarinmac)) (&& (>= net46) (>= xamarintvos)) (&& (>= net46) (>= xamarinwatchos)) (>= net461) (&& (>= netcoreapp1.1) (>= netstandard2.0)) (&& (>= netcoreapp1.1) (>= xamarinios)) (&& (>= netcoreapp1.1) (>= xamarinmac)) (&& (>= netcoreapp1.1) (>= xamarintvos)) (&& (>= netcoreapp1.1) (>= xamarinwatchos)) (>= netcoreapp2.0) + System.Security.AccessControl (4.5) - restriction: || (&& (>= monotouch) (>= netstandard2.0)) (&& (< net451) (>= net461) (>= netstandard2.0)) (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Claims (4.3) - restriction: || (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.6)) + System.Security.Principal.Windows (>= 4.5) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Claims (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (>= net46) (< netstandard2.0)) (&& (>= netcoreapp2.0) (< netstandard2.0)) System.Collections (>= 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) @@ -2683,7 +2755,7 @@ NUGET 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.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Algorithms (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< 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) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -2699,16 +2771,16 @@ NUGET 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: || (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) - 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.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< 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) (< 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) (< 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) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< 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) (< 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) (< 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) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< 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) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) System.Security.Cryptography.Csp (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.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) @@ -2723,7 +2795,7 @@ NUGET 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.3) (< netstandard1.6) (< win81) (< wpa81)) (&& (< net451) (>= net463) (>= netstandard1.6) (< netstandard2.0)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< 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) @@ -2736,7 +2808,7 @@ NUGET 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.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) + System.Security.Cryptography.OpenSsl (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: || (>= monoandroid) (>= net463) (>= netstandard1.6) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net463) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) @@ -2750,7 +2822,7 @@ NUGET System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net463) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.3) (< netstandard1.6) (< win81) (< wpa81)) (&& (< net451) (>= net46) (< netstandard1.4)) (&& (< net451) (>= net463) (>= netstandard1.6) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< 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) @@ -2758,7 +2830,7 @@ NUGET 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) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.X509Certificates (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.3) (< netstandard1.6) (< win81) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< 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) @@ -2784,43 +2856,59 @@ NUGET 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.Security.Principal (4.3) - restriction: || (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.6)) + System.Security.Principal (4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Security.Principal.Windows (4.4) - restriction: || (&& (>= monoandroid) (>= net46)) (&& (>= monotouch) (>= net46)) (&& (>= net46) (>= xamarinios)) (&& (>= net46) (>= xamarinmac)) (&& (>= net46) (>= xamarintvos)) (&& (>= net46) (>= xamarinwatchos)) (>= net461) (>= netcoreapp1.1) + System.Security.Principal.Windows (4.5.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net451) (>= netstandard1.3) (< netstandard1.6) (< win81) (< wpa81)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net451) (>= net461) (>= netstandard2.0)) (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Collections (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Reflection (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Runtime (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Runtime.Extensions (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Runtime.Handles (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Security.Claims (>= 4.3) - restriction: || (&& (>= net46) (< net461) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) + System.Security.Principal (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Text.Encoding (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Threading (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) + System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.6) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) 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.CodePages (4.4) - restriction: >= net46 - System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Text.Encoding.CodePages (4.5.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (>= netstandard2.0) (< xamarinios)) (>= net46) (>= netcoreapp2.0) + Microsoft.NETCore.Platforms (>= 2.1.2) - restriction: >= netcoreapp2.0 + NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.CompilerServices.Unsafe (>= 4.5.2) - restriction: || (&& (< net46) (>= netstandard2.0) (< xamarinios)) (>= net461) (>= netcoreapp2.0) + System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= 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) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) 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: || (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Text.RegularExpressions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net451) (>= net46) (< netstandard2.0)) (&& (>= net46) (< 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) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.2) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= net45) (< portable-net451+win81+wpa81)) (&& (< net20) (>= net451) (< netstandard1.1)) (&& (< net20) (>= net451) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard1.3)) (&& (< net20) (>= net462) (< netstandard2.0)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (< netstandard1.1) (< win8) (>= wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) + System.Threading (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) (&& (>= uap10.1) (< win8) (< 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 (>= 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.Overlapped (4.3) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) + System.Threading.Overlapped (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) System.Runtime (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) System.Runtime.Handles (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard1.6) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) + System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net451) (>= netstandard1.2) (< netstandard1.3) (< win81) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= netcoreapp1.1) (< netstandard1.3)) (&& (>= netcoreapp1.1) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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.Dataflow (4.8) - restriction: && (>= netcoreapp1.1) (< netcoreapp2.0) NETStandard.Library (>= 1.6.1) - restriction: || (&& (>= netstandard1.0) (< netstandard1.1)) (&& (>= netstandard1.1) (< netstandard2.0) (< xamarinmac)) System.Dynamic.Runtime (>= 4.3) - restriction: || (&& (>= netstandard1.0) (< netstandard1.1)) (&& (>= netstandard1.1) (< netstandard2.0) (< xamarinmac)) - System.Threading.Tasks.Extensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Threading.Tasks.Extensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< 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) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (&& (>= 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) @@ -2833,18 +2921,18 @@ NUGET 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.Threading.Thread (4.3) - restriction: || (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (>= netstandard1.6) + System.Threading.Thread (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (>= netstandard1.6) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: || (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (>= netstandard1.6) + System.Threading.ThreadPool (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.3) (< netstandard2.0) (< win81) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netcoreapp2.0)) (>= netstandard1.6) 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.Threading.Timer (4.3) - restriction: || (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< wpa81)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) + System.Threading.Timer (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard1.6) 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.ValueTuple (4.4) - restriction: || (>= net46) (>= netcoreapp1.1) - NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.0) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Xml.ReaderWriter (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.2) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.ReaderWriter (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< 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.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< 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: || (&& (< 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) @@ -2860,7 +2948,7 @@ NUGET 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: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net20) (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Xml.XDocument (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (>= net46) (>= netcoreapp1.0) (&& (>= netstandard1.3) (< 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) @@ -2944,3 +3032,4 @@ NUGET xunit.runner.console (2.2) xunit.runner.visualstudio (2.3.1) Microsoft.NET.Test.Sdk (>= 15.0) - restriction: >= netcoreapp1.0 + Zlib.Portable (1.11) - restriction: || (&& (< net40) (>= portable-net45+win8)) (&& (< net40) (< portable-net45+win8) (>= portable-net45+win8+wp8+wpa81)) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references index c09767f1c..f7ff43317 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references @@ -1,3 +1,4 @@ +group Test BenchmarkDotNet Dapper FSharp.Data From bc0065011a8dade974a2c034a0baed838d3fd06e Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Thu, 24 Jan 2019 17:41:56 -0200 Subject: [PATCH 12/32] Creating separated group for sql benchmarks --- paket.dependencies | 13 +- paket.lock | 561 ++++++++++++++++++ .../paket.references | 2 +- 3 files changed, 574 insertions(+), 2 deletions(-) diff --git a/paket.dependencies b/paket.dependencies index f617a95bf..d4bcdb63c 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -23,6 +23,7 @@ group Build group Test source https://nuget.org/api/v2 + nuget Newtonsoft.Json nuget FSharp.Core nuget BenchmarkDotNet @@ -34,4 +35,14 @@ group Test nuget Microsoft.NET.Test.Sdk nuget System.Data.SqlClient nuget FSharp.Data - nuget Dapper \ No newline at end of file + nuget Dapper + +group BenchmarksSql + source https://nuget.org/api/v2 + framework: netcoreapp2.2 + + nuget BenchmarkDotNet + nuget Dapper + nuget FSharp.Data + nuget System.Data.SqlClient + nuget FSharp.Core \ No newline at end of file diff --git a/paket.lock b/paket.lock index 5a30a8fbe..4309a8654 100644 --- a/paket.lock +++ b/paket.lock @@ -1806,6 +1806,567 @@ NUGET NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< win8) (< wpa81)) Newtonsoft.Json (>= 10.0.2) - restriction: || (>= net45) (&& (>= netstandard1.0) (< netstandard1.3) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (>= netstandard1.3) (< win8)) (>= wp8) (>= wpa81) +GROUP BenchmarksSql +RESTRICTION: == netcoreapp2.2 +NUGET + remote: https://www.nuget.org/api/v2 + BenchmarkDotNet (0.11.3) + CommandLineParser (>= 2.3) + Microsoft.CodeAnalysis.CSharp (>= 2.9) + Microsoft.DotNet.PlatformAbstractions (>= 2.1) + Microsoft.Win32.Registry (>= 4.5) + System.Collections.Immutable (>= 1.5) + System.Diagnostics.FileVersionInfo (>= 4.3) + System.Management (>= 4.5) + System.Reflection.Emit.Lightweight (>= 4.3) + System.Reflection.Metadata (>= 1.6) + System.Runtime.InteropServices.RuntimeInformation (>= 4.3) + System.Threading.Tasks.Extensions (>= 4.5.1) + System.ValueTuple (>= 4.4) + System.Xml.XmlSerializer (>= 4.3) + System.Xml.XPath.XmlDocument (>= 4.3) + CommandLineParser (2.4.3) + Dapper (1.50.5) + System.Data.SqlClient (>= 4.4) + System.Reflection.Emit.Lightweight (>= 4.3) + System.Reflection.TypeExtensions (>= 4.4) + FSharp.Core (4.6) + FSharp.Data (3.0) + FSharp.Core (>= 4.3.4) + Microsoft.CodeAnalysis.Analyzers (2.6.3) + Microsoft.CodeAnalysis.Common (2.10) + Microsoft.CodeAnalysis.Analyzers (>= 2.6.1) + System.AppContext (>= 4.3) + System.Collections (>= 4.3) + System.Collections.Concurrent (>= 4.3) + System.Collections.Immutable (>= 1.5) + System.Console (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.FileVersionInfo (>= 4.3) + System.Diagnostics.StackTrace (>= 4.3) + System.Diagnostics.Tools (>= 4.3) + System.Dynamic.Runtime (>= 4.3) + System.Globalization (>= 4.3) + System.IO.Compression (>= 4.3) + System.IO.FileSystem (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Linq (>= 4.3) + System.Linq.Expressions (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Metadata (>= 1.6) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Runtime.Numerics (>= 4.3) + System.Security.Cryptography.Algorithms (>= 4.3) + System.Security.Cryptography.Encoding (>= 4.3) + System.Security.Cryptography.X509Certificates (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Text.Encoding.CodePages (>= 4.3) + System.Text.Encoding.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Threading.Tasks.Extensions (>= 4.3) + System.Threading.Tasks.Parallel (>= 4.3) + System.Threading.Thread (>= 4.3) + System.ValueTuple (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XDocument (>= 4.3) + System.Xml.XmlDocument (>= 4.3) + System.Xml.XPath.XDocument (>= 4.3) + Microsoft.CodeAnalysis.CSharp (2.10) + Microsoft.CodeAnalysis.Common (2.10) + Microsoft.DotNet.PlatformAbstractions (2.1) + System.AppContext (>= 4.1) + System.Collections (>= 4.0.11) + System.IO (>= 4.1) + System.IO.FileSystem (>= 4.0.1) + System.Reflection.TypeExtensions (>= 4.1) + System.Runtime.Extensions (>= 4.1) + System.Runtime.InteropServices (>= 4.1) + System.Runtime.InteropServices.RuntimeInformation (>= 4.0) + Microsoft.NETCore.Platforms (2.2) + Microsoft.NETCore.Targets (2.1) + Microsoft.Win32.Registry (4.5) + System.Security.AccessControl (>= 4.5) + System.Security.Principal.Windows (>= 4.5) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.native.System (4.3.1) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Data.SqlClient.sni (4.5) + runtime.win-arm64.runtime.native.System.Data.SqlClient.sni (>= 4.4) + runtime.win-x64.runtime.native.System.Data.SqlClient.sni (>= 4.4) + runtime.win-x86.runtime.native.System.Data.SqlClient.sni (>= 4.4) + runtime.native.System.IO.Compression (4.3.2) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Net.Http (4.3.1) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Security.Cryptography.Apple (4.3.1) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) + runtime.win-arm64.runtime.native.System.Data.SqlClient.sni (4.4) + runtime.win-x64.runtime.native.System.Data.SqlClient.sni (4.4) + runtime.win-x86.runtime.native.System.Data.SqlClient.sni (4.4) + System.AppContext (4.3) + System.Runtime (>= 4.3) + System.Buffers (4.5) + System.CodeDom (4.5) + System.Collections (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Collections.Concurrent (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.Tracing (>= 4.3) + System.Globalization (>= 4.3) + System.Reflection (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Collections.Immutable (1.5) + System.Console (4.3.1) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1.2) + System.IO (>= 4.3) + System.Runtime (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Data.SqlClient (4.6) + Microsoft.Win32.Registry (>= 4.5) + runtime.native.System.Data.SqlClient.sni (>= 4.5) + System.Security.Principal.Windows (>= 4.5) + System.Text.Encoding.CodePages (>= 4.5) + System.Diagnostics.Debug (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Diagnostics.FileVersionInfo (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.IO.FileSystem (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Reflection.Metadata (>= 1.4.1) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Diagnostics.StackTrace (4.3) + System.IO.FileSystem (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Metadata (>= 1.4.1) + System.Runtime (>= 4.3) + System.Diagnostics.Tools (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Diagnostics.Tracing (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Dynamic.Runtime (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Linq (>= 4.3) + System.Linq.Expressions (>= 4.3) + System.ObjectModel (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Reflection.TypeExtensions (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Globalization (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Globalization.Calendars (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Globalization (>= 4.3) + System.Runtime (>= 4.3) + System.IO (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.IO.Compression (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + runtime.native.System (>= 4.3) + runtime.native.System.IO.Compression (>= 4.3) + System.Buffers (>= 4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.IO.FileSystem (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.IO (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.IO.FileSystem.Primitives (4.3) + System.Runtime (>= 4.3) + System.Linq (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Linq.Expressions (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Linq (>= 4.3) + System.ObjectModel (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Emit.Lightweight (>= 4.3) + System.Reflection.Extensions (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Reflection.TypeExtensions (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Management (4.5) + Microsoft.NETCore.Platforms (>= 2.0) + Microsoft.Win32.Registry (>= 4.5) + System.CodeDom (>= 4.5) + System.ObjectModel (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Threading (>= 4.3) + System.Reflection (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.IO (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Emit (4.3) + System.IO (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Emit.ILGeneration (4.3) + System.Reflection (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Emit.Lightweight (4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Extensions (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Reflection (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Metadata (1.6) + System.Reflection.Primitives (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Reflection.TypeExtensions (4.5.1) + System.Resources.ResourceManager (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Globalization (>= 4.3) + System.Reflection (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime.CompilerServices.Unsafe (4.5.2) + System.Runtime.Extensions (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Runtime.Handles (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Runtime.InteropServices (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Reflection (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices.RuntimeInformation (4.3) + runtime.native.System (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Extensions (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Threading (>= 4.3) + System.Runtime.Numerics (4.3) + System.Globalization (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Security.AccessControl (4.5) + Microsoft.NETCore.Platforms (>= 2.0) + System.Security.Principal.Windows (>= 4.5) + System.Security.Cryptography.Algorithms (4.3.1) + Microsoft.NETCore.Platforms (>= 1.1) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + System.Collections (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Runtime.Numerics (>= 4.3) + System.Security.Cryptography.Encoding (>= 4.3) + System.Security.Cryptography.Primitives (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Security.Cryptography.Cng (4.5) + System.Security.Cryptography.Csp (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + System.IO (>= 4.3) + System.Reflection (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Security.Cryptography.Algorithms (>= 4.3) + System.Security.Cryptography.Encoding (>= 4.3) + System.Security.Cryptography.Primitives (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Security.Cryptography.Encoding (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) + System.Collections (>= 4.3) + System.Collections.Concurrent (>= 4.3) + System.Linq (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Security.Cryptography.Primitives (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Security.Cryptography.OpenSsl (4.5) + System.Security.Cryptography.Primitives (4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Security.Cryptography.X509Certificates (4.3.2) + Microsoft.NETCore.Platforms (>= 1.1) + runtime.native.System (>= 4.3) + runtime.native.System.Net.Http (>= 4.3) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.Globalization.Calendars (>= 4.3) + System.IO (>= 4.3) + System.IO.FileSystem (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Runtime.Numerics (>= 4.3) + System.Security.Cryptography.Algorithms (>= 4.3) + System.Security.Cryptography.Cng (>= 4.3) + System.Security.Cryptography.Csp (>= 4.3) + System.Security.Cryptography.Encoding (>= 4.3) + System.Security.Cryptography.OpenSsl (>= 4.3) + System.Security.Cryptography.Primitives (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Security.Principal.Windows (4.5.1) + Microsoft.NETCore.Platforms (>= 2.0) + System.Text.Encoding (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Text.Encoding.CodePages (4.5.1) + Microsoft.NETCore.Platforms (>= 2.1.2) + System.Runtime.CompilerServices.Unsafe (>= 4.5.2) + System.Text.Encoding.Extensions (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Text.RegularExpressions (4.3) + System.Runtime (>= 4.3) + System.Threading (4.3) + System.Runtime (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Threading.Tasks (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Threading.Tasks.Extensions (4.5.2) + System.Threading.Tasks.Parallel (4.3) + System.Collections.Concurrent (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.Tracing (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Threading.Thread (4.3) + System.Runtime (>= 4.3) + System.ValueTuple (4.5) + System.Xml.ReaderWriter (4.3.1) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.IO.FileSystem (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Text.Encoding.Extensions (>= 4.3) + System.Text.RegularExpressions (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Threading.Tasks.Extensions (>= 4.3) + System.Xml.XDocument (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.Tools (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Reflection (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XmlDocument (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XmlSerializer (4.3) + System.Collections (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Linq (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Extensions (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Reflection.TypeExtensions (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Text.RegularExpressions (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XmlDocument (>= 4.3) + System.Xml.XPath (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XPath.XDocument (4.3) + System.Diagnostics.Debug (>= 4.3) + System.Linq (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XDocument (>= 4.3) + System.Xml.XPath (>= 4.3) + System.Xml.XPath.XmlDocument (4.3) + System.Collections (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XmlDocument (>= 4.3) + System.Xml.XPath (>= 4.3) + GROUP Build NUGET remote: https://www.nuget.org/api/v2 diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references index f7ff43317..ab827486e 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/paket.references @@ -1,4 +1,4 @@ -group Test +group BenchmarksSql BenchmarkDotNet Dapper FSharp.Data From 6e9655f4cca07f1686907c528e57e76a2b99209e Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Thu, 24 Jan 2019 18:04:06 -0200 Subject: [PATCH 13/32] Collecting benchmarks for updated tests --- ...marks.Sql.QueryBenchmarks-report-github.md | 36 ++++++++++++------- ....Benchmarks.Sql.QueryBenchmarks-report.csv | 32 +++++++++++------ ...Benchmarks.Sql.QueryBenchmarks-report.html | 34 ++++++++++++------ 3 files changed, 69 insertions(+), 33 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md index f24598b4a..537df7840 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report-github.md @@ -9,15 +9,27 @@ Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical co Job=Core Runtime=Core ``` -| Method | Mean | Error | StdDev | Median | Min | Max | Op/s | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op | -|---------------------------------- |----------:|----------:|----------:|-----------:|-----------:|----------:|-------:|------------:|------------:|------------:|--------------------:| -| SingleMovie | 2.046 ms | 0.6497 ms | 1.9157 ms | 0.9003 ms | 0.5736 ms | 6.357 ms | 488.76 | - | - | - | 24.11 KB | -| SingleMovieSingleUserRating | 1.511 ms | 0.0719 ms | 0.1979 ms | 1.4612 ms | 1.1930 ms | 2.166 ms | 661.78 | - | - | - | 41.68 KB | -| MovieTagsDirect | 32.058 ms | 0.7612 ms | 2.1346 ms | 31.5728 ms | 28.3333 ms | 37.816 ms | 31.19 | 1000.0000 | - | - | 48.18 KB | -| MovieTagsStreamed | 67.306 ms | 1.3853 ms | 4.0410 ms | 66.6163 ms | 59.7592 ms | 76.686 ms | 14.86 | 2000.0000 | 1000.0000 | - | 83.96 KB | -| MovieTagsDeferred | 44.227 ms | 0.8798 ms | 2.5243 ms | 44.1868 ms | 38.9480 ms | 50.599 ms | 22.61 | 1000.0000 | - | - | 59.1 KB | -| MovieTagsDirectAndLinksDirect | 31.890 ms | 0.6293 ms | 0.9798 ms | 31.9148 ms | 29.7126 ms | 33.809 ms | 31.36 | 1000.0000 | - | - | 60.31 KB | -| MovieTagsStreamedAndLinksDirect | 67.420 ms | 1.4543 ms | 2.6957 ms | 66.7677 ms | 63.1727 ms | 74.908 ms | 14.83 | 2000.0000 | 1000.0000 | - | 92.8 KB | -| MovieTagsStreamedAndLinksStreamed | 66.878 ms | 1.3958 ms | 2.8512 ms | 66.7963 ms | 61.6435 ms | 74.211 ms | 14.95 | 2000.0000 | 1000.0000 | - | 94.13 KB | -| MovieTagsDeferredAndLinksDeferred | 45.175 ms | 0.9025 ms | 2.3458 ms | 45.2692 ms | 40.5602 ms | 51.800 ms | 22.14 | 1000.0000 | - | - | 72.16 KB | -| MovieTagsStreamedAndLinksDeferred | 68.978 ms | 1.5421 ms | 4.3747 ms | 67.9400 ms | 62.0436 ms | 80.226 ms | 14.50 | 2000.0000 | 1000.0000 | - | 93.71 KB | +| Method | Mean | Error | StdDev | Median | Min | Max | Op/s | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op | +|------------------------------------- |---------------:|--------------:|-------------:|---------------:|---------------:|---------------:|-----------:|------------:|------------:|------------:|--------------------:| +| SingleMovie | 772.3 us | 50.35 us | 147.7 us | 741.5 us | 550.2 us | 1,169.1 us | 1,294.8793 | - | - | - | 35.95 KB | +| SingleMovieSingleUserRating | 1,230.1 us | 83.46 us | 243.4 us | 1,193.2 us | 828.8 us | 1,979.7 us | 812.9333 | - | - | - | 54.49 KB | +| MovieTagsDirect | 32,986.7 us | 841.49 us | 2,331.8 us | 32,676.7 us | 29,750.1 us | 39,559.3 us | 30.3152 | 1000.0000 | - | - | 61.64 KB | +| MovieTagsStreamed | 76,321.5 us | 1,494.60 us | 2,843.6 us | 76,067.7 us | 70,564.0 us | 83,200.6 us | 13.1025 | 2000.0000 | 1000.0000 | - | 94.38 KB | +| MovieTagsDeferred | 51,573.0 us | 1,519.97 us | 4,237.1 us | 50,377.5 us | 46,435.3 us | 64,957.3 us | 19.3900 | 1000.0000 | - | - | 72.82 KB | +| MovieTagsDirectAndRatingsDirect | 1,576,312.4 us | 41,914.58 us | 121,601.8 us | 1,560,307.2 us | 1,374,516.9 us | 1,841,707.4 us | 0.6344 | 76000.0000 | 19000.0000 | 2000.0000 | 78.51 KB | +| MovieTagsStreamedAndRatingsDirect | 1,456,720.1 us | 30,036.33 us | 63,356.8 us | 1,432,611.9 us | 1,392,116.0 us | 1,638,847.4 us | 0.6865 | 76000.0000 | 19000.0000 | 2000.0000 | 111.24 KB | +| MovieTagsStreamedAndRatingsStreamed | 6,256,953.5 us | 127,947.49 us | 170,806.2 us | 6,232,070.5 us | 6,034,280.9 us | 6,718,892.2 us | 0.1598 | 145000.0000 | 39000.0000 | 3000.0000 | 2679.67 KB | +| MovieTagsDeferredAndRatingsDeferred | 1,416,238.5 us | 22,749.50 us | 18,996.9 us | 1,411,073.9 us | 1,387,843.1 us | 1,447,652.8 us | 0.7061 | 76000.0000 | 19000.0000 | 2000.0000 | 90.63 KB | +| MovieTagsStreamedAndRatingsDeferred | 1,412,978.6 us | 27,038.15 us | 27,766.2 us | 1,401,743.7 us | 1,376,511.3 us | 1,484,650.5 us | 0.7077 | 77000.0000 | 19000.0000 | 2000.0000 | 112.19 KB | +| AllMoviesDirect | 1,621,179.6 us | 21,242.05 us | 17,738.1 us | 1,625,027.2 us | 1,589,157.4 us | 1,646,869.5 us | 0.6168 | 86000.0000 | 23000.0000 | 2000.0000 | 503833.23 KB | +| AllMoviesDeferred | 1,646,922.4 us | 39,815.85 us | 42,602.5 us | 1,632,547.0 us | 1,601,432.9 us | 1,761,418.1 us | 0.6072 | 86000.0000 | 23000.0000 | 2000.0000 | 55.5 KB | +| AllMoviesStreamed | 5,792,864.4 us | 112,892.79 us | 150,708.6 us | 5,823,448.1 us | 5,580,648.0 us | 6,067,137.9 us | 0.1726 | 144000.0000 | 38000.0000 | 3000.0000 | 1534.06 KB | +| FiftyDirectMoviesWithDirectLinks | 16,175.2 us | 596.41 us | 1,711.2 us | 16,072.6 us | 13,414.7 us | 20,382.1 us | 61.8231 | - | - | - | 604.24 KB | +| FiftyDirectMoviesWithDeferredLinks | 22,765.3 us | 627.71 us | 1,831.0 us | 22,465.2 us | 18,939.1 us | 27,427.4 us | 43.9266 | 1000.0000 | - | - | 616.83 KB | +| FiftyDirectMoviesWithStreamedLinks | 24,206.2 us | 695.84 us | 2,018.7 us | 23,789.2 us | 19,972.2 us | 29,594.4 us | 41.3118 | 1000.0000 | - | - | 617.24 KB | +| FiftyDeferredMoviesWithDirectLinks | 17,201.2 us | 728.66 us | 2,114.0 us | 16,628.3 us | 13,024.5 us | 23,003.0 us | 58.1356 | - | - | - | 71.86 KB | +| FiftyStreamedMoviesWithDirectLinks | 8,426.4 us | 369.95 us | 1,006.5 us | 8,339.3 us | 6,760.1 us | 11,496.2 us | 118.6749 | - | - | - | 73.69 KB | +| FiftyDeferredMoviesWithDeferredLinks | 21,827.3 us | 1,433.23 us | 3,899.2 us | 21,149.5 us | 16,028.2 us | 33,835.5 us | 45.8142 | 1000.0000 | - | - | 73.99 KB | +| FiftyDeferredMoviesWithStreamedLinks | 21,660.2 us | 771.05 us | 2,224.6 us | 21,437.2 us | 17,477.4 us | 26,723.4 us | 46.1676 | 1000.0000 | - | - | 74.41 KB | +| FiftyStreamedMoviesWithDeferredLinks | 18,120.6 us | 530.92 us | 1,497.5 us | 17,916.1 us | 15,735.2 us | 22,165.0 us | 55.1857 | 1000.0000 | - | - | 75.81 KB | +| FiftyStreamedMoviesWithStreamedLinks | 19,399.1 us | 769.43 us | 2,232.2 us | 18,988.9 us | 15,263.2 us | 26,536.9 us | 51.5487 | 1000.0000 | - | - | 76.23 KB | diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv index 6dc28ac6e..d8995c779 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.csv @@ -1,11 +1,23 @@ Method;Job;AnalyzeLaunchVariance;EvaluateOverhead;MaxAbsoluteError;MaxRelativeError;MinInvokeCount;MinIterationTime;OutlierMode;Affinity;EnvironmentVariables;Jit;Platform;Runtime;AllowVeryLargeObjects;Concurrent;CpuGroups;Force;HeapAffinitizeMask;HeapCount;NoAffinitize;RetainVm;Server;Arguments;BuildConfiguration;Clock;EngineFactory;NuGetReferences;Toolchain;IsMutator;InvocationCount;IterationCount;IterationTime;LaunchCount;MaxIterationCount;MaxWarmupIterationCount;MinIterationCount;MinWarmupIterationCount;RunStrategy;UnrollFactor;WarmupCount;Mean;Error;StdDev;Median;Min;Max;Op/s;Gen 0/1k Op;Gen 1/1k Op;Gen 2/1k Op;Allocated Memory/Op -SingleMovie;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;2.046 ms;0.6497 ms;1.9157 ms;0.9003 ms;0.5736 ms;6.357 ms;488.76;-;-;-;24.11 KB -SingleMovieSingleUserRating;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;1.511 ms;0.0719 ms;0.1979 ms;1.4612 ms;1.1930 ms;2.166 ms;661.78;-;-;-;41.68 KB -MovieTagsDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;32.058 ms;0.7612 ms;2.1346 ms;31.5728 ms;28.3333 ms;37.816 ms;31.19;1000.0000;-;-;48.18 KB -MovieTagsStreamed;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;67.306 ms;1.3853 ms;4.0410 ms;66.6163 ms;59.7592 ms;76.686 ms;14.86;2000.0000;1000.0000;-;83.96 KB -MovieTagsDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;44.227 ms;0.8798 ms;2.5243 ms;44.1868 ms;38.9480 ms;50.599 ms;22.61;1000.0000;-;-;59.1 KB -MovieTagsDirectAndLinksDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;31.890 ms;0.6293 ms;0.9798 ms;31.9148 ms;29.7126 ms;33.809 ms;31.36;1000.0000;-;-;60.31 KB -MovieTagsStreamedAndLinksDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;67.420 ms;1.4543 ms;2.6957 ms;66.7677 ms;63.1727 ms;74.908 ms;14.83;2000.0000;1000.0000;-;92.8 KB -MovieTagsStreamedAndLinksStreamed;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;66.878 ms;1.3958 ms;2.8512 ms;66.7963 ms;61.6435 ms;74.211 ms;14.95;2000.0000;1000.0000;-;94.13 KB -MovieTagsDeferredAndLinksDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;45.175 ms;0.9025 ms;2.3458 ms;45.2692 ms;40.5602 ms;51.800 ms;22.14;1000.0000;-;-;72.16 KB -MovieTagsStreamedAndLinksDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;68.978 ms;1.5421 ms;4.3747 ms;67.9400 ms;62.0436 ms;80.226 ms;14.50;2000.0000;1000.0000;-;93.71 KB +SingleMovie;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;772.3 us;50.35 us;147.7 us;741.5 us;550.2 us;"1,169.1 us";"1,294.8793";-;-;-;35.95 KB +SingleMovieSingleUserRating;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,230.1 us";83.46 us;243.4 us;"1,193.2 us";828.8 us;"1,979.7 us";812.9333;-;-;-;54.49 KB +MovieTagsDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"32,986.7 us";841.49 us;"2,331.8 us";"32,676.7 us";"29,750.1 us";"39,559.3 us";30.3152;1000.0000;-;-;61.64 KB +MovieTagsStreamed;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"76,321.5 us";"1,494.60 us";"2,843.6 us";"76,067.7 us";"70,564.0 us";"83,200.6 us";13.1025;2000.0000;1000.0000;-;94.38 KB +MovieTagsDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"51,573.0 us";"1,519.97 us";"4,237.1 us";"50,377.5 us";"46,435.3 us";"64,957.3 us";19.3900;1000.0000;-;-;72.82 KB +MovieTagsDirectAndRatingsDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,576,312.4 us";"41,914.58 us";"121,601.8 us";"1,560,307.2 us";"1,374,516.9 us";"1,841,707.4 us";0.6344;76000.0000;19000.0000;2000.0000;78.51 KB +MovieTagsStreamedAndRatingsDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,456,720.1 us";"30,036.33 us";"63,356.8 us";"1,432,611.9 us";"1,392,116.0 us";"1,638,847.4 us";0.6865;76000.0000;19000.0000;2000.0000;111.24 KB +MovieTagsStreamedAndRatingsStreamed;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"6,256,953.5 us";"127,947.49 us";"170,806.2 us";"6,232,070.5 us";"6,034,280.9 us";"6,718,892.2 us";0.1598;145000.0000;39000.0000;3000.0000;2679.67 KB +MovieTagsDeferredAndRatingsDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,416,238.5 us";"22,749.50 us";"18,996.9 us";"1,411,073.9 us";"1,387,843.1 us";"1,447,652.8 us";0.7061;76000.0000;19000.0000;2000.0000;90.63 KB +MovieTagsStreamedAndRatingsDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,412,978.6 us";"27,038.15 us";"27,766.2 us";"1,401,743.7 us";"1,376,511.3 us";"1,484,650.5 us";0.7077;77000.0000;19000.0000;2000.0000;112.19 KB +AllMoviesDirect;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,621,179.6 us";"21,242.05 us";"17,738.1 us";"1,625,027.2 us";"1,589,157.4 us";"1,646,869.5 us";0.6168;86000.0000;23000.0000;2000.0000;503833.23 KB +AllMoviesDeferred;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"1,646,922.4 us";"39,815.85 us";"42,602.5 us";"1,632,547.0 us";"1,601,432.9 us";"1,761,418.1 us";0.6072;86000.0000;23000.0000;2000.0000;55.5 KB +AllMoviesStreamed;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"5,792,864.4 us";"112,892.79 us";"150,708.6 us";"5,823,448.1 us";"5,580,648.0 us";"6,067,137.9 us";0.1726;144000.0000;38000.0000;3000.0000;1534.06 KB +FiftyDirectMoviesWithDirectLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"16,175.2 us";596.41 us;"1,711.2 us";"16,072.6 us";"13,414.7 us";"20,382.1 us";61.8231;-;-;-;604.24 KB +FiftyDirectMoviesWithDeferredLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"22,765.3 us";627.71 us;"1,831.0 us";"22,465.2 us";"18,939.1 us";"27,427.4 us";43.9266;1000.0000;-;-;616.83 KB +FiftyDirectMoviesWithStreamedLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"24,206.2 us";695.84 us;"2,018.7 us";"23,789.2 us";"19,972.2 us";"29,594.4 us";41.3118;1000.0000;-;-;617.24 KB +FiftyDeferredMoviesWithDirectLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"17,201.2 us";728.66 us;"2,114.0 us";"16,628.3 us";"13,024.5 us";"23,003.0 us";58.1356;-;-;-;71.86 KB +FiftyStreamedMoviesWithDirectLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"8,426.4 us";369.95 us;"1,006.5 us";"8,339.3 us";"6,760.1 us";"11,496.2 us";118.6749;-;-;-;73.69 KB +FiftyDeferredMoviesWithDeferredLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"21,827.3 us";"1,433.23 us";"3,899.2 us";"21,149.5 us";"16,028.2 us";"33,835.5 us";45.8142;1000.0000;-;-;73.99 KB +FiftyDeferredMoviesWithStreamedLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"21,660.2 us";771.05 us;"2,224.6 us";"21,437.2 us";"17,477.4 us";"26,723.4 us";46.1676;1000.0000;-;-;74.41 KB +FiftyStreamedMoviesWithDeferredLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"18,120.6 us";530.92 us;"1,497.5 us";"17,916.1 us";"15,735.2 us";"22,165.0 us";55.1857;1000.0000;-;-;75.81 KB +FiftyStreamedMoviesWithStreamedLinks;Core;False;Default;Default;Default;Default;Default;Default;11111111;Empty;RyuJit;X64;Core;False;True;False;True;Default;Default;False;False;False;Default;Default;Default;Default;Default;Default;Default;1;Default;Default;Default;Default;Default;Default;Default;Default;16;Default;"19,399.1 us";769.43 us;"2,232.2 us";"18,988.9 us";"15,263.2 us";"26,536.9 us";51.5487;1000.0000;-;-;76.23 KB diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html index 3e494bdf0..b68242f09 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/BenchmarkDotNet.Artifacts/results/FSharp.Data.GraphQL.Benchmarks.Sql.QueryBenchmarks-report.html @@ -23,18 +23,30 @@ - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +
MethodMeanErrorStdDevMedian MinMaxOp/sGen 0/1k OpGen 1/1k OpGen 2/1k OpAllocated Memory/Op
Method Mean ErrorStdDev Median Min MaxOp/sGen 0/1k OpGen 1/1k OpGen 2/1k OpAllocated Memory/Op
SingleMovie2.046 ms0.6497 ms1.9157 ms0.9003 ms0.5736 ms6.357 ms488.76---24.11 KB
SingleMovieSingleUserRating1.511 ms0.0719 ms0.1979 ms1.4612 ms1.1930 ms2.166 ms661.78---41.68 KB
MovieTagsDirect32.058 ms0.7612 ms2.1346 ms31.5728 ms28.3333 ms37.816 ms31.191000.0000--48.18 KB
MovieTagsStreamed67.306 ms1.3853 ms4.0410 ms66.6163 ms59.7592 ms76.686 ms14.862000.00001000.0000-83.96 KB
MovieTagsDeferred44.227 ms0.8798 ms2.5243 ms44.1868 ms38.9480 ms50.599 ms22.611000.0000--59.1 KB
MovieTagsDirectAndLinksDirect31.890 ms0.6293 ms0.9798 ms31.9148 ms29.7126 ms33.809 ms31.361000.0000--60.31 KB
MovieTagsStreamedAndLinksDirect67.420 ms1.4543 ms2.6957 ms66.7677 ms63.1727 ms74.908 ms14.832000.00001000.0000-92.8 KB
MovieTagsStreamedAndLinksStreamed66.878 ms1.3958 ms2.8512 ms66.7963 ms61.6435 ms74.211 ms14.952000.00001000.0000-94.13 KB
MovieTagsDeferredAndLinksDeferred45.175 ms0.9025 ms2.3458 ms45.2692 ms40.5602 ms51.800 ms22.141000.0000--72.16 KB
MovieTagsStreamedAndLinksDeferred68.978 ms1.5421 ms4.3747 ms67.9400 ms62.0436 ms80.226 ms14.502000.00001000.0000-93.71 KB
SingleMovie772.3 us50.35 us147.7 us741.5 us550.2 us1,169.1 us1,294.8793---35.95 KB
SingleMovieSingleUserRating1,230.1 us83.46 us243.4 us1,193.2 us828.8 us1,979.7 us812.9333---54.49 KB
MovieTagsDirect32,986.7 us841.49 us2,331.8 us32,676.7 us29,750.1 us39,559.3 us30.31521000.0000--61.64 KB
MovieTagsStreamed76,321.5 us1,494.60 us2,843.6 us76,067.7 us70,564.0 us83,200.6 us13.10252000.00001000.0000-94.38 KB
MovieTagsDeferred51,573.0 us1,519.97 us4,237.1 us50,377.5 us46,435.3 us64,957.3 us19.39001000.0000--72.82 KB
MovieTagsDirectAndRatingsDirect1,576,312.4 us41,914.58 us121,601.8 us1,560,307.2 us1,374,516.9 us1,841,707.4 us0.634476000.000019000.00002000.000078.51 KB
MovieTagsStreamedAndRatingsDirect1,456,720.1 us30,036.33 us63,356.8 us1,432,611.9 us1,392,116.0 us1,638,847.4 us0.686576000.000019000.00002000.0000111.24 KB
MovieTagsStreamedAndRatingsStreamed6,256,953.5 us127,947.49 us170,806.2 us6,232,070.5 us6,034,280.9 us6,718,892.2 us0.1598145000.000039000.00003000.00002679.67 KB
MovieTagsDeferredAndRatingsDeferred1,416,238.5 us22,749.50 us18,996.9 us1,411,073.9 us1,387,843.1 us1,447,652.8 us0.706176000.000019000.00002000.000090.63 KB
MovieTagsStreamedAndRatingsDeferred1,412,978.6 us27,038.15 us27,766.2 us1,401,743.7 us1,376,511.3 us1,484,650.5 us0.707777000.000019000.00002000.0000112.19 KB
AllMoviesDirect1,621,179.6 us21,242.05 us17,738.1 us1,625,027.2 us1,589,157.4 us1,646,869.5 us0.616886000.000023000.00002000.0000503833.23 KB
AllMoviesDeferred1,646,922.4 us39,815.85 us42,602.5 us1,632,547.0 us1,601,432.9 us1,761,418.1 us0.607286000.000023000.00002000.000055.5 KB
AllMoviesStreamed5,792,864.4 us112,892.79 us150,708.6 us5,823,448.1 us5,580,648.0 us6,067,137.9 us0.1726144000.000038000.00003000.00001534.06 KB
FiftyDirectMoviesWithDirectLinks16,175.2 us596.41 us1,711.2 us16,072.6 us13,414.7 us20,382.1 us61.8231---604.24 KB
FiftyDirectMoviesWithDeferredLinks22,765.3 us627.71 us1,831.0 us22,465.2 us18,939.1 us27,427.4 us43.92661000.0000--616.83 KB
FiftyDirectMoviesWithStreamedLinks24,206.2 us695.84 us2,018.7 us23,789.2 us19,972.2 us29,594.4 us41.31181000.0000--617.24 KB
FiftyDeferredMoviesWithDirectLinks17,201.2 us728.66 us2,114.0 us16,628.3 us13,024.5 us23,003.0 us58.1356---71.86 KB
FiftyStreamedMoviesWithDirectLinks8,426.4 us369.95 us1,006.5 us8,339.3 us6,760.1 us11,496.2 us118.6749---73.69 KB
FiftyDeferredMoviesWithDeferredLinks21,827.3 us1,433.23 us3,899.2 us21,149.5 us16,028.2 us33,835.5 us45.81421000.0000--73.99 KB
FiftyDeferredMoviesWithStreamedLinks21,660.2 us771.05 us2,224.6 us21,437.2 us17,477.4 us26,723.4 us46.16761000.0000--74.41 KB
FiftyStreamedMoviesWithDeferredLinks18,120.6 us530.92 us1,497.5 us17,916.1 us15,735.2 us22,165.0 us55.18571000.0000--75.81 KB
FiftyStreamedMoviesWithStreamedLinks19,399.1 us769.43 us2,232.2 us18,988.9 us15,263.2 us26,536.9 us51.54871000.0000--76.23 KB
From 192b71d54d17d3417d9bba207b31757f1af1df1c Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 28 Jan 2019 16:57:54 -0200 Subject: [PATCH 14/32] Increasing processing times of items in tests (one processor machines are not reliably passing tests) --- .../ObservableExtensionsTests.fs | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs index 526b4708e..607c8ca30 100644 --- a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs @@ -62,9 +62,9 @@ let delay ms x = async { [] let ``ofAsyncSeq should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 300 2 - yield delay 100 1 - yield delay 200 3 } + yield delay 3000 2 + yield delay 1000 1 + yield delay 2000 3 } let obs = Observable.ofAsyncSeq source use sub = Observer.create obs sub.WaitCompleted() @@ -73,9 +73,9 @@ let ``ofAsyncSeq should call OnComplete and return items in expected order`` () [] let ``ofAsyncValSeq should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 300 2 |> AsyncVal.ofAsync - yield delay 100 1 |> AsyncVal.ofAsync - yield delay 200 3 |> AsyncVal.ofAsync } + yield delay 3000 2 |> AsyncVal.ofAsync + yield delay 1000 1 |> AsyncVal.ofAsync + yield delay 2000 3 |> AsyncVal.ofAsync } let obs = Observable.ofAsyncValSeq source use sub = Observer.create obs sub.WaitCompleted() @@ -84,10 +84,10 @@ let ``ofAsyncValSeq should call OnComplete and return items in expected order`` [] let ``bufferByTiming should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 500 2 - yield delay 100 1 - yield delay 200 3 } - let obs = Observable.ofAsyncSeq source |> Observable.bufferByTiming 300 + yield delay 4000 2 + yield delay 1000 1 + yield delay 2000 3 } + let obs = Observable.ofAsyncSeq source |> Observable.bufferByTiming 3000 use sub = Observer.create obs sub.WaitCompleted() sub.Received |> seqEquals [ [1; 3]; [2] ] @@ -95,9 +95,9 @@ let ``bufferByTiming should call OnComplete and return items in expected order`` [] let ``bufferByElementCount should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 500 2 - yield delay 100 1 - yield delay 200 3 } + yield delay 4000 2 + yield delay 1000 1 + yield delay 2000 3 } let obs = Observable.ofAsyncSeq source |> Observable.bufferByElementCount 2 use sub = Observer.create obs sub.WaitCompleted() @@ -106,11 +106,11 @@ let ``bufferByElementCount should call OnComplete and return items in expected o [] let ``bufferByTimingAndElementCount should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 500 2 - yield delay 50 1 - yield delay 100 3 - yield delay 150 4 } - let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount 300 2 + yield delay 5000 2 + yield delay 500 1 + yield delay 1000 3 + yield delay 1500 4 } + let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount 3000 2 use sub = Observer.create obs sub.WaitCompleted() sub.Received |> seqEquals [ [1; 3]; [4]; [2] ] @@ -142,12 +142,12 @@ let ``choose should cal OnComplete`` () = [] let ``concat should call OnComplete and return items in expected order`` () = let source1 = seq { - yield delay 500 2 - yield delay 100 1 - yield delay 200 3 } + yield delay 5000 2 + yield delay 1000 1 + yield delay 2000 3 } let source2 = seq { - yield delay 400 4 - yield delay 300 5 } + yield delay 4000 4 + yield delay 3000 5 } let source = seq { yield Seq.empty; yield source1; yield source2 } let obs = Observable.ofSeq source @@ -160,12 +160,12 @@ let ``concat should call OnComplete and return items in expected order`` () = [] let ``concat2 should call OnComplete and return items in expected order`` () = let source1 = seq { - yield delay 500 2 - yield delay 100 1 - yield delay 200 3 } + yield delay 5000 2 + yield delay 1000 1 + yield delay 2000 3 } let source2 = seq { - yield delay 400 4 - yield delay 300 5 } + yield delay 4000 4 + yield delay 3000 5 } let obs = Observable.ofAsyncSeq source2 |> Observable.concat2 (Observable.ofAsyncSeq source1) @@ -176,12 +176,12 @@ let ``concat2 should call OnComplete and return items in expected order`` () = [] let ``merge should call OnComplete and return items in expected order`` () = let source1 = seq { - yield delay 500 2 - yield delay 100 1 - yield delay 200 3 } + yield delay 5000 2 + yield delay 1000 1 + yield delay 2000 3 } let source2 = seq { - yield delay 400 4 - yield delay 300 5 } + yield delay 4000 4 + yield delay 3000 5 } let source = seq { yield Seq.empty; yield source1; yield source2 } let obs = Observable.ofSeq source @@ -194,12 +194,12 @@ let ``merge should call OnComplete and return items in expected order`` () = [] let ``merge2 should call OnComplete and return items in expected order`` () = let source1 = seq { - yield delay 500 2 - yield delay 100 1 - yield delay 200 3 } + yield delay 5000 2 + yield delay 1000 1 + yield delay 2000 3 } let source2 = seq { - yield delay 400 4 - yield delay 300 5 } + yield delay 4000 4 + yield delay 3000 5 } let obs = Observable.ofAsyncSeq source2 |> Observable.merge2 (Observable.ofAsyncSeq source1) From 8e661926faaf3c9339c2a1feadf039a9d367a3ef Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 28 Jan 2019 18:01:55 -0200 Subject: [PATCH 15/32] Reverting test project to netcoreapp2.1 (travis trust image doesn't support 2.2 yet) --- paket.dependencies | 2 +- paket.lock | 2 +- .../FSharp.Data.GraphQL.Benchmarks.Sql.fsproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/paket.dependencies b/paket.dependencies index d4bcdb63c..79790dbc4 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -39,7 +39,7 @@ group Test group BenchmarksSql source https://nuget.org/api/v2 - framework: netcoreapp2.2 + framework: netcoreapp2.1 nuget BenchmarkDotNet nuget Dapper diff --git a/paket.lock b/paket.lock index 4309a8654..e0793f82d 100644 --- a/paket.lock +++ b/paket.lock @@ -1807,7 +1807,7 @@ NUGET Newtonsoft.Json (>= 10.0.2) - restriction: || (>= net45) (&& (>= netstandard1.0) (< netstandard1.3) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (>= netstandard1.3) (< win8)) (>= wp8) (>= wpa81) GROUP BenchmarksSql -RESTRICTION: == netcoreapp2.2 +RESTRICTION: == netcoreapp2.1 NUGET remote: https://www.nuget.org/api/v2 BenchmarkDotNet (0.11.3) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj index 68e93e59d..7b72cde4b 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.2 + netcoreapp2.1 From fdd694bd407e0fb68d82a728a738bf4adf58c9d0 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 28 Jan 2019 18:22:35 -0200 Subject: [PATCH 16/32] Updating travis netcore version --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0a4e5e88b..1707a554f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: csharp sudo: required -dotnet: 2.1.4 +dotnet: 2.1.401 before_install: - chmod +x build.sh From e410efd2774a9f2411a716365e582b3fe230486a Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 28 Jan 2019 19:13:46 -0200 Subject: [PATCH 17/32] Removing build warnings --- src/FSharp.Data.GraphQL.Shared/AsyncVal.fs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/FSharp.Data.GraphQL.Shared/AsyncVal.fs b/src/FSharp.Data.GraphQL.Shared/AsyncVal.fs index d3da2aff0..dabfeeba0 100644 --- a/src/FSharp.Data.GraphQL.Shared/AsyncVal.fs +++ b/src/FSharp.Data.GraphQL.Shared/AsyncVal.fs @@ -115,6 +115,10 @@ module AsyncVal = /// Returned array maintain order of values. /// If the array contains a Failure, then the entire array will not resolve let collectSequential (values: AsyncVal<'T> []) : AsyncVal<'T []> = + let mapper = + function + | Value v -> v + | other -> failwithf "Expected a synchronous value, but got %O" other if values.Length = 0 then Value [||] elif values |> Array.exists isAsync then Async(async { @@ -129,7 +133,7 @@ module AsyncVal = | Failure f -> results.[i] <- raise f return results }) - else Value (values |> Array.map (fun (Value v) -> v)) + else Value (values |> Array.map mapper) @@ -197,12 +201,6 @@ module AsyncExtensions = /// Computation expression for working on AsyncVals. let asyncVal = AsyncValBuilder () - - /// Active pattern used for checking if AsyncVal contains immediate value. - let (|Immediate|_|) (x: AsyncVal<'T>) = match x with | Value v -> Some v | _ -> None - - /// Active patter used for checking if AsyncVal wraps an Async computation. - let (|Async|_|) (x: AsyncVal<'T>) = match x with | Async a -> Some a | _ -> None type Microsoft.FSharp.Control.AsyncBuilder with From 90cc7371c2e59cdc2322da47824d6a0ae6d26da6 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 28 Jan 2019 19:35:17 -0200 Subject: [PATCH 18/32] Creating build script for linux --- .../FSharp.Data.GraphQL.Benchmarks.Sql.fsproj | 5 ++++- .../scripts/fetch-database.sh | 15 +++++++++++++++ tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs | 4 ++-- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj index 7b72cde4b..19f9dedeb 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj @@ -17,8 +17,11 @@ - + + + + \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh new file mode 100644 index 000000000..5222a8158 --- /dev/null +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh @@ -0,0 +1,15 @@ +DB_PATH = "../ml-latest" +echo "Checking if path \"$DB_PATH\" exists..." +if [ ! -d "$DB_PATH" ] +then + echo "Path not found. Downloading database files..." + wget -P "$DB_PATH" "http://files.grouplens.org/datasets/movielens/ml-latest.zip" + echo "Download finished. Unzipping database files..." + ZIP_FILE = "$DB_PATH/ml-latest.zip" + unzip "$ZIP_FILE" + echo "Unzipping done. Removing zip file..." + rm "$ZIP_FILE" + echo "Database files successfuly downloaded." +else + echo "Path already exists. Skipping download of database." +fi \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs index 884b932fb..52db06214 100644 --- a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs @@ -628,8 +628,8 @@ let ``Each live result should be sent as soon as it is computed`` () = updateLiveData() // The second result is a delayed async field, which is set to compute the value for 5 seconds. // The first result should come as soon as the live value is updated, which sould be almost instantly. - // Therefore, let's assume that if it does not come in at least 3 seconds, test has failed. - if TimeSpan.FromSeconds(float 3) |> mre1.WaitOne |> not + // Therefore, let's assume that if it does not come in at least 4 seconds, test has failed. + if TimeSpan.FromSeconds(float 4) |> mre1.WaitOne |> not then fail "Timeout while waiting for first deferred result" if TimeSpan.FromSeconds(float 30) |> mre2.WaitOne |> not then fail "Timeout while waiting for second deferred result" From 91ec90584367667738a839b74373c527fdfbb8c2 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 28 Jan 2019 19:48:14 -0200 Subject: [PATCH 19/32] Updating build event --- .../FSharp.Data.GraphQL.Benchmarks.Sql.fsproj | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj index 19f9dedeb..819c3ccba 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj @@ -17,11 +17,9 @@
- - - - - + + + \ No newline at end of file From 8023e462b4e4c2fdda70c39d3baefc72725ad07b Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Tue, 29 Jan 2019 13:22:07 -0200 Subject: [PATCH 20/32] Fixing path error on pre build script --- .../FSharp.Data.GraphQL.Benchmarks.Sql.fsproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj index 819c3ccba..7959983c9 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj @@ -19,7 +19,7 @@ - + \ No newline at end of file From 17603216a9a4a8b4d0332d4f6662100ccca74a20 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Tue, 29 Jan 2019 14:43:37 -0200 Subject: [PATCH 21/32] Changing pre build script path on linux --- .../FSharp.Data.GraphQL.Benchmarks.Sql.fsproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj index 7959983c9..c84475842 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/FSharp.Data.GraphQL.Benchmarks.Sql.fsproj @@ -19,7 +19,7 @@ - + \ No newline at end of file From 6b13b47a0db50f812de017e772846100c6bd8d0b Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Tue, 29 Jan 2019 15:08:44 -0200 Subject: [PATCH 22/32] Granting permission to pre build script --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 1707a554f..8145ccb18 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ sudo: required dotnet: 2.1.401 before_install: - chmod +x build.sh + - chmod +x tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh script: - export FrameworkPathOverride=/usr/lib/mono/4.6.1-api/ && ./build.sh All From aeb98dcf3c567b87919a239017310ee73dbd484d Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Tue, 29 Jan 2019 15:31:07 -0200 Subject: [PATCH 23/32] Increasing tolerance on test for one core machines --- .../ObservableExtensionsTests.fs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs index 607c8ca30..405b0af46 100644 --- a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs @@ -107,10 +107,10 @@ let ``bufferByElementCount should call OnComplete and return items in expected o let ``bufferByTimingAndElementCount should call OnComplete and return items in expected order`` () = let source = seq { yield delay 5000 2 - yield delay 500 1 - yield delay 1000 3 - yield delay 1500 4 } - let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount 3000 2 + yield delay 1000 1 + yield delay 2000 3 + yield delay 3000 4 } + let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount 4000 2 use sub = Observer.create obs sub.WaitCompleted() sub.Received |> seqEquals [ [1; 3]; [4]; [2] ] From 85c1150fc0ca2753acda586bb8da033e74326f93 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Tue, 29 Jan 2019 17:19:11 -0200 Subject: [PATCH 24/32] Refactoring observable, updating linux database fetching script --- .../ObservableExtensions.fs | 4 ++-- .../scripts/fetch-database.sh | 12 +++++++----- .../ObservableExtensionsTests.fs | 8 ++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/FSharp.Data.GraphQL.Shared/ObservableExtensions.fs b/src/FSharp.Data.GraphQL.Shared/ObservableExtensions.fs index 9bfb345f1..8f03b2663 100644 --- a/src/FSharp.Data.GraphQL.Shared/ObservableExtensions.fs +++ b/src/FSharp.Data.GraphQL.Shared/ObservableExtensions.fs @@ -62,6 +62,6 @@ module Observable = let ofAsyncValSeq (items : AsyncVal<'Item> seq) = items |> Seq.map ofAsyncVal |> Observable.Merge - let empty<'T> = Seq.empty<'T> |> ofSeq + let empty<'T> = Observable.Empty<'T>() - let singleton (value : 'T) = Seq.singleton value |> ofSeq \ No newline at end of file + let singleton (value : 'T) = Observable.Return(value) \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh index 5222a8158..873cd1cf1 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh @@ -1,11 +1,13 @@ -DB_PATH = "../ml-latest" -echo "Checking if path \"$DB_PATH\" exists..." -if [ ! -d "$DB_PATH" ] +DB_PATH="$( cd "$(dirname $0)"; cd ..; pwd -P)" +ZIP_FILE="${DB_PATH}/ml-latest.zip" + +echo "Checking if path \"${DB_PATH}\" exists..." + +if [ ! -d "${DB_PATH}" ] then echo "Path not found. Downloading database files..." - wget -P "$DB_PATH" "http://files.grouplens.org/datasets/movielens/ml-latest.zip" + wget -P "${DB_PATH}" "http://files.grouplens.org/datasets/movielens/ml-latest.zip" echo "Download finished. Unzipping database files..." - ZIP_FILE = "$DB_PATH/ml-latest.zip" unzip "$ZIP_FILE" echo "Unzipping done. Removing zip file..." rm "$ZIP_FILE" diff --git a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs index 405b0af46..1d4b1a50d 100644 --- a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs @@ -62,7 +62,7 @@ let delay ms x = async { [] let ``ofAsyncSeq should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 3000 2 + yield delay 4000 2 yield delay 1000 1 yield delay 2000 3 } let obs = Observable.ofAsyncSeq source @@ -73,7 +73,7 @@ let ``ofAsyncSeq should call OnComplete and return items in expected order`` () [] let ``ofAsyncValSeq should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 3000 2 |> AsyncVal.ofAsync + yield delay 4000 2 |> AsyncVal.ofAsync yield delay 1000 1 |> AsyncVal.ofAsync yield delay 2000 3 |> AsyncVal.ofAsync } let obs = Observable.ofAsyncValSeq source @@ -106,11 +106,11 @@ let ``bufferByElementCount should call OnComplete and return items in expected o [] let ``bufferByTimingAndElementCount should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 5000 2 + yield delay 6000 2 yield delay 1000 1 yield delay 2000 3 yield delay 3000 4 } - let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount 4000 2 + let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount 3000 2 use sub = Observer.create obs sub.WaitCompleted() sub.Received |> seqEquals [ [1; 3]; [4]; [2] ] From a396c3999f8974905000d847153daa488f5c32e5 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Tue, 29 Jan 2019 17:29:56 -0200 Subject: [PATCH 25/32] Updating path in pre build script for linux --- .../scripts/fetch-database.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh index 873cd1cf1..6c764ed92 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh @@ -1,12 +1,13 @@ -DB_PATH="$( cd "$(dirname $0)"; cd ..; pwd -P)" -ZIP_FILE="${DB_PATH}/ml-latest.zip" +PROJECT_PATH="$( cd "$(dirname $0)"; cd ..; pwd -P)" +ZIP_FILE="${PROJECT_PATH}/ml-latest.zip" +DB_PATH="${PROJECT_PATH}/ml-latest" echo "Checking if path \"${DB_PATH}\" exists..." if [ ! -d "${DB_PATH}" ] then echo "Path not found. Downloading database files..." - wget -P "${DB_PATH}" "http://files.grouplens.org/datasets/movielens/ml-latest.zip" + wget -P "${PROJECT_PATH}" "http://files.grouplens.org/datasets/movielens/ml-latest.zip" echo "Download finished. Unzipping database files..." unzip "$ZIP_FILE" echo "Unzipping done. Removing zip file..." From b0f80b82cf5a7f99a53aaa29a86f0eaafdc986e2 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Fri, 1 Feb 2019 10:31:36 -0200 Subject: [PATCH 26/32] Adjusting tests for machines with less processor cores --- build.fsx | 1 + .../DeferredTests.fs | 116 ++++++++++++++---- .../MiddlewaresTests.fs | 21 +--- .../ObservableExtensionsTests.fs | 25 ++-- tests/FSharp.Data.GraphQL.Tests/Program.fs | 2 +- .../Relay/NodeTests.fs | 13 +- .../SubscriptionTests.fs | 44 +++---- 7 files changed, 137 insertions(+), 85 deletions(-) diff --git a/build.fsx b/build.fsx index 57d3819cb..443ef13ce 100644 --- a/build.fsx +++ b/build.fsx @@ -205,6 +205,7 @@ Target "Build" (fun _ -> ) Target "RunTests" (fun _ -> + Console.WriteLine("Number of processors: {0}", Environment.ProcessorCount) DotNetCli.Test (fun p -> { p with #if MONO Framework = "netcoreapp2.0" diff --git a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs index 884b932fb..af303ee72 100644 --- a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs @@ -13,6 +13,18 @@ open FSharp.Data.GraphQL.Types #nowarn "40" +let ms x = + let factor = + match Environment.ProcessorCount with + | x when x >= 8 -> 1 + | x when x >= 4 -> 4 + | _ -> 6 + x * factor + +let delay time x = async { + do! Async.Sleep(ms time) + return x } + type TestSubject = { id: string a: string @@ -157,11 +169,6 @@ let DataType = Define.Field("bufferedList", ListOf AsyncDataType, (fun _ d -> d.bufferedList)) ]) -let delay ms x = async { - do! Async.Sleep(ms) - return x -} - let data = { id = "1" a = "Apple" @@ -629,9 +636,9 @@ let ``Each live result should be sent as soon as it is computed`` () = // The second result is a delayed async field, which is set to compute the value for 5 seconds. // The first result should come as soon as the live value is updated, which sould be almost instantly. // Therefore, let's assume that if it does not come in at least 3 seconds, test has failed. - if TimeSpan.FromSeconds(float 3) |> mre1.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 3)) |> mre1.WaitOne |> not then fail "Timeout while waiting for first deferred result" - if TimeSpan.FromSeconds(float 30) |> mre2.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second deferred result" sub.Received |> Seq.cast @@ -1282,13 +1289,16 @@ let ``Should buffer stream list correctly by timing information``() = ] "path", upcast [box "testData"; upcast "bufferedList"; upcast [0]] ] - let query = parse """{ - testData { - bufferedList @stream(interval : 3000) { - value + let query = + ms 3000 + |> sprintf """{ + testData { + bufferedList @stream(interval : %i) { + value + } } - } - }""" + }""" + |> parse use mre1 = new ManualResetEvent(false) use mre2 = new ManualResetEvent(false) let result = query |> executor.AsyncExecute |> sync @@ -1306,9 +1316,9 @@ let ``Should buffer stream list correctly by timing information``() = // to buffer results 3 and 2 (in this order), as together they take less than 3 seconds to compute, // and send them together on the first batch. // First result should come in a second batch, as it takes 5 seconds to compute, more than the time limit of the buffer. - if TimeSpan.FromSeconds(float 4) |> mre1.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 4)) |> mre1.WaitOne |> not then fail "Timeout while waiting for first Deferred GQLResponse" - if TimeSpan.FromSeconds(float 30) |> mre2.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second Deferred GQLResponse" sub.WaitCompleted() sub.Received @@ -1372,9 +1382,9 @@ let ``Should buffer stream list correctly by count information``() = // and send them together on the first batch. // First result should come in a second batch, as it takes 5 seconds to compute, which should be enough // to put the two other results in a batch with the preferred size. - if TimeSpan.FromSeconds(float 4) |> mre1.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 4)) |> mre1.WaitOne |> not then fail "Timeout while waiting for first Deferred GQLResponse" - if TimeSpan.FromSeconds(float 30) |> mre2.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second Deferred GQLResponse" sub.WaitCompleted() sub.Received @@ -1469,9 +1479,9 @@ let ``Each deferred result should be sent as soon as it is computed``() = // The second result is a delayed async field, which is set to compute the value for 5 seconds. // The first result should come almost instantly, as it is not a delayed computed field. // Therefore, let's assume that if it does not come in at least 3 seconds, test has failed. - if TimeSpan.FromSeconds(float 3) |> mre1.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 3)) |> mre1.WaitOne |> not then fail "Timeout while waiting for first deferred result" - if TimeSpan.FromSeconds(float 30) |> mre2.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second deferred result" sub.WaitCompleted() sub.Received @@ -1526,9 +1536,67 @@ let ``Each deferred result of a list should be sent as soon as it is computed`` // The first result is a delayed async field, which is set to compute the value for 5 seconds. // The second result should come first, almost instantly, as it is not a delayed computed field. // Therefore, let's assume that if it does not come in at least 4 seconds, test has failed. - if TimeSpan.FromSeconds(float 4) |> mre1.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 4)) |> mre1.WaitOne |> not + then fail "Timeout while waiting for first deferred result" + if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not + then fail "Timeout while waiting for second deferred result" + sub.WaitCompleted() + sub.Received + |> Seq.cast + |> itemEquals 0 expectedDeferred1 + |> itemEquals 1 expectedDeferred2 + |> ignore + | _ -> fail "Expected Deferred GQLRespnse" + +[] +let ``Each streamed result should be sent as soon as it is computed - normal seq`` () = + let expectedDirect = + NameValueLookup.ofList [ + "testData", upcast NameValueLookup.ofList [ + "syncSeq", upcast [] + ] + ] + let expectedDeferred1 = + NameValueLookup.ofList [ + "data", upcast [ + box <| NameValueLookup.ofList [ + "value", upcast "Sync 2" + ] + ] + "path", upcast [box "testData"; upcast "syncSeq"; upcast 0] + ] + let expectedDeferred2 = + NameValueLookup.ofList [ + "data", upcast [ + box <| NameValueLookup.ofList [ + "value", upcast "Sync 1" + ] + ] + "path", upcast [box "testData"; upcast "syncSeq"; upcast 1] + ] + let query = parse """{ + testData { + syncSeq @stream { + value + } + } + }""" + use mre1 = new ManualResetEvent(false) + use mre2 = new ManualResetEvent(false) + let result = query |> executor.AsyncExecute |> sync + match result with + | Deferred(data, errors, deferred) -> + empty errors + data.["data"] |> equals (upcast expectedDirect) + use sub = deferred |> Observer.createWithCallback (fun sub _ -> + if Seq.length sub.Received = 1 then mre1.Set() |> ignore + elif Seq.length sub.Received = 2 then mre2.Set() |> ignore) + // The first result is a delayed async field exposed through the sequence, which is set to compute the value for 5 seconds. + // The second result should come first, as its computation time is set for 1 second. + // Therefore, let's assume that if it does not come in at least 4 seconds, test has failed. + if TimeSpan.FromSeconds(float (ms 4)) |> mre1.WaitOne |> not then fail "Timeout while waiting for first deferred result" - if TimeSpan.FromSeconds(float 30) |> mre2.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second deferred result" sub.WaitCompleted() sub.Received @@ -1539,7 +1607,7 @@ let ``Each deferred result of a list should be sent as soon as it is computed`` | _ -> fail "Expected Deferred GQLRespnse" [] -let ``Each streamed result should be sent as soon as it is computed``() = +let ``Each streamed result should be sent as soon as it is computed - async seq``() = let expectedDirect = NameValueLookup.ofList [ "testData", upcast NameValueLookup.ofList [ @@ -1584,9 +1652,9 @@ let ``Each streamed result should be sent as soon as it is computed``() = // The first result is a delayed async field, which is set to compute the value for 5 seconds. // The second result should come first, almost instantly, as it is not a delayed computed field. // Therefore, let's assume that if it does not come in at least 4 seconds, test has failed. - if TimeSpan.FromSeconds(float 4) |> mre1.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 4)) |> mre1.WaitOne |> not then fail "Timeout while waiting for first deferred result" - if TimeSpan.FromSeconds(float 30) |> mre2.WaitOne |> not + if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second deferred result" sub.WaitCompleted() sub.Received diff --git a/tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs b/tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs index 00d854032..ab910c559 100644 --- a/tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs @@ -194,16 +194,13 @@ let ``Deferred queries : Should pass when below threshold``() = "path", upcast [ "A" :> obj; "subjects" :> obj ] ] let result = execute query - use mre = new ManualResetEvent(false) - let actualDeferred = ConcurrentBag() match result with | Deferred(data, errors, deferred) -> empty errors data.["data"] |> equals (upcast expected) - deferred |> Observable.add (fun x -> actualDeferred.Add(x); mre.Set() |> ignore) - if TimeSpan.FromSeconds(float 30) |> mre.WaitOne |> not - then fail "Timeout while waiting for Deferred GQLResponse" - actualDeferred |> single |> equals (upcast expectedDeferred) + let sub = Observer.create deferred + sub.WaitCompleted() + sub.Received |> single |> equals (upcast expectedDeferred) | _ -> fail "Expected Deferred GQLResponse" result.Metadata.TryFind("queryWeightThreshold") |> equals (Some 2.0) result.Metadata.TryFind("queryWeight") |> equals (Some 2.0) @@ -250,19 +247,13 @@ let ``Streamed queries : Should pass when below threshold``() = "path", upcast [ "A" :> obj; "subjects" :> obj; 1 :> obj ] ] let result = execute query - use mre = new ManualResetEvent(false) - let actualDeferred = ConcurrentBag() match result with | Deferred(data, errors, deferred) -> empty errors data.["data"] |> equals (upcast expected) - deferred - |> Observable.add (fun x -> - actualDeferred.Add(x) - if actualDeferred.Count = 2 then mre.Set() |> ignore) - if TimeSpan.FromSeconds(float 30) |> mre.WaitOne |> not - then fail "Timeout while waiting for Deferred GQLResponse" - actualDeferred + let sub = Observer.create deferred + sub.WaitCompleted(2) + sub.Received |> Seq.cast |> contains expectedDeferred1 |> contains expectedDeferred2 diff --git a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs index 526b4708e..3d931e166 100644 --- a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs @@ -6,6 +6,19 @@ module FSharp.Data.GraphQL.Tests.ObservableExtensionsTests open Xunit open FSharp.Data.GraphQL open Helpers +open System + +let ms x = + let factor = + match Environment.ProcessorCount with + | x when x >= 8 -> 1 + | x when x >= 4 -> 5 + | _ -> 20 + x * factor + +let delay time x = async { + do! Async.Sleep(ms time) + return x } [] let ``ofSeq should call OnComplete and return items in expected order`` () = @@ -55,10 +68,6 @@ let ``ofSeq on an empty sequence should call OnComplete and return items in expe sub.WaitCompleted() sub.Received |> seqEquals source -let delay ms x = async { - do! Async.Sleep(ms) - return x } - [] let ``ofAsyncSeq should call OnComplete and return items in expected order`` () = let source = seq { @@ -84,10 +93,10 @@ let ``ofAsyncValSeq should call OnComplete and return items in expected order`` [] let ``bufferByTiming should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 500 2 + yield delay 400 2 yield delay 100 1 yield delay 200 3 } - let obs = Observable.ofAsyncSeq source |> Observable.bufferByTiming 300 + let obs = Observable.ofAsyncSeq source |> Observable.bufferByTiming (ms 300) use sub = Observer.create obs sub.WaitCompleted() sub.Received |> seqEquals [ [1; 3]; [2] ] @@ -95,7 +104,7 @@ let ``bufferByTiming should call OnComplete and return items in expected order`` [] let ``bufferByElementCount should call OnComplete and return items in expected order`` () = let source = seq { - yield delay 500 2 + yield delay 400 2 yield delay 100 1 yield delay 200 3 } let obs = Observable.ofAsyncSeq source |> Observable.bufferByElementCount 2 @@ -110,7 +119,7 @@ let ``bufferByTimingAndElementCount should call OnComplete and return items in e yield delay 50 1 yield delay 100 3 yield delay 150 4 } - let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount 300 2 + let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount (ms 300) 2 use sub = Observer.create obs sub.WaitCompleted() sub.Received |> seqEquals [ [1; 3]; [4]; [2] ] diff --git a/tests/FSharp.Data.GraphQL.Tests/Program.fs b/tests/FSharp.Data.GraphQL.Tests/Program.fs index 4f18e7f3a..52113d02c 100644 --- a/tests/FSharp.Data.GraphQL.Tests/Program.fs +++ b/tests/FSharp.Data.GraphQL.Tests/Program.fs @@ -1,4 +1,4 @@ module Program [] -let main args = 0 \ No newline at end of file +let main _ = 0 \ No newline at end of file diff --git a/tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs b/tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs index 6f86d30d8..c4873a687 100644 --- a/tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs @@ -60,17 +60,12 @@ let execAndValidateNode (query: string) expectedDirect expectedDeferred = | Some expectedDeferred -> match result with | Deferred(data, errors, deferred) -> - use mre = new ManualResetEvent(false) - let actualDeferred = ConcurrentBag() - let expectedItems = Seq.length expectedDeferred + let expectedItemCount = Seq.length expectedDeferred empty errors data.["data"] |> equals (upcast NameValueLookup.ofList ["node", upcast expectedDirect]) - deferred - |> Observable.add (fun x -> - actualDeferred.Add(x) - if actualDeferred.Count = expectedItems then set mre) - wait mre "Timeout while waiting for Deferred GQLResponse" - actualDeferred + let sub = Observer.create deferred + sub.WaitCompleted(expectedItemCount) + sub.Received |> Seq.cast |> Seq.iter (fun ad -> expectedDeferred |> contains ad |> ignore) | _ -> fail "Expected a deferred GQLResponse" diff --git a/tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs b/tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs index 0fa7e36ce..fab784ac9 100644 --- a/tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs @@ -119,15 +119,13 @@ let ``Should be able to subscribe to sync field and get results``() = data } }""" - use mre = new ManualResetEvent(false) - let actual = ConcurrentBag() let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - data |> Observable.add (fun x -> actual.Add(x); set mre) + let sub = Observer.create data updateValue 1 "Updated value 1" - wait mre "Timeout while waiting for Stream GQLResponse" - actual + sub.WaitForItem() + sub.Received |> Seq.cast |> contains expected |> ignore @@ -149,15 +147,13 @@ let ``Should be able to subscribe to tagged sync field and get results with expe data } }""" - use mre = new ManualResetEvent(false) - let actual = ConcurrentBag() let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - data |> Observable.add (fun x -> actual.Add(x); set mre) + let sub = Observer.create data updateValue 1 "Updated value 1" - wait mre "Timeout while waiting for Stream GQLResponse" - actual + sub.WaitForItem() + sub.Received |> Seq.cast |> contains expected |> ignore @@ -171,14 +167,12 @@ let ``Should be able to subscribe to tagged sync field and do not get results wi data } }""" - use mre = new ManualResetEvent(false) - let actual = ConcurrentBag() let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - data |> Observable.add (fun x -> actual.Add(x); set mre) + let sub = Observer.create data updateValue 1 "Updated value 1" - ensureThat (fun () -> actual.IsEmpty) 10 "Should not get results with given tag" + ensureThat (fun () -> Seq.isEmpty sub.Received) 50 "Should not get results with given tag" | _ -> failwith "Expected Stream GQLResponse" [] @@ -197,15 +191,13 @@ let ``Should be able to subscribe to async field and get results``() = data } }""" - let mre = new ManualResetEvent(false) - let actual = ConcurrentBag() let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - data |> Observable.add (fun x -> actual.Add(x); set mre) + let sub = Observer.create data updateValue 1 "Updated value 1" - wait mre "Timeout while waiting for Stream GQLResponse" - actual + sub.WaitForItem() + sub.Received |> Seq.cast |> contains expected |> ignore @@ -227,15 +219,13 @@ let ``Should be able to subscribe to tagged async field and get results with exp data } }""" - use mre = new ManualResetEvent(false) - let actual = ConcurrentBag() let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - data |> Observable.add (fun x -> actual.Add(x); set mre) + let sub = Observer.create data updateValue 1 "Updated value 1" - wait mre "Timeout while waiting for Stream GQLResponse" - actual + sub.WaitForItem() + sub.Received |> Seq.cast |> contains expected |> ignore @@ -249,12 +239,10 @@ let ``Should be able to subscribe to tagged async field and do not get results w data } }""" - use mre = new ManualResetEvent(false) - let actual = ConcurrentBag() let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - data |> Observable.add (fun x -> actual.Add(x); set mre) + let sub = Observer.create data updateValue 1 "Updated value 1" - ensureThat (fun () -> actual.IsEmpty) 10 "Should not get results with given tag" + ensureThat (fun () -> Seq.isEmpty sub.Received) 50 "Should not get results with given tag" | _ -> failwith "Expected Stream GQLResponse" \ No newline at end of file From c1cf5a4db518376f338272d7bdc222c14f28405d Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Fri, 1 Feb 2019 10:59:09 -0200 Subject: [PATCH 27/32] Removing test from other branch --- .../DeferredTests.fs | 58 ------------------- 1 file changed, 58 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs index af303ee72..f1001b2f7 100644 --- a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs @@ -1548,64 +1548,6 @@ let ``Each deferred result of a list should be sent as soon as it is computed`` |> ignore | _ -> fail "Expected Deferred GQLRespnse" -[] -let ``Each streamed result should be sent as soon as it is computed - normal seq`` () = - let expectedDirect = - NameValueLookup.ofList [ - "testData", upcast NameValueLookup.ofList [ - "syncSeq", upcast [] - ] - ] - let expectedDeferred1 = - NameValueLookup.ofList [ - "data", upcast [ - box <| NameValueLookup.ofList [ - "value", upcast "Sync 2" - ] - ] - "path", upcast [box "testData"; upcast "syncSeq"; upcast 0] - ] - let expectedDeferred2 = - NameValueLookup.ofList [ - "data", upcast [ - box <| NameValueLookup.ofList [ - "value", upcast "Sync 1" - ] - ] - "path", upcast [box "testData"; upcast "syncSeq"; upcast 1] - ] - let query = parse """{ - testData { - syncSeq @stream { - value - } - } - }""" - use mre1 = new ManualResetEvent(false) - use mre2 = new ManualResetEvent(false) - let result = query |> executor.AsyncExecute |> sync - match result with - | Deferred(data, errors, deferred) -> - empty errors - data.["data"] |> equals (upcast expectedDirect) - use sub = deferred |> Observer.createWithCallback (fun sub _ -> - if Seq.length sub.Received = 1 then mre1.Set() |> ignore - elif Seq.length sub.Received = 2 then mre2.Set() |> ignore) - // The first result is a delayed async field exposed through the sequence, which is set to compute the value for 5 seconds. - // The second result should come first, as its computation time is set for 1 second. - // Therefore, let's assume that if it does not come in at least 4 seconds, test has failed. - if TimeSpan.FromSeconds(float (ms 4)) |> mre1.WaitOne |> not - then fail "Timeout while waiting for first deferred result" - if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not - then fail "Timeout while waiting for second deferred result" - sub.WaitCompleted() - sub.Received - |> Seq.cast - |> itemEquals 0 expectedDeferred1 - |> itemEquals 1 expectedDeferred2 - |> ignore - | _ -> fail "Expected Deferred GQLRespnse" - [] let ``Each streamed result should be sent as soon as it is computed - async seq``() = let expectedDirect = From a2646a5c8b945a20d85c65bcba1476b5ec815b66 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Fri, 1 Feb 2019 11:34:51 -0200 Subject: [PATCH 28/32] Merge from test-fixes-2 --- .../DeferredTests.fs | 58 ------------------- 1 file changed, 58 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs index af303ee72..f1001b2f7 100644 --- a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs @@ -1548,64 +1548,6 @@ let ``Each deferred result of a list should be sent as soon as it is computed`` |> ignore | _ -> fail "Expected Deferred GQLRespnse" -[] -let ``Each streamed result should be sent as soon as it is computed - normal seq`` () = - let expectedDirect = - NameValueLookup.ofList [ - "testData", upcast NameValueLookup.ofList [ - "syncSeq", upcast [] - ] - ] - let expectedDeferred1 = - NameValueLookup.ofList [ - "data", upcast [ - box <| NameValueLookup.ofList [ - "value", upcast "Sync 2" - ] - ] - "path", upcast [box "testData"; upcast "syncSeq"; upcast 0] - ] - let expectedDeferred2 = - NameValueLookup.ofList [ - "data", upcast [ - box <| NameValueLookup.ofList [ - "value", upcast "Sync 1" - ] - ] - "path", upcast [box "testData"; upcast "syncSeq"; upcast 1] - ] - let query = parse """{ - testData { - syncSeq @stream { - value - } - } - }""" - use mre1 = new ManualResetEvent(false) - use mre2 = new ManualResetEvent(false) - let result = query |> executor.AsyncExecute |> sync - match result with - | Deferred(data, errors, deferred) -> - empty errors - data.["data"] |> equals (upcast expectedDirect) - use sub = deferred |> Observer.createWithCallback (fun sub _ -> - if Seq.length sub.Received = 1 then mre1.Set() |> ignore - elif Seq.length sub.Received = 2 then mre2.Set() |> ignore) - // The first result is a delayed async field exposed through the sequence, which is set to compute the value for 5 seconds. - // The second result should come first, as its computation time is set for 1 second. - // Therefore, let's assume that if it does not come in at least 4 seconds, test has failed. - if TimeSpan.FromSeconds(float (ms 4)) |> mre1.WaitOne |> not - then fail "Timeout while waiting for first deferred result" - if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not - then fail "Timeout while waiting for second deferred result" - sub.WaitCompleted() - sub.Received - |> Seq.cast - |> itemEquals 0 expectedDeferred1 - |> itemEquals 1 expectedDeferred2 - |> ignore - | _ -> fail "Expected Deferred GQLRespnse" - [] let ``Each streamed result should be sent as soon as it is computed - async seq``() = let expectedDirect = From fd6532738f73fb75ea75c5807dc71a8ca888a3a7 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Fri, 1 Feb 2019 12:46:14 -0200 Subject: [PATCH 29/32] Increasing tolerance in WaitCompleted --- .../DeferredTests.fs | 12 +++---- tests/FSharp.Data.GraphQL.Tests/Helpers.fs | 15 ++++---- .../ObservableExtensionsTests.fs | 36 +++++++++---------- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs index f1001b2f7..4d23de4d3 100644 --- a/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/DeferredTests.fs @@ -7,8 +7,6 @@ open FSharp.Data.GraphQL open FSharp.Data.GraphQL.Parser open FSharp.Data.GraphQL.Execution open System.Threading -open System.Collections.Generic -open System.Collections.Concurrent open FSharp.Data.GraphQL.Types #nowarn "40" @@ -1320,7 +1318,7 @@ let ``Should buffer stream list correctly by timing information``() = then fail "Timeout while waiting for first Deferred GQLResponse" if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second Deferred GQLResponse" - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> Seq.cast |> itemEquals 0 expectedDeferred1 @@ -1386,7 +1384,7 @@ let ``Should buffer stream list correctly by count information``() = then fail "Timeout while waiting for first Deferred GQLResponse" if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second Deferred GQLResponse" - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> Seq.cast |> itemEquals 0 expectedDeferred1 @@ -1483,7 +1481,7 @@ let ``Each deferred result should be sent as soon as it is computed``() = then fail "Timeout while waiting for first deferred result" if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second deferred result" - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> Seq.cast |> itemEquals 0 expectedDeferred1 @@ -1540,7 +1538,7 @@ let ``Each deferred result of a list should be sent as soon as it is computed`` then fail "Timeout while waiting for first deferred result" if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second deferred result" - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> Seq.cast |> itemEquals 0 expectedDeferred1 @@ -1598,7 +1596,7 @@ let ``Each streamed result should be sent as soon as it is computed - async seq` then fail "Timeout while waiting for first deferred result" if TimeSpan.FromSeconds(float (ms 10)) |> mre2.WaitOne |> not then fail "Timeout while waiting for second deferred result" - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> Seq.cast |> itemEquals 0 expectedDeferred1 diff --git a/tests/FSharp.Data.GraphQL.Tests/Helpers.fs b/tests/FSharp.Data.GraphQL.Tests/Helpers.fs index 8141d4a0b..367634541 100644 --- a/tests/FSharp.Data.GraphQL.Tests/Helpers.fs +++ b/tests/FSharp.Data.GraphQL.Tests/Helpers.fs @@ -129,12 +129,15 @@ type TestObserver<'T>(obs : IObservable<'T>, ?onReceived : TestObserver<'T> -> ' do subscription <- obs.Subscribe(this) member __.Received with get() = received.AsEnumerable() - member __.WaitCompleted() = - wait mre "Timeout waiting for OnCompleted" - member x.WaitCompleted(expectedItemCount) = - x.WaitCompleted() - if received.Count < expectedItemCount - then failwithf "Expected to receive %i items, but received %i" expectedItemCount received.Count + member __.WaitCompleted(?expectedItemCount, ?timeout) = + let ms = defaultArg timeout 30 + if TimeSpan.FromSeconds(float ms) |> mre.WaitOne |> not + then fail "Timeout waiting for OnCompleted" + match expectedItemCount with + | Some x -> + if received.Count < x + then failwithf "Expected to receive %i items, but received %i" x received.Count + | None -> () member __.WaitForItems(expectedItemCount) = let errorMsg = sprintf "Expected to receive least %i items, but received %i" expectedItemCount received.Count waitFor (fun () -> received.Count = expectedItemCount) (expectedItemCount * 100) errorMsg diff --git a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs index 3d931e166..bc9c39149 100644 --- a/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/ObservableExtensionsTests.fs @@ -25,7 +25,7 @@ let ``ofSeq should call OnComplete and return items in expected order`` () = let source = seq { for x in 1 .. 5 do yield x } let obs = Observable.ofSeq source use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals source [] @@ -33,7 +33,7 @@ let `` bind should call OnComplete and return items in expected order`` () = let source = seq { for x in 1 .. 5 do yield x } let obs = Observable.ofSeq source |> Observable.bind (fun x -> Observable.ofSeq [x; x]) use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 1; 1; 2; 2; 3; 3; 4; 4; 5; 5 ] [] @@ -41,7 +41,7 @@ let `` ofAsync should call OnComplete and return items in expected order`` () = let source = async { return "test" } let obs = Observable.ofAsync source use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ "test" ] @@ -50,7 +50,7 @@ let `` ofAsyncVal should call OnComplete and return items in expected order`` () let source = async { return "test" } |> AsyncVal.ofAsync let obs = Observable.ofAsyncVal source use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ "test" ] [] @@ -65,7 +65,7 @@ let ``ofSeq on an empty sequence should call OnComplete and return items in expe let source = Seq.empty let obs = Observable.ofSeq source use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals source [] @@ -76,7 +76,7 @@ let ``ofAsyncSeq should call OnComplete and return items in expected order`` () yield delay 200 3 } let obs = Observable.ofAsyncSeq source use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 1; 3; 2 ] [] @@ -87,7 +87,7 @@ let ``ofAsyncValSeq should call OnComplete and return items in expected order`` yield delay 200 3 |> AsyncVal.ofAsync } let obs = Observable.ofAsyncValSeq source use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 1; 3; 2 ] [] @@ -98,7 +98,7 @@ let ``bufferByTiming should call OnComplete and return items in expected order`` yield delay 200 3 } let obs = Observable.ofAsyncSeq source |> Observable.bufferByTiming (ms 300) use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ [1; 3]; [2] ] [] @@ -109,7 +109,7 @@ let ``bufferByElementCount should call OnComplete and return items in expected o yield delay 200 3 } let obs = Observable.ofAsyncSeq source |> Observable.bufferByElementCount 2 use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ [1; 3]; [2] ] [] @@ -121,7 +121,7 @@ let ``bufferByTimingAndElementCount should call OnComplete and return items in e yield delay 150 4 } let obs = Observable.ofAsyncSeq source |> Observable.bufferByTimingAndElementCount (ms 300) 2 use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ [1; 3]; [4]; [2] ] type IndexException(index : int) = @@ -135,7 +135,7 @@ let ``catch should call OnComplete and return items in expected order`` () = Observable.ofSeq source |> Observable.catch (fun (ex : IndexException) -> ex.Index |> Observable.singleton) use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 1 ] [] @@ -145,7 +145,7 @@ let ``choose should cal OnComplete`` () = Observable.ofSeq source |> Observable.choose (fun x -> match x % 2 with | 0 -> Some x | _ -> None) use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 2; 4 ] [] @@ -163,7 +163,7 @@ let ``concat should call OnComplete and return items in expected order`` () = |> Observable.map Observable.ofAsyncSeq |> Observable.concat use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 1; 3; 2; 5; 4 ] [] @@ -179,7 +179,7 @@ let ``concat2 should call OnComplete and return items in expected order`` () = Observable.ofAsyncSeq source2 |> Observable.concat2 (Observable.ofAsyncSeq source1) use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 1; 3; 2; 5; 4 ] [] @@ -197,7 +197,7 @@ let ``merge should call OnComplete and return items in expected order`` () = |> Observable.map Observable.ofAsyncSeq |> Observable.merge use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 1; 3; 5; 4; 2 ] [] @@ -213,7 +213,7 @@ let ``merge2 should call OnComplete and return items in expected order`` () = Observable.ofAsyncSeq source2 |> Observable.merge2 (Observable.ofAsyncSeq source1) use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals [ 1; 3; 5; 4; 2 ] [] @@ -221,7 +221,7 @@ let ``concatSeq should call OnComplete and return items in expected order`` () = let source = seq { for x in 1 .. 5 do yield x } let obs = Observable.singleton source |> Observable.concatSeq use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals source [] @@ -229,5 +229,5 @@ let ``mapAsync should call OnComplete and return items in expected order`` () = let source = seq { for x in 1 .. 5 do yield x } let obs = Observable.ofSeq source |> Observable.mapAsync (fun x -> async { return x }) use sub = Observer.create obs - sub.WaitCompleted() + sub.WaitCompleted(timeout = ms 10) sub.Received |> seqEquals source \ No newline at end of file From 83cef858d89b8e2ed37dd5f9c73c20202b53f080 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 4 Feb 2019 16:01:48 -0200 Subject: [PATCH 30/32] Disposing test observer after usage --- tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs | 4 ++-- tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs | 2 +- tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs b/tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs index ab910c559..bdaebe915 100644 --- a/tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/MiddlewaresTests.fs @@ -198,7 +198,7 @@ let ``Deferred queries : Should pass when below threshold``() = | Deferred(data, errors, deferred) -> empty errors data.["data"] |> equals (upcast expected) - let sub = Observer.create deferred + use sub = Observer.create deferred sub.WaitCompleted() sub.Received |> single |> equals (upcast expectedDeferred) | _ -> fail "Expected Deferred GQLResponse" @@ -251,7 +251,7 @@ let ``Streamed queries : Should pass when below threshold``() = | Deferred(data, errors, deferred) -> empty errors data.["data"] |> equals (upcast expected) - let sub = Observer.create deferred + use sub = Observer.create deferred sub.WaitCompleted(2) sub.Received |> Seq.cast diff --git a/tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs b/tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs index c4873a687..496c43b7c 100644 --- a/tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/Relay/NodeTests.fs @@ -63,7 +63,7 @@ let execAndValidateNode (query: string) expectedDirect expectedDeferred = let expectedItemCount = Seq.length expectedDeferred empty errors data.["data"] |> equals (upcast NameValueLookup.ofList ["node", upcast expectedDirect]) - let sub = Observer.create deferred + use sub = Observer.create deferred sub.WaitCompleted(expectedItemCount) sub.Received |> Seq.cast diff --git a/tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs b/tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs index fab784ac9..979676639 100644 --- a/tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs +++ b/tests/FSharp.Data.GraphQL.Tests/SubscriptionTests.fs @@ -122,7 +122,7 @@ let ``Should be able to subscribe to sync field and get results``() = let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - let sub = Observer.create data + use sub = Observer.create data updateValue 1 "Updated value 1" sub.WaitForItem() sub.Received @@ -150,7 +150,7 @@ let ``Should be able to subscribe to tagged sync field and get results with expe let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - let sub = Observer.create data + use sub = Observer.create data updateValue 1 "Updated value 1" sub.WaitForItem() sub.Received @@ -170,7 +170,7 @@ let ``Should be able to subscribe to tagged sync field and do not get results wi let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - let sub = Observer.create data + use sub = Observer.create data updateValue 1 "Updated value 1" ensureThat (fun () -> Seq.isEmpty sub.Received) 50 "Should not get results with given tag" | _ -> failwith "Expected Stream GQLResponse" @@ -194,7 +194,7 @@ let ``Should be able to subscribe to async field and get results``() = let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - let sub = Observer.create data + use sub = Observer.create data updateValue 1 "Updated value 1" sub.WaitForItem() sub.Received @@ -222,7 +222,7 @@ let ``Should be able to subscribe to tagged async field and get results with exp let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - let sub = Observer.create data + use sub = Observer.create data updateValue 1 "Updated value 1" sub.WaitForItem() sub.Received @@ -242,7 +242,7 @@ let ``Should be able to subscribe to tagged async field and do not get results w let result = executor.AsyncExecute(query) |> sync match result with | Stream data -> - let sub = Observer.create data + use sub = Observer.create data updateValue 1 "Updated value 1" ensureThat (fun () -> Seq.isEmpty sub.Received) 50 "Should not get results with given tag" | _ -> failwith "Expected Stream GQLResponse" \ No newline at end of file From c6a6108f30da34790804509b212652e0bc40a8a6 Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 4 Feb 2019 16:51:32 -0200 Subject: [PATCH 31/32] Changing the build script to show result of each ran unit test --- build.fsx | 1 + 1 file changed, 1 insertion(+) diff --git a/build.fsx b/build.fsx index 443ef13ce..3f1e42214 100644 --- a/build.fsx +++ b/build.fsx @@ -210,6 +210,7 @@ Target "RunTests" (fun _ -> #if MONO Framework = "netcoreapp2.0" #endif + AdditionalArgs = [ "--no-build"; "-v=normal" ] Configuration = "Release" Project = "tests/FSharp.Data.GraphQL.Tests/FSharp.Data.GraphQL.Tests.fsproj" }) ) From 29f4d359e7dc07c07fcf94c20b2ccf477d2ec62b Mon Sep 17 00:00:00 2001 From: Ismael Carlos Velten Date: Mon, 4 Feb 2019 17:13:19 -0200 Subject: [PATCH 32/32] Hiding download progress of test database on build --- .../scripts/fetch-database.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh index 6c764ed92..7a0122d38 100644 --- a/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh +++ b/tests/FSharp.Data.GraphQL.Benchmarks.Sql/scripts/fetch-database.sh @@ -7,7 +7,7 @@ echo "Checking if path \"${DB_PATH}\" exists..." if [ ! -d "${DB_PATH}" ] then echo "Path not found. Downloading database files..." - wget -P "${PROJECT_PATH}" "http://files.grouplens.org/datasets/movielens/ml-latest.zip" + wget -q -P "${PROJECT_PATH}" "http://files.grouplens.org/datasets/movielens/ml-latest.zip" echo "Download finished. Unzipping database files..." unzip "$ZIP_FILE" echo "Unzipping done. Removing zip file..."