From 1e7743158fc8cf42d9e06016ec3064b32ad48dc1 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 06:59:25 +0700 Subject: [PATCH 01/19] Update target frameworks and SDK to .NET 10 - global.json: SDK 6.0.100 -> 10.0.100 - All projects: net6.0/net5.0 -> net10.0 - Package version: 6.0.0-local001 -> 10.0.0-local001 --- build/build.fsproj | 2 +- docsTool/docsTool.fsproj | 2 +- global.json | 2 +- src/EFCore.FSharp/EFCore.FSharp.fsproj | 4 ++-- tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build/build.fsproj b/build/build.fsproj index 1f50f0b..011c43f 100644 --- a/build/build.fsproj +++ b/build/build.fsproj @@ -2,7 +2,7 @@ Exe - net6.0 + net10.0 3390;$(WarnOn) false diff --git a/docsTool/docsTool.fsproj b/docsTool/docsTool.fsproj index 384076a..eab38de 100644 --- a/docsTool/docsTool.fsproj +++ b/docsTool/docsTool.fsproj @@ -2,7 +2,7 @@ Exe - net5.0 + net10.0 false diff --git a/global.json b/global.json index 1b8195c..1e7fdfa 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.100", + "version": "10.0.100", "rollForward": "latestMinor" } } diff --git a/src/EFCore.FSharp/EFCore.FSharp.fsproj b/src/EFCore.FSharp/EFCore.FSharp.fsproj index da7ea9c..bc2533c 100644 --- a/src/EFCore.FSharp/EFCore.FSharp.fsproj +++ b/src/EFCore.FSharp/EFCore.FSharp.fsproj @@ -1,7 +1,7 @@ - net6.0 + net10.0 EntityFrameworkCore.FSharp EntityFrameworkCore.FSharp Simon Reynolds, Brice Lambson et al. @@ -15,7 +15,7 @@ latest bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml true - 6.0.0-local001 + 10.0.0-local001 true diff --git a/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj b/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj index 6a0a124..e04c5b2 100644 --- a/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj +++ b/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj @@ -2,7 +2,7 @@ Exe - net6.0 + net10.0 EntityFrameworkCore.FSharp.Tests EntityFrameworkCore.FSharp.Tests false From 94c6fba82572a6aba00c2d538223c461a00101bb Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 06:59:35 +0700 Subject: [PATCH 02/19] Update CI workflow for .NET 10 - actions/checkout v2 -> v4 - actions/setup-dotnet v1.9.0 -> v4 - dotnet-version: 6.x -> 10.x - Rename "Setup .NET Core SDK" to "Setup .NET SDK" - Remove obsolete DOTNET_ROOT workaround comments --- .github/workflows/build.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f7b79e1..96e3847 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,12 +14,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 # Not specifying a version will attempt to install via global.json - - name: Setup .NET Core SDK - uses: actions/setup-dotnet@v1.9.0 + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4 with: - dotnet-version: '6.x' + dotnet-version: '10.x' - name: Build if: runner.os != 'Windows' @@ -27,13 +27,9 @@ jobs: chmod +x ./build.sh ./build.sh env: - # Work around https://github.com/actions/setup-dotnet/issues/29 - #DOTNET_ROOT: ${{ runner.tool_cache }}/dncs/${{ matrix.dotnet }}/x64 CI: true - name: Build if: runner.os == 'Windows' run: ./build.cmd env: - # Work around https://github.com/actions/setup-dotnet/issues/29 - #DOTNET_ROOT: ${{ runner.tool_cache }}/dncs/${{ matrix.dotnet }}/x64 CI: true From 414cdd9e36a39749c2b8ee5e9a5e874ae4892fa7 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 06:59:46 +0700 Subject: [PATCH 03/19] Update tools and dependencies for .NET 10 dotnet-tools.json: - paket: 6.0.13 -> 10.3.1 - fantomas-tool 4.5.6 -> fantomas 6.3.15 - reportgenerator: 4.2.15 -> 5.4.1 paket.dependencies: - FSharp.Core: 6.0.1 -> 9.0.100 - Microsoft.EntityFrameworkCore.*: ~> 6.0.0 -> ~> 10.0.0 - FSharp.Compiler.Service: 41.0.1 -> 43.9.100 - FAKE: 5.20.4 -> 6.1.4 - Octokit: 0.48 -> >= 13.0.1 - Microsoft.NET.Test.Sdk: 17.0.0 -> 17.12.0 --- .config/dotnet-tools.json | 10 +- .paket/Paket.Restore.targets | 1011 ++++++----- paket.dependencies | 60 +- paket.lock | 3288 +++++++++++----------------------- 4 files changed, 1549 insertions(+), 2820 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index ee82c57..3acf436 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -9,13 +9,13 @@ ] }, "dotnet-reportgenerator-globaltool": { - "version": "4.2.15", + "version": "5.4.1", "commands": [ "reportgenerator" ] }, "paket": { - "version": "6.0.13", + "version": "10.3.1", "commands": [ "paket" ] @@ -32,10 +32,10 @@ "fsharp-analyzers" ] }, - "fantomas-tool": { - "version": "4.5.6", + "fantomas": { + "version": "6.3.15", "commands": [ - "fantomas" + "fantomas" ] } } diff --git a/.paket/Paket.Restore.targets b/.paket/Paket.Restore.targets index 4deb15b..8f48b93 100644 --- a/.paket/Paket.Restore.targets +++ b/.paket/Paket.Restore.targets @@ -1,322 +1,339 @@ - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - $(MSBuildVersion) - 15.0.0 - false - true - - true - $(MSBuildThisFileDirectory) - $(MSBuildThisFileDirectory)..\ - $(PaketRootPath)paket-files\paket.restore.cached - $(PaketRootPath)paket.lock - classic - proj - assembly - native - /Library/Frameworks/Mono.framework/Commands/mono - mono - - - $(PaketRootPath)paket.bootstrapper.exe - $(PaketToolsPath)paket.bootstrapper.exe - $([System.IO.Path]::GetDirectoryName("$(PaketBootStrapperExePath)"))\ - - "$(PaketBootStrapperExePath)" - $(MonoPath) --runtime=v4.0.30319 "$(PaketBootStrapperExePath)" - - - - - true - true - - - True - - - False - - $(BaseIntermediateOutputPath.TrimEnd('\').TrimEnd('\/')) - - - - - - - - - $(PaketRootPath)paket - $(PaketToolsPath)paket - - - - - - $(PaketRootPath)paket.exe - $(PaketToolsPath)paket.exe - - - - - - <_DotnetToolsJson Condition="Exists('$(PaketRootPath)/.config/dotnet-tools.json')">$([System.IO.File]::ReadAllText("$(PaketRootPath)/.config/dotnet-tools.json")) - <_ConfigContainsPaket Condition=" '$(_DotnetToolsJson)' != ''">$(_DotnetToolsJson.Contains('"paket"')) - <_ConfigContainsPaket Condition=" '$(_ConfigContainsPaket)' == ''">false - - - - - - - - - - - <_PaketCommand>dotnet paket - - - - - - $(PaketToolsPath)paket - $(PaketBootStrapperExeDir)paket - - - paket - - - - - <_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)")) - <_PaketCommand Condition=" '$(_PaketCommand)' == '' AND '$(_PaketExeExtension)' == '.dll' ">dotnet "$(PaketExePath)" - <_PaketCommand Condition=" '$(_PaketCommand)' == '' AND '$(OS)' != 'Windows_NT' AND '$(_PaketExeExtension)' == '.exe' ">$(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" - <_PaketCommand Condition=" '$(_PaketCommand)' == '' ">"$(PaketExePath)" - - - - - - - - - - - - - - - - - - - - - true - $(NoWarn);NU1603;NU1604;NU1605;NU1608 - false - true - - - - - - - - - $([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)')) - - - - - - - $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[0].Replace(`"`, ``).Replace(` `, ``)) - $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[1].Replace(`"`, ``).Replace(` `, ``)) - - - - - %(PaketRestoreCachedKeyValue.Value) - %(PaketRestoreCachedKeyValue.Value) - - - - - true - false - true - - - + + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + $(MSBuildVersion) + 15.0.0 + false + true + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + $(PaketRootPath)paket-files\paket.restore.cached + $(PaketRootPath)paket.lock + classic + proj + assembly + native + /Library/Frameworks/Mono.framework/Commands/mono + mono + + + $(PaketRootPath)paket.bootstrapper.exe + $(PaketToolsPath)paket.bootstrapper.exe + $([System.IO.Path]::GetDirectoryName("$(PaketBootStrapperExePath)"))\ + + "$(PaketBootStrapperExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketBootStrapperExePath)" + + + + + true + true + + + True + + + False + + $(BaseIntermediateOutputPath.TrimEnd('\').TrimEnd('\/')) + + + + + + + + + $(PaketRootPath)paket + $(PaketToolsPath)paket + + + + + + $(PaketRootPath)paket.exe + $(PaketToolsPath)paket.exe + + + + + + <_DotnetToolsJson Condition="Exists('$(PaketRootPath)/.config/dotnet-tools.json')">$([System.IO.File]::ReadAllText("$(PaketRootPath)/.config/dotnet-tools.json")) + <_ConfigContainsPaket Condition=" '$(_DotnetToolsJson)' != ''">$(_DotnetToolsJson.Contains('"paket"')) + <_ConfigContainsPaket Condition=" '$(_ConfigContainsPaket)' == ''">false + + + + + + + + + + + <_PaketCommand>dotnet paket + + + + + + $(PaketToolsPath)paket + $(PaketBootStrapperExeDir)paket + + + paket + + + + + <_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)")) + <_PaketCommand Condition=" '$(_PaketCommand)' == '' AND '$(_PaketExeExtension)' == '.dll' ">dotnet "$(PaketExePath)" + <_PaketCommand Condition=" '$(_PaketCommand)' == '' AND '$(OS)' != 'Windows_NT' AND '$(_PaketExeExtension)' == '.exe' ">$(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" + <_PaketCommand Condition=" '$(_PaketCommand)' == '' ">"$(PaketExePath)" + + + + + + + + + + + + + + + + + + + + + true + $(NoWarn);NU1603;NU1604;NU1605;NU1608 + false + true + + + + + + + + + $([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)')) + + + + + + + $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[0].Replace(`"`, ``).Replace(` `, ``)) + $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[1].Replace(`"`, ``).Replace(` `, ``)) + + + + + %(PaketRestoreCachedKeyValue.Value) + %(PaketRestoreCachedKeyValue.Value) + + + + + true + false + true + + + - - true - - - - - - - - - - - - - - - - - - - $(PaketIntermediateOutputPath)\$(MSBuildProjectFile).paket.references.cached - - $(MSBuildProjectFullPath).paket.references - - $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references - - $(MSBuildProjectDirectory)\paket.references - - false - true - true - references-file-or-cache-not-found - - - - - $([System.IO.File]::ReadAllText('$(PaketReferencesCachedFilePath)')) - $([System.IO.File]::ReadAllText('$(PaketOriginalReferencesFilePath)')) - references-file - false - - - - - false - - - - - true - target-framework '$(TargetFramework)' or '$(TargetFrameworks)' files @(PaketResolvedFilePaths) - - - - - - - - - - - false - true - - - - - - - - - - - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[6]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[7]) - - - %(PaketReferencesFileLinesInfo.PackageVersion) - All - runtime - $(ExcludeAssets);contentFiles - $(ExcludeAssets);build;buildMultitargeting;buildTransitive - true - true - - - - - $(PaketIntermediateOutputPath)/$(MSBuildProjectFile).paket.clitools - - - - - - - - - $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[0]) - $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[1]) - - - %(PaketCliToolFileLinesInfo.PackageVersion) - - - - + + + + + + + + + + + + + + + + $(PaketIntermediateOutputPath)\$(MSBuildProjectFile).paket.references.cached + + $(MSBuildProjectFullPath).paket.references + + $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references + + $(MSBuildProjectDirectory)\paket.references + + false + true + true + references-file-or-cache-not-found + + + + + $([System.IO.File]::ReadAllText('$(PaketReferencesCachedFilePath)')) + $([System.IO.File]::ReadAllText('$(PaketOriginalReferencesFilePath)')) + references-file + false + + + + + false + + + + + true + target-framework '$(TargetFramework)' or '$(TargetFrameworks)' files @(PaketResolvedFilePaths) + + + + + + + + + + + false + true + + + + + + + + + + + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[2]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[6]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[7]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[8]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[9]) + + + %(PaketReferencesFileLinesInfo.PackageVersion) + All + runtime + $(ExcludeAssets);contentFiles + $(ExcludeAssets);build;buildMultitargeting;buildTransitive + %(PaketReferencesFileLinesInfo.Aliases) + true + true + + + %(PaketReferencesFileLinesInfo.PackageVersion) + + + + + $(PaketIntermediateOutputPath)/$(MSBuildProjectFile).paket.clitools + + + + + + + + + $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[0]) + $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[1]) + + + %(PaketCliToolFileLinesInfo.PackageVersion) + + + + - - - - - false - - - - - - <_NuspecFilesNewLocation Include="$(PaketIntermediateOutputPath)\$(Configuration)\*.nuspec"/> - - - - - - $(MSBuildProjectDirectory)/$(MSBuildProjectFile) - true - false - true - false - true - false - true - false - true - false - true - $(PaketIntermediateOutputPath)\$(Configuration) - $(PaketIntermediateOutputPath) - - - - <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.$(PackageVersion.Split(`+`)[0]).nuspec"/> - - - - - - - - - + + + + + false + + + + + + <_NuspecFilesNewLocation Include="$(PaketIntermediateOutputPath)\$(Configuration)\*.nuspec"/> + + + + + + $(MSBuildProjectDirectory)/$(MSBuildProjectFile) + true + false + true + false + true + false + true + false + true + false + true + $(PaketIntermediateOutputPath)\$(Configuration) + $(PaketIntermediateOutputPath) + + + + <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.$(PackageVersion.Split(`+`)[0]).nuspec"/> + + + + + + + + <_DefinedConditionProperties Include="@(_ConditionProperties)" Condition="$(%(Identity)) == 'true'"/> + + + <_ConditionsParameter> + <_ConditionsParameter Condition="@(_DefinedConditionProperties) != ''">--conditions @(_DefinedConditionProperties) + + + + + + + - - - - - - - - - + + + + + + + + + diff --git a/paket.dependencies b/paket.dependencies index 0bf68e9..db63b99 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -3,31 +3,31 @@ group Src source https://api.nuget.org/v3/index.json storage: none - nuget FSharp.Core 6.0.1 + nuget FSharp.Core 9.0.100 nuget Microsoft.SourceLink.GitHub 1.0.0 copy_local: true - nuget Microsoft.EntityFrameworkCore.Design ~> 6.0.0 + nuget Microsoft.EntityFrameworkCore.Design ~> 10.0.0 group Tests source https://www.nuget.org/api/v2 source https://api.nuget.org/v3/index.json storage: none - nuget System.Collections.Immutable >= 6.0.0 + nuget System.Collections.Immutable >= 10.0.0 - nuget FSharp.Core 6.0.1 + nuget FSharp.Core 9.0.100 nuget Microsoft.SourceLink.GitHub 1.0.0 copy_local: true nuget Expecto 9.0.2 nuget YoloDev.Expecto.TestSdk 0.12.10 - nuget Microsoft.NET.Test.Sdk 17.0.0 + nuget Microsoft.NET.Test.Sdk 17.12.0 nuget altcover ~> 8.2.828 - nuget Microsoft.EntityFrameworkCore.Design ~> 6.0.0 - nuget Microsoft.EntityFrameworkCore.InMemory ~> 6.0.0 - nuget Microsoft.EntityFrameworkCore.Relational ~> 6.0.0 - nuget Microsoft.EntityFrameworkCore.Sqlite ~> 6.0.0 - nuget Microsoft.EntityFrameworkCore.SqlServer ~> 6.0.0 - nuget Microsoft.EntityFrameworkCore.Specification.Tests ~> 6.0.0 - nuget FSharp.Compiler.Service 41.0.1 + nuget Microsoft.EntityFrameworkCore.Design ~> 10.0.0 + nuget Microsoft.EntityFrameworkCore.InMemory ~> 10.0.0 + nuget Microsoft.EntityFrameworkCore.Relational ~> 10.0.0 + nuget Microsoft.EntityFrameworkCore.Sqlite ~> 10.0.0 + nuget Microsoft.EntityFrameworkCore.SqlServer ~> 10.0.0 + nuget Microsoft.EntityFrameworkCore.Specification.Tests ~> 10.0.0 + nuget FSharp.Compiler.Service 43.9.100 nuget Microsoft.CodeAnalysis >= 3.8.0 nuget NetTopologySuite.IO.SqlServerBytes 2.0.0 nuget System.Runtime.Numerics @@ -38,34 +38,34 @@ group Build storage: none source https://www.nuget.org/api/v2 source https://api.nuget.org/v3/index.json - nuget Fake.IO.FileSystem 5.20.4 - nuget Fake.Core.Target 5.20.4 - nuget Fake.Core.ReleaseNotes 5.20.4 - nuget FAKE.Core.Environment 5.20.4 - nuget Fake.DotNet.Cli 5.20.4 - nuget FAKE.Core.Process 5.20.4 - nuget Fake.DotNet.AssemblyInfoFile 5.20.4 - nuget Fake.Tools.Git 5.20.4 - nuget Fake.DotNet.Paket 5.20.4 - nuget Fake.Api.GitHub 5.20.4 - nuget Fake.BuildServer.GitHubActions 5.20.4 + nuget Fake.IO.FileSystem 6.1.4 + nuget Fake.Core.Target 6.1.4 + nuget Fake.Core.ReleaseNotes 6.1.4 + nuget FAKE.Core.Environment 6.1.4 + nuget Fake.DotNet.Cli 6.1.4 + nuget FAKE.Core.Process 6.1.4 + nuget Fake.DotNet.AssemblyInfoFile 6.1.4 + nuget Fake.Tools.Git 6.1.4 + nuget Fake.DotNet.Paket 6.1.4 + nuget Fake.Api.GitHub 6.1.4 + nuget Fake.BuildServer.GitHubActions 6.1.4 nuget Argu - nuget Octokit 0.48 + nuget Octokit >= 13.0.1 group Docs storage: none source https://www.nuget.org/api/v2 source https://api.nuget.org/v3/index.json nuget Argu - nuget FSharp.Compiler.Service 34.1.0 - nuget FSharp.Core ~> 4.6 - nuget Fake.IO.FileSystem 5.20.4 - nuget FAKE.Core.Environment 5.20.4 - nuget Fake.DotNet.Cli 5.20.4 + nuget FSharp.Compiler.Service 43.9.100 + nuget FSharp.Core ~> 9.0 + nuget Fake.IO.FileSystem 6.1.4 + nuget FAKE.Core.Environment 6.1.4 + nuget Fake.DotNet.Cli 6.1.4 nuget FSharp.Formatting 4.0.0-rc1 nuget FSharp.Literate 4.0.0-rc1 nuget Fable.React - nuget Microsoft.EntityFrameworkCore.Sqlite ~> 5.0.11 + nuget Microsoft.EntityFrameworkCore.Sqlite ~> 10.0.0 group Analyzers source https://www.nuget.org/api/v2 diff --git a/paket.lock b/paket.lock index 10c3470..2db4f74 100644 --- a/paket.lock +++ b/paket.lock @@ -6,2416 +6,1128 @@ NUGET BinaryDefense.FSharp.Analyzers.Hashing (0.2.2) FSharp.Analyzers.SDK (>= 0.8) - restriction: >= net5.0 FSharp.Core (>= 5.0.1) - restriction: >= net5.0 - FSharp.Analyzers.SDK (0.8) - restriction: >= net5.0 - FSharp.Compiler.Service (>= 39.0) - restriction: >= net5.0 - FSharp.Core (>= 5.0.1) - restriction: >= net5.0 - McMaster.NETCore.Plugins (>= 1.3.1) - restriction: >= net5.0 - FSharp.Compiler.Service (39.0) - restriction: >= net5.0 - FSharp.Core (5.0.1) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Tasks.Core (>= 16.6) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.6) - restriction: >= netstandard2.0 - System.Buffers (>= 4.5.1) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Diagnostics.Process (>= 4.3) - restriction: >= netstandard2.0 - System.Diagnostics.TraceSource (>= 4.3) - restriction: >= netstandard2.0 - System.Linq.Expressions (>= 4.3) - restriction: >= netstandard2.0 - System.Linq.Queryable (>= 4.3) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 - System.Net.Requests (>= 4.3) - restriction: >= netstandard2.0 - System.Net.Security (>= 4.3) - restriction: >= netstandard2.0 - System.Reflection.Emit (>= 4.3) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 5.0) - restriction: >= netstandard2.0 - System.Reflection.TypeExtensions (>= 4.3) - restriction: >= netstandard2.0 - System.Runtime (>= 4.3) - restriction: >= netstandard2.0 - System.Runtime.InteropServices (>= 4.3) - restriction: >= netstandard2.0 - System.Runtime.Loader (>= 4.3) - restriction: >= netstandard2.0 - System.Security.Claims (>= 4.3) - restriction: >= netstandard2.0 - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: >= netstandard2.0 - System.Security.Principal (>= 4.3) - restriction: >= netstandard2.0 - System.Threading.Tasks.Parallel (>= 4.3) - restriction: >= netstandard2.0 - System.Threading.Thread (>= 4.3) - restriction: >= netstandard2.0 - System.Threading.ThreadPool (>= 4.3) - restriction: >= netstandard2.0 - FSharp.Core (5.0.1) - restriction: >= net5.0 - McMaster.NETCore.Plugins (1.3.1) - restriction: >= net5.0 - Microsoft.DotNet.PlatformAbstractions (>= 3.1) - restriction: >= netcoreapp2.0 - Microsoft.Extensions.DependencyModel (>= 3.1) - restriction: >= netcoreapp2.0 - Microsoft.Build.Framework (16.9) - restriction: >= net5.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (16.9) - restriction: >= net5.0 - Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.9) - restriction: >= netstandard2.0 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) - System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net472) (>= netstandard2.0) - System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 - System.Runtime.InteropServices (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (16.9) - restriction: >= net5.0 - Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.DotNet.PlatformAbstractions (3.1.6) - restriction: >= net5.0 - Microsoft.Extensions.DependencyModel (5.0) - restriction: >= net5.0 - Microsoft.NETCore.Platforms (5.0.2) - restriction: >= net5.0 - Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.2)) (&& (< monoandroid) (>= net5.0) (< netstandard1.3)) (&& (< monoandroid) (>= net5.0) (< netstandard1.5)) (&& (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.Win32.Primitives (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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 (5.0) - restriction: >= net5.0 - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= monotouch) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (5.0) - restriction: && (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (4.3.1) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Http (4.3.1) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Security (4.3.1) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Buffers (4.5.1) - restriction: >= net5.0 - System.CodeDom (5.0) - restriction: >= net5.0 - System.Collections (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - 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)) - 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)) - System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Collections.Immutable (5.0) - restriction: >= net5.0 - System.Diagnostics.Debug (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - 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)) - 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)) - System.Diagnostics.DiagnosticSource (5.0.1) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Diagnostics.Process (4.3) - restriction: >= net5.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.TraceSource (4.3) - restriction: >= net5.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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) - 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.Diagnostics.Tracing (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - 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)) - 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)) - System.Drawing.Common (5.0.2) - restriction: >= net5.0 - Microsoft.Win32.SystemEvents (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Formats.Asn1 (5.0) - restriction: >= net5.0 - System.Globalization (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - 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)) - 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)) - System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.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.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) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - 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)) - 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)) - System.IO.FileSystem (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq.Expressions (4.3) - restriction: >= net5.0 - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq.Queryable (4.3) - restriction: >= net5.0 - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Memory (4.5.4) - restriction: >= net5.0 - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Net.Http (4.3.4) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) - 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)) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< 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)) - System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.1)) (&& (< monoandroid) (>= net5.0) (< netstandard1.3)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.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)) - Microsoft.NETCore.Targets (>= 1.1.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)) - System.Runtime (>= 4.3.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)) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Requests (4.3) - restriction: >= net5.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 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)) - System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 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)) - System.Net.WebHeaderCollection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Net.Security (4.3.2) - restriction: >= net5.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) - runtime.native.System.Net.Security (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< 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.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.WebHeaderCollection (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 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.ObjectModel (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.2)) (&& (< monoandroid) (>= net5.0) (< netstandard1.3)) (&& (< monoandroid) (>= net5.0) (< netstandard1.5)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - 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)) - 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)) - System.Reflection.Emit (4.7) - restriction: >= net5.0 - System.Reflection.Emit.ILGeneration (4.7) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.Lightweight (4.7) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 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.Reflection.Metadata (5.0) - restriction: >= net5.0 - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.2)) (&& (< monoandroid) (>= net5.0) (< netstandard1.3)) (&& (< monoandroid) (>= net5.0) (< netstandard1.5)) (&& (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - 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.Reflection.TypeExtensions (4.7) - restriction: >= net5.0 - System.Resources.Extensions (5.0) - restriction: >= net5.0 - System.Resources.ResourceManager (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 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.Runtime (4.3.1) - restriction: >= net5.0 - Microsoft.NETCore.Platforms (>= 1.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)) - Microsoft.NETCore.Targets (>= 1.1.3) - 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)) - System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (>= monoandroid) (>= net5.0) (< netcoreapp2.0)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.0)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1)) (&& (< monoandroid) (>= net5.0) (< netstandard1.1)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0)) (&& (>= monotouch) (>= net5.0)) (&& (>= net45) (>= net5.0) (< netstandard2.0)) (&& (>= net461) (>= net5.0)) (&& (>= net5.0) (< netstandard1.1) (>= win8)) (&& (>= net5.0) (< netstandard2.0) (>= wpa81)) (&& (>= net5.0) (>= uap10.1)) (&& (>= net5.0) (>= xamarinios)) (&& (>= net5.0) (>= xamarinmac)) (&& (>= net5.0) (>= xamarintvos)) (&& (>= net5.0) (>= xamarinwatchos)) - System.Runtime.Extensions (4.3.1) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.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)) - Microsoft.NETCore.Targets (>= 1.1.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)) - System.Runtime (>= 4.3.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)) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.5)) (&& (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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: >= net5.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= 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) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= 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) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= 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) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= 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) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= 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) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Loader (4.3) - restriction: >= net5.0 - 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) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.AccessControl (5.0) - restriction: >= net5.0 - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Claims (4.3) - restriction: >= net5.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) - 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.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: >= net5.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (>= net46) (>= net5.0)) (&& (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Formats.Asn1 (>= 5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.OpenSsl (5.0) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Cryptography.Pkcs (5.0.1) - restriction: >= net5.0 - System.Formats.Asn1 (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0) (< netstandard2.1)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.1)) (>= monotouch) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization.Calendars (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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) - System.Security.Cryptography.Xml (5.0) - restriction: >= net5.0 - System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (5.0) - restriction: >= net5.0 - System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Principal (4.3) - restriction: >= net5.0 - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Principal.Windows (5.0) - restriction: >= net5.0 - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Text.Encoding.CodePages (5.0) - restriction: >= net5.0 - Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net5.0) - System.Text.Encoding.Extensions (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - 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)) - 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)) - 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)) - System.Threading (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - 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)) - System.Threading.Tasks (4.3) - restriction: && (< monoandroid) (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - 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)) - 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)) - System.Threading.Tasks.Dataflow (5.0) - restriction: >= net5.0 - System.Threading.Tasks.Parallel (4.3) - restriction: >= net5.0 - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Threading.Thread (4.3) - restriction: >= net5.0 - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: >= net5.0 - 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.Windows.Extensions (5.0) - restriction: >= net5.0 - System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 + FSharp.Analyzers.SDK (0.16) - restriction: >= net5.0 + FSharp.Compiler.Service (>= 43.7.400) - restriction: >= net6.0 + FSharp.Core (>= 7.0.400) - restriction: >= net6.0 + McMaster.NETCore.Plugins (>= 1.4) - restriction: >= net6.0 + FSharp.Compiler.Service (43.12.201) - restriction: >= net6.0 + FSharp.Core (10.1.201) - restriction: >= netstandard2.0 + System.Buffers (>= 4.6) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 9.0) - restriction: >= netstandard2.0 + System.Diagnostics.DiagnosticSource (>= 9.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.6) - restriction: >= netstandard2.0 + System.Reflection.Emit (>= 4.7) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 9.0) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: >= netstandard2.0 + FSharp.Core (10.1.201) - restriction: >= net5.0 + McMaster.NETCore.Plugins (2.0) - restriction: >= net6.0 + System.Buffers (4.6.1) - restriction: >= net6.0 + System.Collections.Immutable (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net6.0) (&& (>= net8.0) (< net9.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Diagnostics.DiagnosticSource (10.0.5) - restriction: >= net6.0 + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (4.6.3) - restriction: >= net6.0 + System.Reflection.Emit (4.7) - restriction: >= net6.0 + System.Reflection.Metadata (10.0.5) - restriction: >= net6.0 + System.Collections.Immutable (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: >= net6.0 GROUP Build STORAGE: NONE NUGET remote: https://www.nuget.org/api/v2 - Argu (6.1.1) - FSharp.Core (>= 4.3.2) - restriction: >= netstandard2.0 + Argu (6.2.5) + FSharp.Core (>= 6.0) - restriction: >= netstandard2.0 System.Configuration.ConfigurationManager (>= 4.4) - restriction: >= netstandard2.0 BlackFox.VsWhere (1.1) - restriction: >= netstandard2.0 FSharp.Core (>= 4.0.0.1) - restriction: >= net45 FSharp.Core (>= 4.2.3) - restriction: && (< net45) (>= netstandard2.0) Microsoft.Win32.Registry (>= 4.7) - restriction: && (< net45) (>= netstandard2.0) - Fake.Api.GitHub (5.20.4) - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Octokit (>= 0.48) - restriction: >= netstandard2.0 - Fake.BuildServer.GitHubActions (5.20.4) - Fake.Core.Environment (>= 5.20.4) - restriction: || (>= net462) (>= netstandard2.0) - Fake.Core.Trace (>= 5.20.4) - restriction: || (>= net462) (>= netstandard2.0) - Fake.IO.FileSystem (>= 5.20.4) - restriction: || (>= net462) (>= netstandard2.0) - FSharp.Core (>= 4.7.2) - restriction: && (< net462) (>= netstandard2.0) - Fake.Core.CommandLineParsing (5.20.4) - restriction: >= netstandard2.0 + Fake.Api.GitHub (6.1.4) + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Octokit (>= 13.0.1) - restriction: >= netstandard2.0 + Fake.BuildServer.GitHubActions (6.1.4) + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.CommandLineParsing (6.1.4) - restriction: >= netstandard2.0 FParsec (>= 1.1.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Context (5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Environment (5.20.4) - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Process (5.20.4) - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 1.7.1) - restriction: >= netstandard2.0 - Fake.Core.ReleaseNotes (5.20.4) - Fake.Core.SemVer (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.SemVer (5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.String (5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Target (5.20.4) - Fake.Core.CommandLineParsing (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Control.Reactive (>= 4.4.2) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Tasks (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Trace (5.20.4) - restriction: || (>= net462) (>= netstandard2.0) - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Xml (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.DotNet.AssemblyInfoFile (5.20.4) - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (5.20.4) - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Context (6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Environment (6.1.4) + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Process (6.1.4) + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 8.0) - restriction: >= netstandard2.0 + Fake.Core.ReleaseNotes (6.1.4) + Fake.Core.SemVer (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.SemVer (6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.String (6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Target (6.1.4) + Fake.Core.CommandLineParsing (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Control.Reactive (>= 5.0.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Tasks (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Trace (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Xml (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.DotNet.AssemblyInfoFile (6.1.4) + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.DotNet.Cli (6.1.4) + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 Mono.Posix.NETStandard (>= 1.0) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (5.20.4) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (6.1.4) - restriction: >= netstandard2.0 BlackFox.VsWhere (>= 1.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (>= 2.1.176) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Tasks (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Xml (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Net.Http (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 - NuGet.Protocol (>= 5.6) - restriction: >= netstandard2.0 - Fake.DotNet.Paket (5.20.4) - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (5.20.4) - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Net.Http (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Tools.Git (5.20.4) - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (>= 2.1.815) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Tasks (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Xml (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Net.Http (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Newtonsoft.Json (>= 13.0.3) - restriction: >= netstandard2.0 + NuGet.Protocol (>= 6.12.4) - restriction: >= netstandard2.0 + Fake.DotNet.Paket (6.1.4) + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.DotNet.Cli (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (6.1.4) + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Net.Http (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Tools.Git (6.1.4) + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 FParsec (1.1.1) - restriction: >= netstandard2.0 FSharp.Core (>= 4.3.4) - restriction: || (>= net45) (>= netstandard2.0) System.ValueTuple (>= 4.4) - restriction: >= net45 - FSharp.Control.Reactive (5.0.2) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - System.Reactive (>= 5.0) - restriction: >= netstandard2.0 - FSharp.Core (5.0.1) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (< netstandard2.0) (>= xamarintvos)) (&& (>= netcoreapp2.1) (< netstandard2.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.1) (>= uap10.1)) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Build (16.9) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.9) - restriction: || (>= net472) (>= netcoreapp2.1) - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: >= netcoreapp2.1 - System.Collections.Immutable (>= 5.0) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Memory (>= 4.5.4) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Reflection.Metadata (>= 1.6) - restriction: >= netcoreapp2.1 - System.Security.Principal.Windows (>= 4.7) - restriction: >= netcoreapp2.1 - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: >= netcoreapp2.1 - System.Text.Json (>= 4.7) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (>= net472) (>= netcoreapp2.1) - Microsoft.Build.Framework (16.9) - restriction: >= netstandard2.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (16.9) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.9) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) - System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net472) (>= netstandard2.0) - System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 - System.Runtime.InteropServices (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (16.9) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.9) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.NETCore.Platforms (5.0.2) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net5.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.VisualStudio.Setup.Configuration.Interop (1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) + FSharp.Control.Reactive (6.1.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.7) - restriction: >= netstandard2.0 + System.Reactive (>= 6.0.1) - restriction: >= netstandard2.0 + FSharp.Core (10.1.201) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (10.0.5) - restriction: >= net472 + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Bcl.Cryptography (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net462) (>= net8.0)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) + System.Formats.Asn1 (>= 10.0.5) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Build.Framework (18.4) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 10.0.1) - restriction: >= net472 + System.Memory (>= 4.6.3) - restriction: >= net472 + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: >= net472 + System.Text.Json (>= 10.0.1) - restriction: >= net472 + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: >= net472 + System.ValueTuple (>= 4.6.1) - restriction: >= net472 + Microsoft.Build.Utilities.Core (18.4) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 18.4) - restriction: >= netstandard2.0 + Microsoft.IO.Redist (>= 6.1) - restriction: >= net472 + Microsoft.NET.StringTools (>= 18.4) - restriction: || (>= net10.0) (>= net472) + System.Collections.Immutable (>= 10.0.1) - restriction: >= net472 + System.Configuration.ConfigurationManager (>= 10.0.1) - restriction: || (>= net10.0) (>= net472) + System.Diagnostics.EventLog (>= 10.0.1) - restriction: >= net10.0 + System.Memory (>= 4.6.3) - restriction: >= net472 + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: >= net472 + System.Security.Cryptography.ProtectedData (>= 10.0.1) - restriction: >= net10.0 + System.Text.Json (>= 10.0.1) - restriction: >= net472 + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: >= net472 + System.ValueTuple (>= 4.6.1) - restriction: >= net472 + Microsoft.IO.Redist (6.1.3) - restriction: >= net472 + System.Buffers (>= 4.6.1) - restriction: >= net472 + System.Memory (>= 4.6.3) - restriction: >= net472 + Microsoft.NET.StringTools (18.4) - restriction: || (>= net10.0) (>= net472) + System.Memory (>= 4.6.3) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (>= net472) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (>= net472) + Microsoft.NETCore.Platforms (7.0.4) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) + Microsoft.Win32.Registry (5.0) - restriction: && (< net45) (>= netstandard2.0) System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (2.1.500) - restriction: >= netstandard2.0 - Microsoft.Build (>= 16.4) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.4) - restriction: >= netstandard2.0 - Microsoft.Build.Tasks.Core (>= 16.4) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.4) - restriction: >= netstandard2.0 - Newtonsoft.Json (13.0.1) - restriction: >= netstandard2.0 - NuGet.Common (5.9.1) - restriction: >= netstandard2.0 - NuGet.Frameworks (>= 5.9.1) - restriction: || (>= net45) (>= netstandard2.0) - NuGet.Configuration (5.9.1) - restriction: >= netstandard2.0 - NuGet.Common (>= 5.9.1) - restriction: || (>= net45) (>= netstandard2.0) - System.Security.Cryptography.ProtectedData (>= 4.4) - restriction: && (< net45) (>= netstandard2.0) - NuGet.Frameworks (5.9.1) - restriction: >= netstandard2.0 - NuGet.Packaging (5.9.1) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 9.0.1) - restriction: >= netstandard2.0 - NuGet.Configuration (>= 5.9.1) - restriction: >= netstandard2.0 - NuGet.Versioning (>= 5.9.1) - restriction: >= netstandard2.0 - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) - System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) - NuGet.Protocol (5.9.1) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 5.9.1) - restriction: >= netstandard2.0 - NuGet.Versioning (5.9.1) - restriction: >= netstandard2.0 - Octokit (0.48) - System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard2.0)) (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (< netstandard2.0) (>= xamarintvos)) (&& (>= netcoreapp2.1) (< netstandard2.0) (>= xamarinwatchos)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.CodeDom (5.0) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (5.0) - restriction: || (&& (>= net461) (>= netcoreapp2.1)) (&& (< net5.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netstandard1.1)) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) - System.Configuration.ConfigurationManager (5.0) - restriction: >= netstandard2.0 - System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 - Microsoft.Win32.SystemEvents (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Formats.Asn1 (5.0) - restriction: || (&& (>= monoandroid) (>= net5.0) (< netstandard1.3)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= monotouch) (>= net5.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (>= net5.0) (< netcoreapp2.0)) (&& (>= net5.0) (>= uap10.1)) (&& (>= net5.0) (>= xamarintvos)) (&& (>= net5.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net5.0) (>= xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.5) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.4)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.4)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Memory (4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net5.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netstandard2.0)) (>= net472) (&& (>= net5.0) (>= uap10.1)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< 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) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Numerics.Vectors (>= 4.5) - restriction: >= net461 - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Numerics.Vectors (4.5) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Reactive (5.0) - restriction: >= netstandard2.0 - System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net472) (&& (< netcoreapp3.1) (>= netstandard2.0)) (>= uap10.1) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Metadata (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - System.Collections.Immutable (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - 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.Reflection.TypeExtensions (4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Resources.Extensions (5.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.5) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.4)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< net472) (>= netstandard2.0)) (&& (>= net462) (>= net5.0) (< netstandard1.4)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard2.0)) (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (>= net472) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (< netstandard2.0) (>= xamarintvos)) (&& (>= netcoreapp2.1) (< netstandard2.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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: && (< net472) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net462) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices.WindowsRuntime (4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.AccessControl (5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0)) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) - System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< net472) (>= netstandard2.0)) (>= net5.0) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (>= 5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< net462) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6)) (>= net47) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) - System.Security.Cryptography.Pkcs (5.0.1) - restriction: || (&& (>= monotouch) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Buffers (>= 4.5.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= monotouch) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.4)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net461) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net462) (>= net5.0) (< netstandard1.4)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) (&& (>= net47) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net47) (< netstandard1.6) (>= netstandard2.0)) - System.Security.Cryptography.ProtectedData (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Memory (>= 4.5.4) - restriction: && (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Xml (5.0) - restriction: && (< net472) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: && (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (5.0) - restriction: >= netstandard2.0 - System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + MSBuild.StructuredLogger (2.3.154) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.5) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 17.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 8.0) - restriction: && (< net10.0) (>= netstandard2.0) + System.Memory (>= 4.6) - restriction: && (< net10.0) (>= netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net10.0) (>= netstandard2.0) + Newtonsoft.Json (13.0.4) - restriction: >= netstandard2.0 + NuGet.Common (7.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Frameworks (>= 7.3) - restriction: || (>= net472) (>= net8.0) + System.Collections.Immutable (>= 8.0) - restriction: >= net472 + NuGet.Configuration (7.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Common (>= 7.3) - restriction: || (>= net472) (>= net8.0) + System.Security.Cryptography.ProtectedData (>= 8.0) - restriction: >= net8.0 + NuGet.Frameworks (7.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Packaging (7.3) - restriction: || (>= net472) (>= net8.0) + Newtonsoft.Json (>= 13.0.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Configuration (>= 7.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Versioning (>= 7.3) - restriction: || (>= net472) (>= net8.0) + System.Security.Cryptography.Pkcs (>= 8.0.1) - restriction: >= net8.0 + System.Text.Json (>= 8.0.5) - restriction: >= net472 + NuGet.Protocol (7.3) - restriction: >= netstandard2.0 + NuGet.Packaging (>= 7.3) - restriction: || (>= net472) (>= net8.0) + System.Text.Json (>= 8.0.5) - restriction: >= net472 + NuGet.Versioning (7.3) - restriction: || (>= net472) (>= net8.0) + Octokit (14.0) + System.Buffers (4.6.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net462) (>= netstandard2.0)) (>= net472) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Collections.Immutable (10.0.5) - restriction: >= netstandard2.0 + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Configuration.ConfigurationManager (10.0.5) - restriction: >= netstandard2.0 + System.Diagnostics.EventLog (>= 10.0.5) - restriction: >= net8.0 + System.Security.Cryptography.ProtectedData (>= 10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) + System.Diagnostics.EventLog (10.0.5) - restriction: >= net8.0 + System.Formats.Asn1 (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net462) (>= net8.0)) (&& (>= net462) (>= net9.0)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (>= net9.0) (< netstandard2.1)) + System.IO.Pipelines (10.0.5) - restriction: >= net472 + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (4.6.3) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net10.0) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net462) (>= netstandard2.0)) (>= net472) (&& (< net8.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (4.6.1) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Reactive (6.1) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net472) (&& (< net6.0) (>= netstandard2.0)) (>= uap10.1) + System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (&& (>= net462) (>= netstandard2.0)) (>= net472) (&& (< net8.0) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Security.AccessControl (6.0.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) + System.Security.Cryptography.Pkcs (10.0.5) - restriction: >= net8.0 + Microsoft.Bcl.Cryptography (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Formats.Asn1 (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (< net462) (>= netstandard2.0) (< netstandard2.1)) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) + System.Security.Cryptography.ProtectedData (10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) + System.Memory (>= 4.6.3) - restriction: && (< net462) (< net8.0) (>= netstandard2.0) + System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.5) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Text.Encoding.CodePages (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net5.0) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (< monoandroid) (< net5.0) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) - System.Text.Encodings.Web (5.0.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (< netstandard2.0) (>= xamarintvos)) (&& (>= netcoreapp2.1) (< netstandard2.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.1) (>= uap10.1)) - System.Buffers (>= 4.5.1) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (>= net461) - System.Memory (>= 4.5.4) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= uap10.1) - System.Text.Json (5.0.2) - restriction: || (>= net472) (>= netcoreapp2.1) - Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Numerics.Vectors (>= 4.5) - restriction: || (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - System.Text.Encodings.Web (>= 5.0.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.ValueTuple (>= 4.5) - restriction: >= net461 - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.5) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Threading.Tasks.Dataflow (5.0) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (< netcoreapp3.1) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) - System.ValueTuple (4.5) - restriction: || (&& (>= net45) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) - System.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 - System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 + System.Text.Encodings.Web (10.0.5) - restriction: >= net472 + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Text.Json (10.0.5) - restriction: >= net472 + Microsoft.Bcl.AsyncInterfaces (>= 10.0.5) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.IO.Pipelines (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Text.Encodings.Web (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.ValueTuple (>= 4.6.1) - restriction: >= net462 + System.Threading.Tasks.Extensions (4.6.3) - restriction: || (>= net472) (&& (< net6.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.ValueTuple (4.6.2) - restriction: || (&& (>= net45) (>= netstandard2.0)) (>= net472) GROUP Docs STORAGE: NONE NUGET remote: https://www.nuget.org/api/v2 - Argu (6.1.1) - FSharp.Core (>= 4.3.2) - restriction: >= netstandard2.0 + Argu (6.2.5) + FSharp.Core (>= 6.0) - restriction: >= netstandard2.0 System.Configuration.ConfigurationManager (>= 4.4) - restriction: >= netstandard2.0 BlackFox.VsWhere (1.1) - restriction: >= netstandard2.0 FSharp.Core (>= 4.0.0.1) - restriction: >= net45 FSharp.Core (>= 4.2.3) - restriction: && (< net45) (>= netstandard2.0) Microsoft.Win32.Registry (>= 4.7) - restriction: && (< net45) (>= netstandard2.0) - Fable.Browser.Blob (1.1) - restriction: >= netstandard2.0 - Fable.Core (>= 3.0) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.6.2) - restriction: >= netstandard2.0 - Fable.Browser.Dom (2.3) - restriction: >= netstandard2.0 - Fable.Browser.Blob (>= 1.1) - restriction: >= netstandard2.0 - Fable.Browser.Event (>= 1.3) - restriction: >= netstandard2.0 - Fable.Browser.WebStorage (>= 1.0) - restriction: >= netstandard2.0 - Fable.Core (>= 3.0) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.Browser.Event (1.3) - restriction: >= netstandard2.0 - Fable.Browser.Gamepad (>= 1.0) - restriction: >= netstandard2.0 - Fable.Core (>= 3.0) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.Browser.Gamepad (1.0) - restriction: >= netstandard2.0 - Fable.Core (>= 3.0) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.Browser.WebStorage (1.0) - restriction: >= netstandard2.0 - Fable.Browser.Event (>= 1.0) - restriction: >= netstandard2.0 - Fable.Core (>= 3.0) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.5.2) - restriction: >= netstandard2.0 - Fable.Core (3.2.7) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.React (7.4) - Fable.Browser.Dom (>= 2.0.1) - restriction: >= netstandard2.0 - Fable.Core (>= 3.1.5) - restriction: >= netstandard2.0 + Fable.Browser.Blob (1.4) - restriction: >= netstandard2.0 + Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Context (5.20.4) - restriction: >= netstandard2.0 + Fable.Browser.Dom (2.20) - restriction: >= netstandard2.0 + Fable.Browser.Blob (>= 1.4) - restriction: >= netstandard2.0 + Fable.Browser.Event (>= 1.7) - restriction: >= netstandard2.0 + Fable.Browser.WebStorage (>= 1.3) - restriction: >= netstandard2.0 + Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Environment (5.20.4) + Fable.Browser.Event (1.7) - restriction: >= netstandard2.0 + Fable.Browser.Gamepad (>= 1.3) - restriction: >= netstandard2.0 + Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 5.20.4) - restriction: >= netstandard2.0 + Fable.Browser.Gamepad (1.3) - restriction: >= netstandard2.0 + Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Process (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 + Fable.Browser.WebStorage (1.3) - restriction: >= netstandard2.0 + Fable.Browser.Event (>= 1.6) - restriction: >= netstandard2.0 + Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 1.7.1) - restriction: >= netstandard2.0 - Fake.Core.SemVer (5.20.4) - restriction: >= netstandard2.0 + Fable.Core (4.5) - restriction: >= netstandard2.0 + Fable.React (9.4) + Fable.React.Types (>= 18.3) - restriction: >= netstandard2.0 + Fable.ReactDom.Types (>= 18.2) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.String (5.20.4) - restriction: >= netstandard2.0 + Fable.React.Types (18.4) - restriction: >= netstandard2.0 + Fable.Browser.Dom (>= 2.4.4) - restriction: >= netstandard2.0 + Fable.Core (>= 3.2.7) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Tasks (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Trace (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Xml (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (5.20.4) - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 + Fable.ReactDom.Types (18.2) - restriction: >= netstandard2.0 + Fable.React.Types (>= 18.3) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Fake.Core.Context (6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Environment (6.1.4) + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Process (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 8.0) - restriction: >= netstandard2.0 + Fake.Core.SemVer (6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.String (6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Tasks (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Trace (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Core.Xml (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.DotNet.Cli (6.1.4) + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 Mono.Posix.NETStandard (>= 1.0) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (5.20.4) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (6.1.4) - restriction: >= netstandard2.0 BlackFox.VsWhere (>= 1.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (>= 2.1.176) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Tasks (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Xml (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 - Fake.Net.Http (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 - NuGet.Protocol (>= 5.6) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (5.20.4) - Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Net.Http (5.20.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - FSharp.Compiler.Service (34.1) - FSharp.Core (>= 4.6.2) - restriction: || (>= net461) (>= netstandard2.0) - System.Buffers (>= 4.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Diagnostics.Process (>= 4.1) - restriction: && (< net461) (>= netstandard2.0) - System.Diagnostics.TraceSource (>= 4.0) - restriction: && (< net461) (>= netstandard2.0) - System.Memory (>= 4.5.3) - restriction: || (>= net461) (>= netstandard2.0) - System.Reflection.Emit (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.Reflection.Metadata (>= 1.6) - restriction: || (>= net461) (>= netstandard2.0) - System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.Runtime.Loader (>= 4.0) - restriction: && (< net461) (>= netstandard2.0) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< net461) (>= netstandard2.0) - System.ValueTuple (>= 4.4) - restriction: >= net461 - FSharp.Core (4.7.2) + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (>= 2.1.815) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Tasks (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Xml (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Net.Http (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Newtonsoft.Json (>= 13.0.3) - restriction: >= netstandard2.0 + NuGet.Protocol (>= 6.12.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (6.1.4) + Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + Fake.Net.Http (6.1.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 + FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 + FSharp.Compiler.Service (43.9.100) + FSharp.Core (9.0.100) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 8.0) - restriction: >= netstandard2.0 + System.Diagnostics.DiagnosticSource (>= 8.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.5) - restriction: >= netstandard2.0 + System.Reflection.Emit (>= 4.7) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 8.0) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (9.0.100) FSharp.Formatting (4.0.0-rc1) FSharp.Compiler.Service (>= 34.1) - restriction: >= netstandard2.0 FSharp.Literate (4.0.0-rc1) FSharp.Compiler.Service (>= 34.1) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.1)) (&& (>= monoandroid) (< netstandard1.3) (>= xamarinios)) (&& (>= monoandroid) (< netstandard1.3) (>= xamarinmac)) (&& (>= monoandroid) (< netstandard2.0) (>= netstandard2.1)) (&& (>= monoandroid) (< netstandard2.0) (>= xamarinios)) (&& (>= monoandroid) (< netstandard2.0) (>= xamarinmac)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= monotouch) (>= xamarinios)) (&& (>= monotouch) (>= xamarinmac)) (&& (>= net461) (>= netstandard2.1)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= netstandard2.1) (>= xamarintvos)) (&& (< netstandard2.0) (>= netstandard2.1) (>= xamarinwatchos)) (&& (< netstandard2.0) (>= xamarinios) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinios) (>= xamarinwatchos)) (&& (< netstandard2.0) (>= xamarinmac) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinmac) (>= xamarinwatchos)) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) - Microsoft.Build (16.9) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.9) - restriction: || (>= net472) (>= netcoreapp2.1) - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: >= netcoreapp2.1 - System.Collections.Immutable (>= 5.0) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Memory (>= 4.5.4) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Reflection.Metadata (>= 1.6) - restriction: >= netcoreapp2.1 - System.Security.Principal.Windows (>= 4.7) - restriction: >= netcoreapp2.1 - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: >= netcoreapp2.1 - System.Text.Json (>= 4.7) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (>= net472) (>= netcoreapp2.1) - Microsoft.Build.Framework (16.11) - restriction: >= netstandard2.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (16.11) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.11) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.11) - restriction: >= netstandard2.0 - Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) - System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 - System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (16.11) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.11) - restriction: >= netstandard2.0 - Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Configuration.ConfigurationManager (>= 4.7) - restriction: >= netstandard2.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Data.Sqlite.Core (5.0.11) - restriction: >= netstandard2.1 - SQLitePCLRaw.core (>= 2.0.4) - restriction: >= netstandard2.0 - Microsoft.DotNet.PlatformAbstractions (3.1.6) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore (5.0.11) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore.Abstractions (>= 5.0.11) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore.Analyzers (>= 5.0.11) - restriction: >= netstandard2.1 - Microsoft.Extensions.Caching.Memory (>= 5.0) - restriction: >= netstandard2.1 - Microsoft.Extensions.DependencyInjection (>= 5.0.2) - restriction: >= netstandard2.1 - Microsoft.Extensions.Logging (>= 5.0) - restriction: >= netstandard2.1 - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.1 - System.ComponentModel.Annotations (>= 5.0) - restriction: >= netstandard2.1 - System.Diagnostics.DiagnosticSource (>= 5.0.1) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore.Abstractions (5.0.11) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore.Analyzers (5.0.11) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore.Relational (5.0.11) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore (>= 5.0.11) - restriction: >= netstandard2.1 - Microsoft.Extensions.Configuration.Abstractions (>= 5.0) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore.Sqlite (5.0.11) - Microsoft.EntityFrameworkCore.Sqlite.Core (>= 5.0.11) - restriction: >= netstandard2.1 - SQLitePCLRaw.bundle_e_sqlite3 (>= 2.0.4) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore.Sqlite.Core (5.0.11) - restriction: >= netstandard2.1 - Microsoft.Data.Sqlite.Core (>= 5.0.11) - restriction: >= netstandard2.1 - Microsoft.DotNet.PlatformAbstractions (>= 3.1.6) - restriction: >= netstandard2.1 - Microsoft.EntityFrameworkCore.Relational (>= 5.0.11) - restriction: >= netstandard2.1 - Microsoft.Extensions.DependencyModel (>= 5.0) - restriction: >= netstandard2.1 - Microsoft.Extensions.Caching.Abstractions (5.0) - restriction: >= netstandard2.1 - Microsoft.Extensions.Primitives (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Caching.Memory (5.0) - restriction: >= netstandard2.1 - Microsoft.Extensions.Caching.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (5.0) - restriction: >= netstandard2.1 - Microsoft.Extensions.Primitives (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection (5.0.2) - restriction: >= netstandard2.1 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) - restriction: || (>= net461) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.0) - Microsoft.Extensions.DependencyInjection.Abstractions (5.0) - restriction: || (&& (>= net461) (>= netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.0) - Microsoft.Extensions.DependencyModel (5.0) - restriction: >= netstandard2.1 - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) - System.Text.Encodings.Web (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net5.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - System.Text.Json (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net5.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (&& (< net451) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - Microsoft.Extensions.Logging (5.0) - restriction: >= netstandard2.1 - Microsoft.Extensions.DependencyInjection (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Diagnostics.DiagnosticSource (>= 5.0) - restriction: || (>= net461) (&& (< net5.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Extensions.Logging.Abstractions (5.0) - restriction: >= netstandard2.1 - Microsoft.Extensions.Options (5.0) - restriction: >= netstandard2.1 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (5.0.1) - restriction: >= netstandard2.1 - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - Microsoft.NET.StringTools (1.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (5.0.2) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (>= net5.0) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.VisualStudio.Setup.Configuration.Interop (1.16.30) - restriction: >= net472 - Microsoft.Win32.Primitives (4.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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 (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) + Microsoft.Bcl.AsyncInterfaces (10.0.5) - restriction: >= net472 + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Bcl.Cryptography (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net462) (>= net8.0)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) + System.Formats.Asn1 (>= 10.0.5) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Build.Framework (18.4) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 10.0.1) - restriction: >= net472 + System.Memory (>= 4.6.3) - restriction: >= net472 + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: >= net472 + System.Text.Json (>= 10.0.1) - restriction: >= net472 + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: >= net472 + System.ValueTuple (>= 4.6.1) - restriction: >= net472 + Microsoft.Build.Utilities.Core (18.4) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 18.4) - restriction: >= netstandard2.0 + Microsoft.IO.Redist (>= 6.1) - restriction: >= net472 + Microsoft.NET.StringTools (>= 18.4) - restriction: || (>= net10.0) (>= net472) + System.Collections.Immutable (>= 10.0.1) - restriction: >= net472 + System.Configuration.ConfigurationManager (>= 10.0.1) - restriction: || (>= net10.0) (>= net472) + System.Diagnostics.EventLog (>= 10.0.1) - restriction: >= net10.0 + System.Memory (>= 4.6.3) - restriction: >= net472 + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: >= net472 + System.Security.Cryptography.ProtectedData (>= 10.0.1) - restriction: >= net10.0 + System.Text.Json (>= 10.0.1) - restriction: >= net472 + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: >= net472 + System.ValueTuple (>= 4.6.1) - restriction: >= net472 + Microsoft.Data.Sqlite.Core (10.0.5) - restriction: >= net10.0 + SQLitePCLRaw.core (>= 2.1.11) - restriction: >= netstandard2.0 + Microsoft.EntityFrameworkCore (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Analyzers (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Analyzers (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Relational (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Sqlite (10.0.5) + Microsoft.EntityFrameworkCore.Sqlite.Core (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + SQLitePCLRaw.bundle_e_sqlite3 (>= 2.1.11) - restriction: >= net10.0 + SQLitePCLRaw.core (>= 2.1.11) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Sqlite.Core (10.0.5) - restriction: >= net10.0 + Microsoft.Data.Sqlite.Core (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + SQLitePCLRaw.core (>= 2.1.11) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Caching.Memory (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (10.0.5) - restriction: >= net10.0 + Microsoft.IO.Redist (6.1.3) - restriction: >= net472 + System.Buffers (>= 4.6.1) - restriction: >= net472 + System.Memory (>= 4.6.3) - restriction: >= net472 + Microsoft.NET.StringTools (18.4) - restriction: || (>= net10.0) (>= net472) + System.Memory (>= 4.6.3) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (>= net472) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (>= net472) + Microsoft.NETCore.Platforms (7.0.4) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) + Microsoft.Win32.Registry (5.0) - restriction: && (< net45) (>= netstandard2.0) System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (2.1.500) - restriction: >= netstandard2.0 - Microsoft.Build (>= 16.4) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.4) - restriction: >= netstandard2.0 - Microsoft.Build.Tasks.Core (>= 16.4) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.4) - restriction: >= netstandard2.0 - Newtonsoft.Json (13.0.1) - restriction: >= netstandard2.0 - NuGet.Common (5.9.1) - restriction: >= netstandard2.0 - NuGet.Frameworks (>= 5.9.1) - restriction: || (>= net45) (>= netstandard2.0) - NuGet.Configuration (5.9.1) - restriction: >= netstandard2.0 - NuGet.Common (>= 5.9.1) - restriction: || (>= net45) (>= netstandard2.0) - System.Security.Cryptography.ProtectedData (>= 4.4) - restriction: && (< net45) (>= netstandard2.0) - NuGet.Frameworks (5.9.1) - restriction: >= netstandard2.0 - NuGet.Packaging (5.9.1) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 9.0.1) - restriction: >= netstandard2.0 - NuGet.Configuration (>= 5.9.1) - restriction: >= netstandard2.0 - NuGet.Versioning (>= 5.9.1) - restriction: >= netstandard2.0 - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) - System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) - NuGet.Protocol (5.9.1) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 5.9.1) - restriction: >= netstandard2.0 - NuGet.Versioning (5.9.1) - restriction: >= netstandard2.0 - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (4.3.1) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< net46) (>= net463) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - SQLitePCLRaw.bundle_e_sqlite3 (2.0.7) - restriction: >= netstandard2.1 - SQLitePCLRaw.core (>= 2.0.7) - restriction: || (>= net461) (>= netstandard2.0) (>= xamarintvos) - SQLitePCLRaw.lib.e_sqlite3 (>= 2.0.7) - restriction: || (&& (< monoandroid8.0) (>= netstandard2.0) (< xamarinios) (< xamarintvos)) (>= net461) - SQLitePCLRaw.lib.e_sqlite3.android (>= 2.0.7) - restriction: >= monoandroid8.0 - SQLitePCLRaw.lib.e_sqlite3.ios (>= 2.0.7) - restriction: >= xamarinios - SQLitePCLRaw.lib.e_sqlite3.tvos (>= 2.0.7) - restriction: >= xamarintvos - SQLitePCLRaw.provider.e_sqlite3 (>= 2.0.7) - restriction: || (>= monoandroid8.0) (&& (< net461) (>= netstandard2.0) (< xamarinios) (< xamarintvos)) - SQLitePCLRaw.provider.internal (>= 2.0.7) - restriction: || (>= xamarinios) (>= xamarintvos) - SQLitePCLRaw.core (2.0.7) - restriction: >= netstandard2.1 - System.Memory (>= 4.5.3) - restriction: >= netstandard2.0 - SQLitePCLRaw.lib.e_sqlite3 (2.0.7) - restriction: || (&& (< monoandroid8.0) (>= netstandard2.1) (< xamarinios) (< xamarintvos)) (&& (>= net461) (>= netstandard2.1)) - SQLitePCLRaw.lib.e_sqlite3.android (2.0.7) - restriction: && (>= monoandroid8.0) (>= netstandard2.1) - SQLitePCLRaw.lib.e_sqlite3.ios (2.0.7) - restriction: >= xamarinios - SQLitePCLRaw.lib.e_sqlite3.tvos (2.0.7) - restriction: && (>= netstandard2.1) (>= xamarintvos) - SQLitePCLRaw.provider.e_sqlite3 (2.0.7) - restriction: || (&& (>= monoandroid8.0) (>= netstandard2.1)) (&& (>= netstandard2.1) (< xamarinios) (< xamarintvos)) - SQLitePCLRaw.core (>= 2.0.7) - SQLitePCLRaw.provider.internal (2.0.7) - restriction: || (&& (>= netstandard2.1) (>= xamarintvos)) (>= xamarinios) - SQLitePCLRaw.core (>= 2.0.7) - restriction: >= netstandard2.0 - System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.1)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netstandard2.1)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) - System.CodeDom (5.0) - restriction: && (< net472) (>= netstandard2.0) - System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net463) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= net463) (>= netstandard2.0)) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Collections.Immutable (5.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) - System.ComponentModel.Annotations (5.0) - restriction: >= netstandard2.1 - System.Configuration.ConfigurationManager (5.0) - restriction: >= netstandard2.0 - System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net463) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Diagnostics.DiagnosticSource (5.0.1) - restriction: >= netstandard2.1 - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (>= uap10.1) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (&& (< netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.1) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - System.Diagnostics.Process (4.3) - restriction: && (< net461) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.TraceSource (4.3) - restriction: && (< net461) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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) - 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.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net463) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 - Microsoft.Win32.SystemEvents (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Formats.Asn1 (5.0) - restriction: || (&& (>= monoandroid) (>= net5.0) (< netstandard1.3)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= monotouch) (>= net5.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (>= net5.0) (< netcoreapp2.0)) (&& (>= net5.0) (>= uap10.1)) (&& (>= net5.0) (>= xamarintvos)) (&& (>= net5.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net5.0) (>= xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net461) (>= net463) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO.FileSystem (4.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= net463) (>= netstandard2.0)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Memory (4.5.4) - restriction: || (&& (< monoandroid) (>= net5.0) (< netcoreapp2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (>= net5.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.1)) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< 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) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Numerics.Vectors (>= 4.5) - restriction: >= net461 - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Numerics.Vectors (4.5) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.1)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard2.1) (>= uap10.1)) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Emit (4.7) - restriction: && (< net461) (>= netstandard2.0) + MSBuild.StructuredLogger (2.3.154) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.5) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 17.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 8.0) - restriction: && (< net10.0) (>= netstandard2.0) + System.Memory (>= 4.6) - restriction: && (< net10.0) (>= netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net10.0) (>= netstandard2.0) + Newtonsoft.Json (13.0.4) - restriction: >= netstandard2.0 + NuGet.Common (7.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Frameworks (>= 7.3) - restriction: || (>= net472) (>= net8.0) + System.Collections.Immutable (>= 8.0) - restriction: >= net472 + NuGet.Configuration (7.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Common (>= 7.3) - restriction: || (>= net472) (>= net8.0) + System.Security.Cryptography.ProtectedData (>= 8.0) - restriction: >= net8.0 + NuGet.Frameworks (7.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Packaging (7.3) - restriction: || (>= net472) (>= net8.0) + Newtonsoft.Json (>= 13.0.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Configuration (>= 7.3) - restriction: || (>= net472) (>= net8.0) + NuGet.Versioning (>= 7.3) - restriction: || (>= net472) (>= net8.0) + System.Security.Cryptography.Pkcs (>= 8.0.1) - restriction: >= net8.0 + System.Text.Json (>= 8.0.5) - restriction: >= net472 + NuGet.Protocol (7.3) - restriction: >= netstandard2.0 + NuGet.Packaging (>= 7.3) - restriction: || (>= net472) (>= net8.0) + System.Text.Json (>= 8.0.5) - restriction: >= net472 + NuGet.Versioning (7.3) - restriction: || (>= net472) (>= net8.0) + SourceGear.sqlite3 (3.50.4.5) - restriction: >= net10.0 + SQLitePCLRaw.bundle_e_sqlite3 (3.0.2) - restriction: >= net10.0 + SourceGear.sqlite3 (>= 3.50.4.2) - restriction: >= netstandard2.0 + SQLitePCLRaw.config.e_sqlite3 (>= 3.0.2) - restriction: >= netstandard2.0 + SQLitePCLRaw.config.e_sqlite3 (3.0.2) - restriction: >= net10.0 + SQLitePCLRaw.provider.e_sqlite3 (>= 3.0.2) - restriction: || (>= net471) (&& (>= net8.0) (< net8.0-ios) (< net8.0-tvos)) (&& (< net8.0) (>= netstandard2.0)) + SQLitePCLRaw.core (3.0.2) - restriction: >= net10.0 + System.Memory (>= 4.6.3) - restriction: >= netstandard2.0 + SQLitePCLRaw.provider.e_sqlite3 (3.0.2) - restriction: >= net10.0 + SQLitePCLRaw.core (>= 3.0.2) - restriction: >= netstandard2.0 + System.Buffers (4.6.1) - restriction: >= netstandard2.0 + System.Collections.Immutable (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Configuration.ConfigurationManager (10.0.5) - restriction: >= netstandard2.0 + System.Diagnostics.EventLog (>= 10.0.5) - restriction: >= net8.0 + System.Security.Cryptography.ProtectedData (>= 10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) + System.Diagnostics.DiagnosticSource (10.0.5) - restriction: >= netstandard2.0 + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Diagnostics.EventLog (10.0.5) - restriction: >= net8.0 + System.Formats.Asn1 (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net462) (>= net8.0)) (&& (>= net462) (>= net9.0)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (>= net9.0) (< netstandard2.1)) + System.IO.Pipelines (10.0.5) - restriction: >= net472 + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (4.6.3) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (4.6.1) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Reflection.Emit (4.7) - restriction: >= netstandard2.0 System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Reflection.Metadata (5.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - 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.Reflection.TypeExtensions (4.7) - restriction: && (< net461) (>= netstandard2.0) - System.Resources.Extensions (5.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 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.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net461) (>= net463) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.1)) (&& (< monoandroid) (< net5.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp3.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.1) (>= netcoreapp3.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard2.1)) (&& (< monoandroid) (>= netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp3.0)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net45) (>= netstandard2.1)) (&& (>= net46) (>= netstandard2.1)) (>= net461) (&& (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.1) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp3.0) (>= uap10.1)) (&& (< netstandard1.0) (>= netstandard2.1) (>= win8)) (>= netstandard2.0) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= netstandard2.1) (>= wp8)) (&& (>= netstandard2.1) (>= wpa81)) (&& (>= netstandard2.1) (>= xamarintvos)) (&& (>= netstandard2.1) (>= xamarinwatchos)) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) - System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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: || (&& (< net46) (>= net463) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net462) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Loader (4.3) - restriction: && (< net461) (>= netstandard2.0) - System.IO (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (4.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.AccessControl (5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (< net461) (>= netstandard2.0)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) - System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< net472) (>= netstandard2.0)) (>= net5.0) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (>= 5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< net462) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6)) (>= net47) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net461) (>= net463) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Pkcs (5.0.1) - restriction: || (&& (>= monotouch) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Buffers (>= 4.5.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= monotouch) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net463) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net461) (>= net463) (>= 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.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.ProtectedData (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Memory (>= 4.5.4) - restriction: && (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Xml (5.0) - restriction: && (< net472) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: && (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (5.0) - restriction: >= netstandard2.0 - System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (>= net461) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) + System.Reflection.Metadata (10.0.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: >= netstandard2.0 + System.Security.AccessControl (6.0.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) + System.Security.Cryptography.Pkcs (10.0.5) - restriction: >= net8.0 + Microsoft.Bcl.Cryptography (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Formats.Asn1 (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (< net462) (>= netstandard2.0) (< netstandard2.1)) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) + System.Security.Cryptography.ProtectedData (10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) + System.Memory (>= 4.6.3) - restriction: && (< net462) (< net8.0) (>= netstandard2.0) + System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net463) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Text.Encoding.CodePages (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net5.0) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (< monoandroid) (< net5.0) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) - System.Text.Encoding.Extensions (4.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - 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)) - 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)) - 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)) - System.Text.Encodings.Web (5.0.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.1)) (&& (>= monoandroid) (< netstandard1.3) (>= xamarinios)) (&& (>= monoandroid) (< netstandard1.3) (>= xamarinmac)) (&& (>= monoandroid) (< netstandard2.0) (>= netstandard2.1)) (&& (>= monoandroid) (< netstandard2.0) (>= xamarinios)) (&& (>= monoandroid) (< netstandard2.0) (>= xamarinmac)) (&& (< monoandroid) (< net5.0) (>= netcoreapp2.1) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.1) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp3.0)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= monotouch) (>= xamarinios)) (&& (>= monotouch) (>= xamarinmac)) (&& (>= net461) (>= netcoreapp3.0)) (&& (>= net461) (>= netstandard2.1)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (>= netcoreapp3.0) (>= uap10.1)) (&& (< netstandard2.0) (>= netstandard2.1) (>= xamarintvos)) (&& (< netstandard2.0) (>= netstandard2.1) (>= xamarinwatchos)) (&& (< netstandard2.0) (>= xamarinios) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinios) (>= xamarinwatchos)) (&& (< netstandard2.0) (>= xamarinmac) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinmac) (>= xamarinwatchos)) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) - System.Text.Json (5.0.2) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (>= net472) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (>= netcoreapp2.1) (&& (< netstandard2.0) (>= netstandard2.1) (>= xamarintvos)) (&& (< netstandard2.0) (>= netstandard2.1) (>= xamarinwatchos)) (&& (>= netstandard2.1) (>= uap10.1)) - Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Numerics.Vectors (>= 4.5) - restriction: || (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - System.Text.Encodings.Web (>= 5.0.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net463) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net463) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Threading.Tasks.Dataflow (5.0) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netstandard2.1)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) - System.Threading.Thread (4.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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.ValueTuple (4.5) - restriction: >= net461 - System.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 - System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 + System.Text.Encodings.Web (10.0.5) - restriction: >= net472 + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Text.Json (10.0.5) - restriction: >= net472 + Microsoft.Bcl.AsyncInterfaces (>= 10.0.5) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.IO.Pipelines (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Text.Encodings.Web (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.ValueTuple (>= 4.6.1) - restriction: >= net462 + System.Threading.Tasks.Extensions (4.6.3) - restriction: >= net472 + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.ValueTuple (4.6.2) - restriction: >= net472 GROUP Src STORAGE: NONE NUGET remote: https://www.nuget.org/api/v2 - FSharp.Core (6.0.1) - Humanizer.Core (2.11.10) - restriction: >= net6.0 - Microsoft.Build.Tasks.Git (1.0) - copy_local: true - Microsoft.EntityFrameworkCore (6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Abstractions (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Analyzers (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.Caching.Memory (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyInjection (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.Logging (>= 6.0) - restriction: >= net6.0 - System.Collections.Immutable (>= 6.0) - restriction: >= net6.0 - System.Diagnostics.DiagnosticSource (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Analyzers (6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Design (6.0) - Humanizer.Core (>= 2.8.26) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Relational (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Relational (6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.Configuration.Abstractions (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.Caching.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Primitives (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Caching.Memory (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Caching.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Primitives (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection (6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Logging (6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyInjection (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Diagnostics.DiagnosticSource (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Options (6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (6.0) - restriction: >= net6.0 - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.SourceLink.Common (1.0) - copy_local: true + FSharp.Core (9.0.100) + Humanizer.Core (3.0.10) - restriction: >= net10.0 + Microsoft.Build.Framework (18.4) - restriction: >= net10.0 + Microsoft.Build.Tasks.Git (10.0.201) - copy_local: true + System.IO.Hashing (>= 10.0.5) - restriction: || (>= net472) (>= net8.0) + Microsoft.CodeAnalysis.Analyzers (5.3) - restriction: >= net10.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= net10.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp (5.3) - restriction: >= net10.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp.Workspaces (5.3) - restriction: >= net10.0 + Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= netstandard2.0 + System.Composition (>= 9.0) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= net10.0 + Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + System.Composition (>= 9.0) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Workspaces.MSBuild (5.3) - restriction: >= net10.0 + Humanizer.Core (>= 2.14.1) - restriction: || (>= net472) (>= net8.0) + Microsoft.Build.Framework (>= 17.11.48) - restriction: >= net8.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: || (>= net472) (>= net8.0) + Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.DependencyInjection (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.Logging (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.Logging.Abstractions (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.Options (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.Primitives (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.VisualStudio.SolutionPersistence (>= 1.0.52) - restriction: || (>= net472) (>= net8.0) + System.Composition (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.EntityFrameworkCore (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Analyzers (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Analyzers (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Design (10.0.5) + Humanizer.Core (>= 2.14.1) - restriction: >= net10.0 + Microsoft.Build.Framework (>= 18.0.2) - restriction: >= net10.0 + Microsoft.CodeAnalysis.CSharp (>= 5.0) - restriction: >= net10.0 + Microsoft.CodeAnalysis.CSharp.Workspaces (>= 5.0) - restriction: >= net10.0 + Microsoft.CodeAnalysis.Workspaces.MSBuild (>= 5.0) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Mono.TextTemplating (>= 3.0) - restriction: >= net10.0 + Newtonsoft.Json (>= 13.0.3) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Relational (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Caching.Memory (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (10.0.5) - restriction: >= net10.0 + Microsoft.SourceLink.Common (10.0.201) - copy_local: true Microsoft.SourceLink.GitHub (1.0) - copy_local: true Microsoft.Build.Tasks.Git (>= 1.0) Microsoft.SourceLink.Common (>= 1.0) - System.Collections.Immutable (6.0) - restriction: >= net6.0 - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Diagnostics.DiagnosticSource (6.0) - restriction: >= net6.0 - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Runtime.CompilerServices.Unsafe (6.0) - restriction: >= net6.0 + Microsoft.VisualStudio.SolutionPersistence (1.0.52) - restriction: >= net10.0 + Mono.TextTemplating (3.0) - restriction: >= net10.0 + System.CodeDom (>= 6.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) + Newtonsoft.Json (13.0.4) - restriction: >= net10.0 + System.Buffers (4.6.1) - copy_local: true, restriction: || (&& (>= net462) (>= net8.0)) (>= net472) + System.CodeDom (10.0.5) - restriction: >= net10.0 + System.Composition (10.0.5) - restriction: >= net10.0 + System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Convention (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Hosting (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.TypedParts (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.AttributedModel (10.0.5) - restriction: >= net10.0 + System.Composition.Convention (10.0.5) - restriction: >= net10.0 + System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Hosting (10.0.5) - restriction: >= net10.0 + System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Runtime (10.0.5) - restriction: >= net10.0 + System.Composition.TypedParts (10.0.5) - restriction: >= net10.0 + System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Hosting (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.IO.Hashing (10.0.5) - copy_local: true, restriction: || (>= net472) (>= net8.0) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (4.6.3) - copy_local: true, restriction: || (&& (>= net462) (>= net8.0)) (>= net472) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (4.6.1) - copy_local: true, restriction: || (&& (>= net462) (>= net8.0)) (>= net472) + System.Runtime.CompilerServices.Unsafe (6.1.2) - copy_local: true, restriction: || (&& (>= net462) (>= net8.0)) (>= net472) GROUP Tests STORAGE: NONE NUGET remote: https://www.nuget.org/api/v2 altcover (8.2.828) - Azure.Core (1.21) - restriction: >= net6.0 - Microsoft.Bcl.AsyncInterfaces (>= 1.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Diagnostics.DiagnosticSource (>= 4.6) - restriction: || (>= net461) (>= netstandard2.0) - System.Memory.Data (>= 1.0.2) - restriction: || (>= net461) (>= netstandard2.0) - System.Numerics.Vectors (>= 4.5) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Encodings.Web (>= 4.7.2) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Json (>= 4.6) - restriction: || (>= net461) (>= netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (>= netstandard2.0) - Azure.Identity (1.5) - restriction: >= net6.0 - Azure.Core (>= 1.20) - restriction: >= netstandard2.0 - Microsoft.Identity.Client (>= 4.30.1) - restriction: >= netstandard2.0 - Microsoft.Identity.Client.Extensions.Msal (>= 2.18.4) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 - System.Security.Cryptography.ProtectedData (>= 4.5) - restriction: >= netstandard2.0 - System.Text.Json (>= 4.6) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard2.0 - Castle.Core (4.4.1) - restriction: >= net6.0 - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.Collections.Specialized (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.ComponentModel (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.ComponentModel.TypeConverter (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.Diagnostics.TraceSource (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.Dynamic.Runtime (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.Reflection (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.Reflection.Emit (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) - System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< net35) (>= netstandard1.3) (< netstandard1.5)) (&& (< net35) (>= netstandard1.5)) + Castle.Core (5.2.1) - restriction: >= net10.0 + System.Diagnostics.EventLog (>= 6.0) - restriction: >= net6.0 Expecto (9.0.2) FSharp.Core (>= 4.6) - restriction: || (>= net461) (>= netstandard2.0) Mono.Cecil (>= 0.11.2) - restriction: || (>= net461) (>= netstandard2.0) - FSharp.Compiler.Service (41.0.1) - FSharp.Core (6.0.1) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.11) - restriction: >= netstandard2.0 - Microsoft.Build.Tasks.Core (>= 16.11) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.11) - restriction: >= netstandard2.0 + FSharp.Compiler.Service (43.9.100) + FSharp.Core (9.0.100) - restriction: >= netstandard2.0 System.Buffers (>= 4.5.1) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Diagnostics.Process (>= 4.3) - restriction: >= netstandard2.0 - System.Diagnostics.TraceSource (>= 4.3) - restriction: >= netstandard2.0 - System.Linq.Expressions (>= 4.3) - restriction: >= netstandard2.0 - System.Linq.Queryable (>= 4.3) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 - System.Net.Requests (>= 4.3) - restriction: >= netstandard2.0 - System.Net.Security (>= 4.3.1) - restriction: >= netstandard2.0 - System.Reflection.Emit (>= 4.3) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 5.0) - restriction: >= netstandard2.0 - System.Reflection.TypeExtensions (>= 4.3) - restriction: >= netstandard2.0 - System.Runtime (>= 4.3) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 - System.Runtime.InteropServices (>= 4.3) - restriction: >= netstandard2.0 - System.Runtime.Loader (>= 4.3) - restriction: >= netstandard2.0 - System.Security.Claims (>= 4.3) - restriction: >= netstandard2.0 - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: >= netstandard2.0 - System.Security.Principal (>= 4.3) - restriction: >= netstandard2.0 - System.Threading.Tasks.Parallel (>= 4.3) - restriction: >= netstandard2.0 - System.Threading.Thread (>= 4.3) - restriction: >= netstandard2.0 - System.Threading.ThreadPool (>= 4.3) - restriction: >= netstandard2.0 - FSharp.Core (6.0.1) - Humanizer.Core (2.11.10) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Build.Framework (16.11) - restriction: >= netstandard2.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (16.11) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.11) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.11) - restriction: >= netstandard2.0 - Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) - System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 - System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 - Microsoft.Build.Tasks.Git (1.0) - copy_local: true - Microsoft.Build.Utilities.Core (16.11) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.11) - restriction: >= netstandard2.0 - Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Configuration.ConfigurationManager (>= 4.7) - restriction: >= netstandard2.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.CodeAnalysis (3.11) - Microsoft.CodeAnalysis.CSharp.Workspaces (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic.Workspaces (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (3.3.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (>= 3.3.2) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 5.0) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 - System.Text.Encoding.CodePages (>= 4.5.1) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp.Workspaces (3.11) - restriction: >= netstandard2.0 - Humanizer.Core (>= 2.2) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic.Workspaces (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (3.11) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (3.11) - restriction: >= netstandard2.0 - Humanizer.Core (>= 2.2) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (3.11) - restriction: >= netstandard2.0 - System.Composition (>= 1.0.31) - restriction: >= netstandard2.0 - System.IO.Pipelines (>= 5.0.1) - restriction: >= netstandard2.0 - Microsoft.CodeCoverage (17.0) - restriction: || (>= net45) (>= netcoreapp1.0) - Microsoft.CSharp (4.7) - restriction: >= net6.0 - Microsoft.Data.SqlClient (3.0.1) - restriction: >= net6.0 - Azure.Identity (>= 1.3) - restriction: || (>= net461) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - Microsoft.Data.SqlClient.SNI.runtime (>= 3.0) - restriction: || (&& (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - Microsoft.Identity.Client (>= 4.22) - restriction: || (>= net461) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - Microsoft.IdentityModel.JsonWebTokens (>= 6.8) - restriction: || (>= net461) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 6.8) - restriction: || (>= net461) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - Microsoft.Win32.Registry (>= 4.7) - restriction: || (&& (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (>= net461) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - System.Diagnostics.DiagnosticSource (>= 4.7) - restriction: || (&& (>= netcoreapp2.1) (< netstandard2.1)) (>= netcoreapp3.1) - System.Runtime.Caching (>= 4.7) - restriction: || (&& (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - System.Security.Principal.Windows (>= 4.7) - restriction: || (&& (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - System.Text.Encoding.CodePages (>= 4.7) - restriction: || (&& (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - System.Text.Encodings.Web (>= 4.7.2) - restriction: || (>= net461) (&& (>= netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.1)) (>= netcoreapp3.1) - Microsoft.Data.SqlClient.SNI.runtime (3.0) - restriction: >= net6.0 - Microsoft.Data.Sqlite.Core (6.0) - restriction: >= net6.0 - SQLitePCLRaw.core (>= 2.0.6) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore (6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Abstractions (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Analyzers (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.Caching.Memory (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyInjection (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.Logging (>= 6.0) - restriction: >= net6.0 - System.Collections.Immutable (>= 6.0) - restriction: >= net6.0 - System.Diagnostics.DiagnosticSource (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Analyzers (6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Design (6.0) - Humanizer.Core (>= 2.8.26) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Relational (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.InMemory (6.0) - Microsoft.EntityFrameworkCore (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Proxies (6.0) - restriction: >= net6.0 - Castle.Core (>= 4.4.1) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Relational (6.0) - Microsoft.EntityFrameworkCore (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.Configuration.Abstractions (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Specification.Tests (6.0) - Microsoft.EntityFrameworkCore (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Proxies (>= 6.0) - restriction: >= net6.0 - NetTopologySuite (>= 2.3) - restriction: >= net6.0 - Newtonsoft.Json (>= 13.0.1) - restriction: >= net6.0 - xunit.assert (>= 2.4.1) - restriction: >= net6.0 - xunit.core (>= 2.4.1) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Sqlite (6.0) - Microsoft.EntityFrameworkCore.Sqlite.Core (>= 6.0) - restriction: >= net6.0 - SQLitePCLRaw.bundle_e_sqlite3 (>= 2.0.6) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Sqlite.Core (6.0) - restriction: >= net6.0 - Microsoft.Data.Sqlite.Core (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Relational (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyModel (>= 6.0) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.SqlServer (6.0) - Microsoft.Data.SqlClient (>= 2.1.4) - restriction: >= net6.0 - Microsoft.EntityFrameworkCore.Relational (>= 6.0) - restriction: >= net6.0 - Microsoft.Extensions.Caching.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Primitives (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Caching.Memory (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Caching.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Primitives (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection (6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyModel (6.0) - restriction: >= net6.0 - System.Buffers (>= 4.5.1) - restriction: || (>= net461) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (>= net461) (>= netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Encodings.Web (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Json (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging (6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyInjection (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Diagnostics.DiagnosticSource (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (6.0) - restriction: >= net6.0 - Microsoft.Extensions.Options (6.0) - restriction: >= net6.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Extensions.Primitives (6.0) - restriction: >= net6.0 - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Identity.Client (4.37) - restriction: >= net6.0 - Microsoft.CSharp (>= 4.5) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinmac)) (>= uap10.0) (>= xamarinios) - System.ComponentModel.TypeConverter (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinmac)) (>= xamarinios) - System.Runtime.Serialization.Formatters (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinmac)) (>= uap10.0) (>= xamarinios) - System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinmac)) (>= uap10.0) (>= xamarinios) - System.Security.SecureString (>= 4.3) - restriction: || (>= monoandroid10.0) (&& (>= monoandroid9.0) (< netcoreapp2.1)) (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< xamarinmac)) (>= uap10.0) (>= xamarinios) - System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< monoandroid9.0) (< net45) (< netcoreapp2.1) (>= netstandard1.3) (< uap10.0) (< xamarinmac)) (>= xamarinios) - Xamarin.AndroidX.Browser (>= 1.0) - restriction: >= monoandroid10.0 - Microsoft.Identity.Client.Extensions.Msal (2.19.2) - restriction: >= net6.0 - Microsoft.Identity.Client (>= 4.37) - restriction: || (>= net45) (>= netstandard2.0) - System.Security.Cryptography.ProtectedData (>= 4.5) - restriction: || (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.1) - Microsoft.IdentityModel.JsonWebTokens (6.14.1) - restriction: >= net6.0 - Microsoft.IdentityModel.Tokens (>= 6.14.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Logging (6.14.1) - restriction: >= net6.0 - Microsoft.IdentityModel.Protocols (6.14.1) - restriction: >= net6.0 - Microsoft.IdentityModel.Logging (>= 6.14.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Tokens (>= 6.14.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Protocols.OpenIdConnect (6.14.1) - restriction: >= net6.0 - Microsoft.IdentityModel.Protocols (>= 6.14.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - System.IdentityModel.Tokens.Jwt (>= 6.14.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Tokens (6.14.1) - restriction: >= net6.0 - Microsoft.CSharp (>= 4.5) - restriction: && (< net45) (>= netstandard2.0) - Microsoft.IdentityModel.Logging (>= 6.14.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - System.Security.Cryptography.Cng (>= 4.5) - restriction: && (< net45) (>= netstandard2.0) - Microsoft.NET.StringTools (1.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 - Microsoft.NET.Test.Sdk (17.0) - Microsoft.CodeCoverage (>= 17.0) - restriction: || (>= net45) (>= netcoreapp1.0) - Microsoft.TestPlatform.TestHost (>= 17.0) - restriction: >= netcoreapp1.0 - Newtonsoft.Json (>= 9.0.1) - restriction: >= uap10.0 - System.ComponentModel.Primitives (>= 4.1) - restriction: >= uap10.0 - System.ComponentModel.TypeConverter (>= 4.1) - restriction: >= uap10.0 - System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: >= uap10.0 - Microsoft.NETCore.Platforms (5.0.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net6.0) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.SourceLink.Common (1.0) - copy_local: true + System.Collections.Immutable (>= 8.0) - restriction: >= netstandard2.0 + System.Diagnostics.DiagnosticSource (>= 8.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.5) - restriction: >= netstandard2.0 + System.Reflection.Emit (>= 4.7) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 8.0) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (9.0.100) + Humanizer.Core (3.0.10) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 9.0.10) - restriction: || (>= net48) (&& (< net8.0) (>= netstandard2.0)) + System.ComponentModel.Annotations (>= 5.0) - restriction: || (>= net48) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net48) (&& (< net8.0) (>= netstandard2.0)) + Microsoft.Bcl.AsyncInterfaces (10.0.5) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Bcl.Cryptography (10.0.5) - restriction: >= net10.0 + Microsoft.Build.Framework (18.4) - restriction: >= net10.0 + Microsoft.Build.Tasks.Git (10.0.201) - copy_local: true + System.IO.Hashing (>= 10.0.5) - restriction: || (>= net472) (>= net8.0) + Microsoft.CodeAnalysis (5.3) + Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 9.0) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp.Workspaces (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.VisualBasic.Workspaces (5.3) - restriction: >= netstandard2.0 + System.Buffers (>= 4.6) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 9.0) - restriction: >= netstandard2.0 + System.Composition (>= 9.0) - restriction: >= netstandard2.0 + System.IO.Pipelines (>= 9.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.6) - restriction: >= netstandard2.0 + System.Numerics.Vectors (>= 4.6) - restriction: >= netstandard2.0 + System.Reflection.Metadata (>= 9.0) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: >= netstandard2.0 + System.Text.Encoding.CodePages (>= 8.0) - restriction: >= netstandard2.0 + System.Threading.Channels (>= 8.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.6) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp.Workspaces (5.3) - restriction: >= netstandard2.0 + Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 9.0) - restriction: && (< net8.0) (>= netstandard2.0) + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.CSharp (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= netstandard2.0 + System.Buffers (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Collections.Immutable (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Composition (>= 9.0) - restriction: >= netstandard2.0 + System.IO.Pipelines (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Numerics.Vectors (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Reflection.Metadata (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net8.0) (>= netstandard2.0) + System.Text.Encoding.CodePages (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) + System.Threading.Channels (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) + System.Threading.Tasks.Extensions (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + Microsoft.CodeAnalysis.VisualBasic (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + System.Buffers (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Collections.Immutable (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Numerics.Vectors (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Reflection.Metadata (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net8.0) (>= netstandard2.0) + System.Text.Encoding.CodePages (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) + System.Threading.Tasks.Extensions (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + Microsoft.CodeAnalysis.VisualBasic.Workspaces (5.3) - restriction: >= netstandard2.0 + Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 9.0) - restriction: && (< net8.0) (>= netstandard2.0) + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.VisualBasic (5.3) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= netstandard2.0 + System.Buffers (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Collections.Immutable (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Composition (>= 9.0) - restriction: >= netstandard2.0 + System.IO.Pipelines (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Numerics.Vectors (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Reflection.Metadata (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net8.0) (>= netstandard2.0) + System.Text.Encoding.CodePages (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) + System.Threading.Channels (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) + System.Threading.Tasks.Extensions (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= netstandard2.0 + Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 9.0) - restriction: && (< net8.0) (>= netstandard2.0) + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 + Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 + System.Buffers (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Collections.Immutable (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Composition (>= 9.0) - restriction: >= netstandard2.0 + System.IO.Pipelines (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Numerics.Vectors (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + System.Reflection.Metadata (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net8.0) (>= netstandard2.0) + System.Text.Encoding.CodePages (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) + System.Threading.Channels (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) + System.Threading.Tasks.Extensions (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) + Microsoft.CodeAnalysis.Workspaces.MSBuild (5.3) - restriction: >= net10.0 + Humanizer.Core (>= 2.14.1) - restriction: || (>= net472) (>= net8.0) + Microsoft.Build.Framework (>= 17.11.48) - restriction: >= net8.0 + Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: || (>= net472) (>= net8.0) + Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.DependencyInjection (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.Logging (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.Logging.Abstractions (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.Options (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.Extensions.Primitives (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.VisualStudio.SolutionPersistence (>= 1.0.52) - restriction: || (>= net472) (>= net8.0) + System.Composition (>= 9.0) - restriction: || (>= net472) (>= net8.0) + Microsoft.CodeCoverage (18.3) - restriction: || (>= net462) (>= netcoreapp3.1) + Microsoft.Data.SqlClient (7.0) - restriction: >= net10.0 + Microsoft.Bcl.Cryptography (>= 9.0.13) - restriction: >= net9.0 + Microsoft.Data.SqlClient.Extensions.Abstractions (>= 1.0) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Data.SqlClient.Internal.Logging (>= 1.0) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Data.SqlClient.SNI.runtime (>= 6.0.2) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) + Microsoft.Extensions.Caching.Memory (>= 9.0.13) - restriction: >= net9.0 + Microsoft.IdentityModel.JsonWebTokens (>= 8.16) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 8.16) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.SqlServer.Server (>= 1.0) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) + System.Configuration.ConfigurationManager (>= 9.0.13) - restriction: >= net9.0 + System.Security.Cryptography.Pkcs (>= 9.0.13) - restriction: >= net9.0 + Microsoft.Data.SqlClient.Extensions.Abstractions (1.0) - restriction: >= net10.0 + Microsoft.Data.SqlClient.Internal.Logging (>= 1.0) - restriction: >= netstandard2.0 + Microsoft.Data.SqlClient.Internal.Logging (1.0) - restriction: >= net10.0 + Microsoft.Data.SqlClient.SNI.runtime (6.0.2) - restriction: >= net10.0 + Microsoft.Data.Sqlite.Core (10.0.5) - restriction: >= net10.0 + SQLitePCLRaw.core (>= 2.1.11) - restriction: >= netstandard2.0 + Microsoft.EntityFrameworkCore (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Analyzers (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Analyzers (10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Design (10.0.5) + Humanizer.Core (>= 2.14.1) - restriction: >= net10.0 + Microsoft.Build.Framework (>= 18.0.2) - restriction: >= net10.0 + Microsoft.CodeAnalysis.CSharp (>= 5.0) - restriction: >= net10.0 + Microsoft.CodeAnalysis.CSharp.Workspaces (>= 5.0) - restriction: >= net10.0 + Microsoft.CodeAnalysis.Workspaces.MSBuild (>= 5.0) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Mono.TextTemplating (>= 3.0) - restriction: >= net10.0 + Newtonsoft.Json (>= 13.0.3) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.InMemory (10.0.5) + Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Proxies (10.0.5) - restriction: >= net10.0 + Castle.Core (>= 5.2.1) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Relational (10.0.5) + Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Specification.Tests (10.0.5) + Castle.Core (>= 5.2.1) - restriction: >= net10.0 + Humanizer.Core (>= 2.14.1) - restriction: >= net10.0 + Microsoft.Build.Framework (>= 18.0.2) - restriction: >= net10.0 + Microsoft.CodeAnalysis.CSharp (>= 5.0) - restriction: >= net10.0 + Microsoft.CodeAnalysis.CSharp.Workspaces (>= 5.0) - restriction: >= net10.0 + Microsoft.CodeAnalysis.Workspaces.MSBuild (>= 5.0) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Analyzers (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Design (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Proxies (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Mono.TextTemplating (>= 3.0) - restriction: >= net10.0 + NetTopologySuite (>= 2.6) - restriction: >= net10.0 + NetTopologySuite.IO.GeoJSON (>= 4.0) - restriction: >= net10.0 + Newtonsoft.Json (>= 13.0.3) - restriction: >= net10.0 + xunit.assert (>= 2.9.3) - restriction: >= net10.0 + xunit.core (>= 2.9.3) - restriction: >= net10.0 + xunit.runner.visualstudio (>= 3.1.3) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Sqlite (10.0.5) + Microsoft.EntityFrameworkCore.Sqlite.Core (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + SQLitePCLRaw.bundle_e_sqlite3 (>= 2.1.11) - restriction: >= net10.0 + SQLitePCLRaw.core (>= 2.1.11) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Sqlite.Core (10.0.5) - restriction: >= net10.0 + Microsoft.Data.Sqlite.Core (>= 10.0.5) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + SQLitePCLRaw.core (>= 2.1.11) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.SqlServer (10.0.5) + Microsoft.Data.SqlClient (>= 6.1.1) - restriction: >= net10.0 + Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Caching.Memory (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Caching.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyModel (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.Logging (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (10.0.5) - restriction: >= net10.0 + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (10.0.5) - restriction: >= net10.0 + Microsoft.IdentityModel.Abstractions (8.17) - restriction: >= net10.0 + Microsoft.IdentityModel.JsonWebTokens (8.17) - restriction: >= net10.0 + Microsoft.IdentityModel.Tokens (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.IdentityModel.Logging (8.17) - restriction: >= net10.0 + Microsoft.IdentityModel.Abstractions (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.IdentityModel.Protocols (8.17) - restriction: >= net10.0 + Microsoft.IdentityModel.Tokens (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.IdentityModel.Protocols.OpenIdConnect (8.17) - restriction: >= net10.0 + Microsoft.IdentityModel.Protocols (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) + System.IdentityModel.Tokens.Jwt (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.IdentityModel.Tokens (8.17) - restriction: >= net10.0 + Microsoft.Extensions.Logging.Abstractions (>= 8.0) - restriction: >= net8.0 + Microsoft.IdentityModel.Logging (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.NET.Test.Sdk (17.12) + Microsoft.CodeCoverage (>= 17.12) - restriction: || (>= net462) (>= netcoreapp3.1) + Microsoft.TestPlatform.TestHost (>= 17.12) - restriction: >= netcoreapp3.1 + Microsoft.NETCore.Platforms (7.0.4) - 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)) + Microsoft.NETCore.Targets (5.0) - 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)) + Microsoft.SourceLink.Common (10.0.201) - copy_local: true Microsoft.SourceLink.GitHub (1.0) - copy_local: true Microsoft.Build.Tasks.Git (>= 1.0) Microsoft.SourceLink.Common (>= 1.0) - Microsoft.TestPlatform.ObjectModel (17.0) - restriction: >= netcoreapp1.0 - NuGet.Frameworks (>= 4.6.4) - restriction: && (>= netcoreapp1.0) (< netstandard2.0) - NuGet.Frameworks (>= 5.0) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp1.0) (>= netstandard2.0) (< uap10.0)) (>= net451) (>= netcoreapp2.1) - System.Reflection.Metadata (>= 1.6) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp1.0) (>= netstandard1.3) (< netstandard2.0) (< uap10.0)) (&& (< net45) (< netcoreapp1.0) (>= netstandard2.0) (< uap10.0)) (>= net451) (&& (>= netcoreapp1.0) (< netstandard2.0)) (>= netcoreapp2.1) - Microsoft.TestPlatform.TestHost (17.0) - restriction: >= netcoreapp1.0 - Microsoft.TestPlatform.ObjectModel (>= 17.0) - restriction: || (>= netcoreapp1.0) (>= uap10.0) - Newtonsoft.Json (>= 9.0.1) - restriction: || (>= netcoreapp1.0) (>= uap10.0) - System.Diagnostics.Process (>= 4.1) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Diagnostics.StackTrace (>= 4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Diagnostics.TextWriterTraceListener (>= 4.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Diagnostics.TraceSource (>= 4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Runtime.Loader (>= 4.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Threading.Thread (>= 4.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - Microsoft.VisualStudio.Setup.Configuration.Interop (1.16.30) - restriction: >= net472 - Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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 (5.0) - restriction: || (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net472) (>= netstandard2.0)) (>= net6.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 - Mono.Cecil (0.11.4) - restriction: || (>= net461) (>= netstandard2.0) - NETStandard.Library (2.0.3) - restriction: >= net6.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= wp8) - NetTopologySuite (2.4) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.3) - restriction: >= netstandard2.0 + Microsoft.SqlServer.Server (1.0) - restriction: >= net10.0 + Microsoft.TestPlatform.ObjectModel (18.3) - restriction: >= net8.0 + System.Reflection.Metadata (>= 8.0) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.TestPlatform.TestHost (18.3) - restriction: >= netcoreapp3.1 + Microsoft.TestPlatform.ObjectModel (>= 18.3) - restriction: >= net8.0 + Newtonsoft.Json (>= 13.0.3) - restriction: >= net8.0 + Microsoft.VisualStudio.SolutionPersistence (1.0.52) - restriction: >= net10.0 + Mono.Cecil (0.11.6) - restriction: || (>= net461) (>= netstandard2.0) + Mono.TextTemplating (3.0) - restriction: >= net10.0 + System.CodeDom (>= 6.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) + NetTopologySuite (2.6) - restriction: >= netstandard2.0 + System.Memory (>= 4.6) - restriction: && (>= netstandard2.0) (< netstandard2.1) + NetTopologySuite.Features (2.2) - restriction: >= net10.0 + NetTopologySuite (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 + NetTopologySuite.IO.GeoJSON (4.0) - restriction: >= net10.0 + NetTopologySuite (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 + NetTopologySuite.Features (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 + Newtonsoft.Json (>= 13.0.1) - restriction: >= netstandard2.0 NetTopologySuite.IO.SqlServerBytes (2.0) NetTopologySuite (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 - Newtonsoft.Json (13.0.1) - restriction: || (>= netcoreapp1.0) (>= uap10.0) - NuGet.Frameworks (5.11) - restriction: || (&& (>= net45) (>= netcoreapp1.0) (< netstandard1.3)) (&& (>= net451) (>= netcoreapp1.0)) (&& (>= netcoreapp1.0) (< netstandard2.0)) (>= netcoreapp2.1) - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Http (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Security (4.3.1) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - SQLitePCLRaw.bundle_e_sqlite3 (2.0.7) - restriction: >= net6.0 - SQLitePCLRaw.core (>= 2.0.7) - restriction: || (>= net461) (>= netstandard2.0) (>= xamarintvos) - SQLitePCLRaw.lib.e_sqlite3 (>= 2.0.7) - restriction: || (&& (< monoandroid8.0) (>= netstandard2.0) (< xamarinios) (< xamarintvos)) (>= net461) - SQLitePCLRaw.lib.e_sqlite3.android (>= 2.0.7) - restriction: >= monoandroid8.0 - SQLitePCLRaw.lib.e_sqlite3.ios (>= 2.0.7) - restriction: >= xamarinios - SQLitePCLRaw.lib.e_sqlite3.tvos (>= 2.0.7) - restriction: >= xamarintvos - SQLitePCLRaw.provider.e_sqlite3 (>= 2.0.7) - restriction: || (>= monoandroid8.0) (&& (< net461) (>= netstandard2.0) (< xamarinios) (< xamarintvos)) - SQLitePCLRaw.provider.internal (>= 2.0.7) - restriction: || (>= xamarinios) (>= xamarintvos) - SQLitePCLRaw.core (2.0.7) - restriction: >= net6.0 - System.Memory (>= 4.5.3) - restriction: >= netstandard2.0 - SQLitePCLRaw.lib.e_sqlite3 (2.0.7) - restriction: || (&& (< monoandroid8.0) (>= net6.0) (< xamarinios) (< xamarintvos)) (&& (>= net461) (>= net6.0)) - SQLitePCLRaw.lib.e_sqlite3.android (2.0.7) - restriction: && (>= monoandroid8.0) (>= net6.0) - SQLitePCLRaw.lib.e_sqlite3.ios (2.0.7) - restriction: && (>= net6.0) (>= xamarinios) - SQLitePCLRaw.lib.e_sqlite3.tvos (2.0.7) - restriction: && (>= net6.0) (>= xamarintvos) - SQLitePCLRaw.provider.e_sqlite3 (2.0.7) - restriction: || (&& (>= monoandroid8.0) (>= net6.0)) (&& (>= net6.0) (< xamarinios) (< xamarintvos)) - SQLitePCLRaw.core (>= 2.0.7) - SQLitePCLRaw.provider.internal (2.0.7) - restriction: || (&& (>= net6.0) (>= xamarinios)) (&& (>= net6.0) (>= xamarintvos)) - SQLitePCLRaw.core (>= 2.0.7) - restriction: >= netstandard2.0 - System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (>= net6.0) (< netstandard1.3)) (&& (>= monotouch) (>= net6.0)) (&& (>= net6.0) (< netcoreapp2.0)) (&& (>= net6.0) (>= xamarinios)) (&& (>= net6.0) (>= xamarinmac)) (&& (>= net6.0) (>= xamarintvos)) (&& (>= net6.0) (>= xamarinwatchos)) (>= netstandard2.0) - System.CodeDom (5.0) - restriction: && (< net472) (>= netstandard2.0) - System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Collections.Immutable (6.0) - System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Collections.NonGeneric (4.3) - restriction: && (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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: >= net6.0 - 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) - 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.ComponentModel (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net6.0) + Newtonsoft.Json (13.0.4) - restriction: >= net8.0 + SourceGear.sqlite3 (3.50.4.5) - restriction: >= net10.0 + SQLitePCLRaw.bundle_e_sqlite3 (3.0.2) - restriction: >= net10.0 + SourceGear.sqlite3 (>= 3.50.4.2) - restriction: >= netstandard2.0 + SQLitePCLRaw.config.e_sqlite3 (>= 3.0.2) - restriction: >= netstandard2.0 + SQLitePCLRaw.config.e_sqlite3 (3.0.2) - restriction: >= net10.0 + SQLitePCLRaw.provider.e_sqlite3 (>= 3.0.2) - restriction: || (>= net471) (&& (>= net8.0) (< net8.0-ios) (< net8.0-tvos)) (&& (< net8.0) (>= netstandard2.0)) + SQLitePCLRaw.core (3.0.2) - restriction: >= net10.0 + System.Memory (>= 4.6.3) - restriction: >= netstandard2.0 + SQLitePCLRaw.provider.e_sqlite3 (3.0.2) - restriction: >= net10.0 + SQLitePCLRaw.core (>= 3.0.2) - restriction: >= netstandard2.0 + System.Buffers (4.6.1) - restriction: || (>= net462) (>= netstandard2.0) + System.CodeDom (10.0.5) - restriction: >= net10.0 + System.Collections.Immutable (10.0.5) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.ComponentModel (4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) 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)) + System.ComponentModel.Annotations (5.0) - restriction: || (>= net48) (&& (< net8.0) (>= netstandard2.0)) System.ComponentModel.Primitives (4.3) 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) - System.ComponentModel.TypeConverter (4.3) - restriction: || (>= net6.0) (>= uap10.0) - System.ComponentModel.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.5) (< win8)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.5)) (>= net462) (&& (< netstandard1.0) (>= win8)) (>= wp8) (>= wpa81) - System.Composition (5.0.1) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 5.0.1) - System.Composition.Convention (>= 5.0.1) - System.Composition.Hosting (>= 5.0.1) - System.Composition.Runtime (>= 5.0.1) - System.Composition.TypedParts (>= 5.0.1) - System.Composition.AttributedModel (5.0.1) - restriction: >= netstandard2.0 - System.Composition.Convention (5.0.1) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Composition.Hosting (5.0.1) - restriction: >= netstandard2.0 - System.Composition.Runtime (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Composition.Runtime (5.0.1) - restriction: >= netstandard2.0 - System.Composition.TypedParts (5.0.1) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Composition.Hosting (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Composition.Runtime (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= wp8) - System.Configuration.ConfigurationManager (5.0) - restriction: || (&& (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) - System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Composition (10.0.5) - restriction: >= netstandard2.0 + System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Convention (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Hosting (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.TypedParts (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.AttributedModel (10.0.5) - restriction: >= netstandard2.0 + System.Composition.Convention (10.0.5) - restriction: >= netstandard2.0 + System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Hosting (10.0.5) - restriction: >= netstandard2.0 + System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Runtime (10.0.5) - restriction: >= netstandard2.0 + System.Composition.TypedParts (10.0.5) - restriction: >= netstandard2.0 + System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Hosting (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Configuration.ConfigurationManager (10.0.5) - restriction: >= net10.0 + System.Diagnostics.EventLog (>= 10.0.5) - restriction: >= net8.0 + System.Security.Cryptography.ProtectedData (>= 10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) + System.Diagnostics.DiagnosticSource (10.0.5) - restriction: >= netstandard2.0 + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Diagnostics.EventLog (10.0.5) - restriction: >= net10.0 + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) 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)) 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)) 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)) - System.Diagnostics.DiagnosticSource (6.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net6.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Diagnostics.Process (4.3) - restriction: || (&& (>= netcoreapp1.0) (< netcoreapp2.1)) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.StackTrace (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Metadata (>= 1.4.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.Diagnostics.TextWriterTraceListener (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Diagnostics.TraceSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.TraceSource (4.3) - restriction: || (&& (>= netcoreapp1.0) (< netcoreapp2.1)) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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) - 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.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 - Microsoft.Win32.SystemEvents (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Dynamic.Runtime (4.3) - restriction: >= net6.0 - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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.IdentityModel.Tokens.Jwt (6.14.1) - restriction: >= net6.0 - Microsoft.IdentityModel.JsonWebTokens (>= 6.14.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - Microsoft.IdentityModel.Tokens (>= 6.14.1) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net461) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net463) (>= netstandard2.0)) + System.IdentityModel.Tokens.Jwt (8.17) - restriction: >= net10.0 + Microsoft.IdentityModel.JsonWebTokens (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.IdentityModel.Tokens (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) + 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)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.Pipelines (5.0.1) - restriction: >= netstandard2.0 - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (>= monotouch) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) - System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq.Expressions (4.3) - restriction: || (&& (< monoandroid) (>= net6.0) (< netstandard1.3)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) - System.Collections (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ObjectModel (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Emit (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq.Queryable (4.3) - restriction: >= netstandard2.0 - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Memory (4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= netstandard2.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< 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) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Numerics.Vectors (>= 4.5) - restriction: >= net461 - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory.Data (1.0.2) - restriction: >= net6.0 - System.Text.Encodings.Web (>= 4.7.2) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Json (>= 4.6) - restriction: || (>= net461) (>= netstandard2.0) - System.Net.Http (4.3.4) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.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)) - Microsoft.NETCore.Targets (>= 1.1.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)) - System.Runtime (>= 4.3.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)) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Requests (4.3) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 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)) - System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 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)) - System.Net.WebHeaderCollection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Net.Security (4.3.2) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Security (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Security.Principal (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Threading.ThreadPool (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Net.WebHeaderCollection (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 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.Numerics.Vectors (4.5) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netstandard2.0)) (>= net6.0) - System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (>= net6.0) (< netstandard1.3)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net6.0) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.Hashing (10.0.5) - copy_local: true, restriction: || (>= net472) (>= net8.0) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.IO.Pipelines (10.0.5) - restriction: || (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Memory (4.6.3) - restriction: || (>= net462) (>= netstandard2.0) + System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (4.6.1) - restriction: || (>= net462) (>= netstandard2.0) + System.Reflection (4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Emit (4.7) - restriction: || (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) + System.Reflection.Emit (4.7) - restriction: >= netstandard2.0 System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Reflection.Emit.Lightweight (4.7) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) - System.Reflection.Extensions (4.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 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.Reflection.Metadata (5.0) - restriction: || (>= netcoreapp1.0) (>= netstandard2.0) - System.Collections.Immutable (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Reflection.Metadata (10.0.5) - restriction: || (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + System.Collections.Immutable (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + 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)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - 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.Reflection.TypeExtensions (4.7) - restriction: || (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) - System.Resources.Extensions (5.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 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.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (>= net6.0) (< netstandard1.3)) (&& (< monoandroid) (>= net6.0) (< netstandard1.6)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) + System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Caching (5.0) - restriction: >= net6.0 - System.Configuration.ConfigurationManager (>= 5.0) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.CompilerServices.Unsafe (6.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (>= net461) (>= netstandard2.0) - System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: || (>= net462) (>= netstandard2.0) + System.Runtime.Extensions (4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net462) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (>= netcoreapp1.0) (< netcoreapp2.1)) (>= uap10.0) - System.Runtime.Loader (4.3) - restriction: || (&& (>= netcoreapp1.0) (< netcoreapp2.1)) (>= netstandard2.0) - System.IO (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Numerics (4.3) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Serialization.Formatters (4.3) - restriction: || (&& (< monoandroid9.0) (>= net6.0) (< netcoreapp2.1) (< xamarinmac)) (&& (>= net6.0) (>= uap10.0)) (&& (>= net6.0) (>= xamarinios)) - System.Runtime.Serialization.Primitives (4.3) - restriction: || (&& (< monoandroid9.0) (>= net6.0) (< netcoreapp2.1) (< xamarinmac)) (&& (>= net6.0) (>= uap10.0)) (&& (>= net6.0) (>= xamarinios)) - System.Security.AccessControl (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Claims (4.3) - restriction: >= 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) - 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.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) - System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net6.0) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (>= 5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net463) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.OpenSsl (5.0) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) - System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Cryptography.Pkcs (5.0.1) - restriction: || (&& (>= monotouch) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Buffers (>= 4.5.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= monotouch) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net463) (>= 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.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.ProtectedData (5.0) - restriction: || (&& (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net6.0) - System.Memory (>= 4.5.4) - restriction: && (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net46) (>= netstandard2.0)) (&& (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization.Calendars (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Xml (5.0) - restriction: && (< net472) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: && (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (5.0) - restriction: >= netstandard2.0 - System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Principal (4.3) - restriction: >= netstandard2.0 - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Principal.Windows (5.0) - restriction: >= net6.0 - System.Security.SecureString (4.3) - restriction: || (&& (>= monoandroid10.0) (>= net6.0)) (&& (>= monoandroid9.0) (>= net6.0) (< netcoreapp2.1)) (&& (< monoandroid9.0) (>= net6.0) (< netcoreapp2.1) (< xamarinmac)) (&& (>= net6.0) (>= uap10.0)) (&& (>= net6.0) (>= xamarinios)) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - 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)) - System.Text.Encoding.CodePages (5.0) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net5.0) - System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Pkcs (10.0.5) - restriction: >= net10.0 + System.Security.Cryptography.ProtectedData (10.0.5) - restriction: >= net10.0 + 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)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< 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)) 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)) 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)) - 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)) - System.Text.Encodings.Web (6.0) - restriction: >= net6.0 - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Json (6.0) - restriction: >= net6.0 - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Encodings.Web (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.RegularExpressions (4.3.1) - restriction: && (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - 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)) - 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)) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net6.0) (< netstandard1.3)) (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding.CodePages (10.0.5) - restriction: >= netstandard2.0 + System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.ValueTuple (>= 4.6.1) - restriction: >= net462 + System.Threading.Channels (10.0.5) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 10.0.5) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + 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)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< 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)) 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)) 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)) - System.Threading.Tasks.Dataflow (5.0) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) - System.Threading.Tasks.Parallel (4.3) - restriction: >= netstandard2.0 - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Threading.Thread (4.3) - restriction: || (&& (>= netcoreapp1.0) (< netcoreapp2.1)) (>= netstandard2.0) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: >= netstandard2.0 - 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.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 - System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 - System.Xml.ReaderWriter (4.3.1) - restriction: && (< monoandroid) (>= net6.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.RegularExpressions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - 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)) - System.Threading.Tasks.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Xml.XmlDocument (4.3) - restriction: >= net6.0 - System.Collections (>= 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) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Xml.ReaderWriter (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Xamarin.AndroidX.Annotation (1.2.0.3) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation.Experimental (1.1.0.3) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Arch.Core.Common (2.1.0.11) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Arch.Core.Runtime (2.1.0.11) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Arch.Core.Common (>= 2.1.0.11) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Browser (1.3.0.8) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Collection (>= 1.1.0.10) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Concurrent.Futures (>= 1.1.0.5) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Core (>= 1.6.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Interpolator (>= 1.0.0.10) - restriction: >= monoandroid9.0 - Xamarin.Google.Guava.ListenableFuture (>= 1.0.0.4) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Collection (1.1.0.10) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Concurrent.Futures (1.1.0.5) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.Google.Guava.ListenableFuture (>= 1.0.0.4) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Core (1.6.0.3) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Annotation.Experimental (>= 1.1.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Collection (>= 1.1.0.10) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Lifecycle.Runtime (>= 2.3.1.4) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.VersionedParcelable (>= 1.1.1.10) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Interpolator (1.0.0.10) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Lifecycle.Common (2.3.1.3) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Lifecycle.Runtime (2.3.1.4) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Arch.Core.Common (>= 2.1.0.11) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Arch.Core.Runtime (>= 2.1.0.11) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Lifecycle.Common (>= 2.3.1.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.VersionedParcelable (1.1.1.10) - restriction: && (>= monoandroid10.0) (>= net6.0) - Xamarin.AndroidX.Annotation (>= 1.2.0.3) - restriction: >= monoandroid9.0 - Xamarin.AndroidX.Collection (>= 1.1.0.10) - restriction: >= monoandroid9.0 - Xamarin.Google.Guava.ListenableFuture (1.0.0.4) - restriction: && (>= monoandroid10.0) (>= net6.0) - xunit.abstractions (2.0.3) - restriction: >= net6.0 - xunit.assert (2.4.1) - restriction: >= net6.0 - NETStandard.Library (>= 1.6.1) - restriction: && (< net452) (>= netstandard1.1) - xunit.core (2.4.1) - restriction: >= net6.0 - xunit.extensibility.core (2.4.1) - xunit.extensibility.execution (2.4.1) - xunit.extensibility.core (2.4.1) - restriction: >= net6.0 - NETStandard.Library (>= 1.6.1) - restriction: && (< net452) (>= netstandard1.1) + System.Threading.Tasks.Extensions (4.6.3) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.ValueTuple (4.6.2) - restriction: && (>= net462) (>= netstandard2.0) + xunit.abstractions (2.0.3) - restriction: >= net10.0 + xunit.assert (2.9.3) - restriction: >= net10.0 + xunit.core (2.9.3) - restriction: >= net10.0 + xunit.extensibility.core (2.9.3) + xunit.extensibility.execution (2.9.3) + xunit.extensibility.core (2.9.3) - restriction: >= net10.0 xunit.abstractions (>= 2.0.3) - restriction: >= netstandard1.1 - xunit.extensibility.execution (2.4.1) - restriction: >= net6.0 - NETStandard.Library (>= 1.6.1) - restriction: && (< net452) (>= netstandard1.1) - xunit.extensibility.core (2.4.1) - restriction: >= netstandard1.1 + xunit.extensibility.execution (2.9.3) - restriction: >= net10.0 + xunit.extensibility.core (2.9.3) - restriction: >= netstandard1.1 + xunit.runner.visualstudio (3.1.5) - restriction: >= net10.0 YoloDev.Expecto.TestSdk (0.12.10) Expecto (>= 9.0 < 10.0) - restriction: >= netcoreapp2.1 FSharp.Core (>= 4.6) - restriction: >= netcoreapp2.1 From a7e6c33634e814f6febfcd902d75659f8606ce79 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 07:00:08 +0700 Subject: [PATCH 04/19] Adapt library code to EF Core 10 breaking changes EntityFrameworkExtensions: - NamespaceComparer moved to Microsoft.EntityFrameworkCore.Design - Remove GetEntityTypeErrors (removed in EF Core 7) EFCoreFSharpServices: - ICSharpEntityTypeGenerator/ICSharpDbContextGenerator interfaces removed in EF Core 7; register concrete types directly FSharpHelper (ICSharpHelper interface): - Fragment: MethodCallCodeFragment -> IMethodCallCodeFragment - Add Fragment overloads: IMethodCallCodeFragment+indent, NestedClosureCodeFragment, PropertyAccessorCodeFragment, AttributeCodeFragment - Add Identifier overload with IDictionary - Add Lambda(IEnumerable) overload - Add Literal: DateOnly, TimeOnly, BigInteger, List, Dictionary - Literal(Enum) gains fullName parameter - Namespace: add ParamArray attribute - Add XmlComment, Arguments, GetRequiredUsings, Statement, Expression - Fix AppendLine(FormattableString) ambiguity with type annotation FSharpDbContextGenerator: - ISequence.ClrType -> .Type - Remove ScaffoldingAnnotationNames.EntityTypeErrors - Remove GetEntityTypeErrors loop - Convert ICSharpDbContextGenerator interface to member FSharpEntityTypeGenerator: - GetPropertiesAndNavigations -> GetMembers - Convert ICSharpEntityTypeGenerator interface to member FSharpModelGenerator: - Use concrete generator types instead of removed interfaces - ScaffoldedFile: named-param constructor -> positional constructor FSharpMigrationsScaffolder: - Save: add dryRun parameter, guard file writes - Fix File.WriteAllText ReadOnlySpan overload ambiguity FSharpSnapshotGenerator: - Fragment(c, builderName) -> Fragment(c, builderName, false) (typeQualified parameter now required) --- src/EFCore.FSharp/EFCoreFSharpServices.fs | 5 +- src/EFCore.FSharp/Internal/FSharpHelper.fs | 103 +++++++++++++++++- .../Design/FSharpMigrationsScaffolder.fs | 16 +-- .../Design/FSharpSnapshotGenerator.fs | 2 +- .../Scaffolding/FSharpDbContextGenerator.fs | 34 +++--- .../Scaffolding/FSharpEntityTypeGenerator.fs | 7 +- .../Internal/FSharpModelGenerator.fs | 14 +-- .../Utilities/EntityFrameworkExtensions.fs | 4 +- 8 files changed, 134 insertions(+), 51 deletions(-) diff --git a/src/EFCore.FSharp/EFCoreFSharpServices.fs b/src/EFCore.FSharp/EFCoreFSharpServices.fs index 461d563..cd8c267 100644 --- a/src/EFCore.FSharp/EFCoreFSharpServices.fs +++ b/src/EFCore.FSharp/EFCoreFSharpServices.fs @@ -3,7 +3,6 @@ namespace EntityFrameworkCore.FSharp open Microsoft.EntityFrameworkCore.Design open Microsoft.EntityFrameworkCore.Migrations.Design open Microsoft.EntityFrameworkCore.Scaffolding -open Microsoft.EntityFrameworkCore.Scaffolding.Internal open Microsoft.Extensions.DependencyInjection open EntityFrameworkCore.FSharp @@ -30,8 +29,8 @@ type EFCoreFSharpServices(scaffoldOptions: ScaffoldOptions) = .AddSingleton(scaffoldOptions) .AddSingleton() .AddSingleton() - .AddSingleton() - .AddSingleton() + .AddSingleton() + .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() diff --git a/src/EFCore.FSharp/Internal/FSharpHelper.fs b/src/EFCore.FSharp/Internal/FSharpHelper.fs index 3b68cd7..3144542 100644 --- a/src/EFCore.FSharp/Internal/FSharpHelper.fs +++ b/src/EFCore.FSharp/Internal/FSharpHelper.fs @@ -585,7 +585,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = match arg with | :? NestedClosureCodeFragment as n -> let f = this.buildNestedFragment (n, indent) - sb.AppendLine(f) + sb.AppendLine(f: string) | _ -> sb.Append(this.unknownLiteral arg) if typeQualified then @@ -726,8 +726,39 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = interface ICSharpHelper with - member this.Fragment(fragment: MethodCallCodeFragment, instanceIdentifer: string, typeQualified: bool) = - this.buildFragment (fragment, typeQualified, instanceIdentifer, 0) + member this.Fragment(fragment: IMethodCallCodeFragment, instanceIdentifier: string, typeQualified: bool) = + this.buildFragment (fragment :?> MethodCallCodeFragment, typeQualified, instanceIdentifier, 0) + + member this.Fragment(fragment: IMethodCallCodeFragment, indent: int) = + this.buildFragment (fragment :?> MethodCallCodeFragment, false, null, indent) + + member this.Fragment(fragment: NestedClosureCodeFragment, indent: int) = + this.buildNestedFragment (fragment, indent) + + member this.Fragment(fragment: PropertyAccessorCodeFragment) = + let props = + fragment.Properties + |> Seq.map (fun p -> fragment.Parameter + "." + p) + |> join ", " + sprintf "(fun %s -> (%s) :> obj)" fragment.Parameter props + + member this.Fragment(fragment: AttributeCodeFragment) = + let args = + fragment.Arguments + |> Seq.map this.unknownLiteral + |> join ", " + let namedArgs = + fragment.NamedArguments + |> Seq.map (fun kv -> sprintf "%s = %s" kv.Key (this.unknownLiteral kv.Value)) + |> join ", " + let allArgs = + [args; namedArgs] + |> List.filter (String.IsNullOrEmpty >> not) + |> join ", " + if String.IsNullOrEmpty allArgs then + sprintf "[<%s>]" (this.ReferenceFullName fragment.Type false) + else + sprintf "[<%s(%s)>]" (this.ReferenceFullName fragment.Type false) allArgs member this.Identifier(name: string, scope: ICollection, capitalize: Nullable) : string = if isNull scope then @@ -735,6 +766,17 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = else this.IdentifierWithScope name scope + member this.Identifier(name: string, value: 'T, scope: IDictionary, capitalize: Nullable) : string = + let identifier = + if isNull (scope :> obj) then + this.IdentifierWithScope name [||] + else + let keys = scope.Keys :> ICollection + this.IdentifierWithScope name keys + if notNull (scope :> obj) then + scope.[identifier] <- value + identifier + member this.Lambda(properties: IReadOnlyList, lambdaIdentifier: string) : string = let lambdaIdentifier' = @@ -750,16 +792,33 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = sprintf "(fun %s -> (%s) :> obj)" lambdaIdentifier' props + member this.Lambda(properties: System.Collections.Generic.IEnumerable, lambdaIdentifier: string) : string = + let lambdaIdentifier' = + if String.IsNullOrEmpty lambdaIdentifier then + "x" + else + lambdaIdentifier + let props = + properties + |> Seq.map (fun p -> lambdaIdentifier' + "." + p.Name) + |> join ", " + sprintf "(fun %s -> (%s) :> obj)" lambdaIdentifier' props + member this.Literal(values: obj [,]) : string = this.literalArray2D values member this.Literal(value: Nullable<'T>) : string = this.unknownLiteral value + member this.Literal(value: BigInteger) : string = this.literalBigInteger value + member this.Literal(value: bool) : string = this.literalBoolean value member this.Literal(value: byte) : string = this.literalByte value member this.Literal(value: char) : string = this.literalChar value + member this.Literal(value: DateOnly) : string = + sprintf "DateOnly(%d, %d, %d)" value.Year value.Month value.Day + member this.Literal(value: DateTime) : string = this.literalDateTime value member this.Literal(value: DateTimeOffset) : string = this.literalDateTimeOffset value @@ -768,7 +827,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.Literal(value: float) : string = this.literalDouble value - member this.Literal(value: Enum) : string = this.literalEnum value + member this.Literal(value: Enum, fullName: bool) : string = this.literalEnum value member this.Literal(value: float32) : string = this.literalFloat32 value @@ -784,6 +843,12 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.Literal(value: string) : string = this.literalString value + member this.Literal(value: TimeOnly) : string = + if value.Ticks % 10_000L = 0L then + sprintf "TimeOnly(%d, %d, %d, %d)" value.Hour value.Minute value.Second value.Millisecond + else + sprintf "TimeOnly(%dL)" value.Ticks + member this.Literal(value: TimeSpan) = this.literalTimeSpan value member this.Literal(value: UInt32) = this.literalUInt32 value @@ -796,10 +861,20 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let isObjType = typeof<'T> = typeof this.literalList (values |> Seq.cast |> ResizeArray) vertical isObjType + member this.Literal(values: System.Collections.Generic.List<'T>, vertical: bool) : string = + let isObjType = typeof<'T> = typeof + this.literalList (values |> Seq.cast |> ResizeArray) vertical isObjType + + member this.Literal(values: System.Collections.Generic.Dictionary<'TKey, 'TValue>, vertical: bool) : string = + let entries = + values + |> Seq.map (fun kv -> sprintf "(%s, %s)" (this.unknownLiteral kv.Key) (this.unknownLiteral kv.Value)) + sprintf "[| %s |]" (String.Join("; ", entries)) + member this.Literal(t: Type, fullName: Nullable) = this.ReferenceFullName t (fullName.GetValueOrDefault()) - member this.Namespace(name: string []) : string = + member this.Namespace([] name: string []) : string = let join (ns': string array) = String.Join(".", ns') let ns = @@ -819,3 +894,21 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = this.ReferenceFullName t (fullName.GetValueOrDefault()) member this.UnknownLiteral(value: obj) : string = this.unknownLiteral value + + member this.XmlComment(comment: string, indent: int) : string = + let lines = comment.Split([| '\n' |], StringSplitOptions.None) + lines + |> Seq.map (fun l -> sprintf "/// %s" (l.TrimEnd())) + |> join "\n" + + member this.Arguments(values: System.Collections.Generic.IEnumerable) : string = + values |> Seq.map this.unknownLiteral |> join ", " + + member this.GetRequiredUsings(``type``: Type) : System.Collections.Generic.IEnumerable = + Seq.empty + + member this.Statement(node, collectedNamespaces, unsafeAccessors, constantReplacements, memberAccessReplacements) : string = + raise (NotSupportedException "F# expression statements are not supported") + + member this.Expression(node, collectedNamespaces, unsafeAccessors, constantReplacements, memberAccessReplacements) : string = + raise (NotSupportedException "F# expression generation is not supported") diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs index a75f108..391ec72 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs @@ -10,7 +10,7 @@ type FSharpMigrationsScaffolder(dependencies) = inherit MigrationsScaffolder(dependencies) // Copy of (modulo custom code changes) https://github.com/aspnet/EntityFrameworkCore/blob/d8b7ebbfabff3d2e8560c24b1ff14d1f4244ca6a/src/EFCore.Design/Migrations/Design/MigrationsScaffolder.cs#L365 - override this.Save(projectDir, migration, outputDir) = + override this.Save(projectDir, migration: ScaffoldedMigration, outputDir, dryRun) = let lastMigrationFileName = migration.PreviousMigrationId + migration.FileExtension @@ -51,11 +51,12 @@ type FSharpMigrationsScaffolder(dependencies) = A makeover of the API (GenerateMigration ... -> migrationCode: string * metadataCode: string) would be best That should include this Save method taking into account it sometimes can receive nothing for metadataCode *) - if migration.MigrationCode = "// intentionally empty" then - File.WriteAllText(migrationFile, migration.MetadataCode, Encoding.UTF8) - else - File.WriteAllText(migrationFile, migration.MigrationCode, Encoding.UTF8) - File.WriteAllText(migrationMetadataFile, migration.MetadataCode, Encoding.UTF8) + if not dryRun then + if migration.MigrationCode = "// intentionally empty" then + File.WriteAllText(migrationFile, (migration.MetadataCode: string), Encoding.UTF8) + else + File.WriteAllText(migrationFile, (migration.MigrationCode: string), Encoding.UTF8) + File.WriteAllText(migrationMetadataFile, (migration.MetadataCode: string), Encoding.UTF8) (* End custom code *) dependencies.OperationReporter.WriteVerbose(DesignStrings.WritingSnapshot(modelSnapshotFile)) @@ -63,7 +64,8 @@ type FSharpMigrationsScaffolder(dependencies) = Directory.CreateDirectory(modelSnapshotDirectory) |> ignore - File.WriteAllText(modelSnapshotFile, migration.SnapshotCode, Encoding.UTF8) + if not dryRun then + File.WriteAllText(modelSnapshotFile, (migration.SnapshotCode: string), Encoding.UTF8) MigrationFiles( MigrationFile = migrationFile, diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs index 6e18240..7ec45dc 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs @@ -102,7 +102,7 @@ type FSharpSnapshotGenerator stringBuilder { if leadingNewLine then "" - (code.Fragment(c, builderName)) + " |> ignore" + (code.Fragment(c, builderName, false)) + " |> ignore" } | None -> diff --git a/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs index 6b66c24..daaa6f2 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs @@ -120,10 +120,10 @@ type FSharpDbContextGenerator let generateSequence (s: ISequence) = let methodName = - if s.ClrType = Sequence.DefaultClrType then + if s.Type = Sequence.DefaultClrType then "HasSequence" else - sprintf "HasSequence<%s>" (FSharpUtilities.getTypeName (s.ClrType)) + sprintf "HasSequence<%s>" (FSharpUtilities.getTypeName (s.Type)) let parameters = if (s.Schema |> String.IsNullOrEmpty) @@ -901,7 +901,6 @@ type FSharpDbContextGenerator CoreAnnotationNames.ProductVersion RelationalAnnotationNames.MaxIdentifierLength ScaffoldingAnnotationNames.DatabaseName - ScaffoldingAnnotationNames.EntityTypeErrors } |> Seq.iter (annotations.Remove >> ignore) @@ -987,10 +986,6 @@ type FSharpDbContextGenerator "" - for e in model.GetEntityTypeErrors() do - $"// {e.Value} Please see the warning messages." - "" - generateOnConfiguring connectionString suppressOnConfiguring generateOnModelCreating model useDataAnnotations @@ -998,19 +993,18 @@ type FSharpDbContextGenerator } - interface ICSharpDbContextGenerator with - member this.WriteCode - ( - model, - contextName, - connectionString, - contextNamespace, - modelNamespace, - useDataAnnotations, - useNullableReferenceTypes, - suppressConnectionStringWarning, - suppressOnConfiguring - ) = + member this.WriteCode + ( + model, + contextName, + connectionString, + contextNamespace, + modelNamespace, + useDataAnnotations, + useNullableReferenceTypes, + suppressConnectionStringWarning, + suppressOnConfiguring + ) = namespaces.Clear() diff --git a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs index 80b41ba..0ae7946 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs @@ -286,7 +286,7 @@ type FSharpEntityTypeGenerator AttributeWriter(nameof InversePropertyAttribute) let nameMatches = - navigation.DeclaringEntityType.GetPropertiesAndNavigations() + navigation.DeclaringEntityType.GetMembers() |> Seq.exists (fun m -> m.Name = inverseNavigation.DeclaringEntityType.Name) let param = @@ -420,7 +420,7 @@ type FSharpEntityTypeGenerator AttributeWriter(nameof InversePropertyAttribute) let condition = - navigation.DeclaringEntityType.GetPropertiesAndNavigations() + navigation.DeclaringEntityType.GetMembers() |> Seq.exists (fun m -> m.Name = inverseNavigation.DeclaringEntityType.Name) if condition then @@ -607,8 +607,7 @@ type FSharpEntityTypeGenerator generate entityType useDataAnnotation scaffoldNullableColumnsAs - interface ICSharpEntityTypeGenerator with - member this.WriteCode(entityType, ``namespace``, useDataAnnotations, useNullableReferenceTypes) = + member this.WriteCode(entityType, ``namespace``, useDataAnnotations, useNullableReferenceTypes) = let scaffoldTypesAs = if notNull config then config.ScaffoldTypesAs diff --git a/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs b/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs index 83ae679..df2ae04 100644 --- a/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs @@ -4,18 +4,18 @@ open System.IO open Microsoft.EntityFrameworkCore.Infrastructure open Microsoft.EntityFrameworkCore.Metadata open Microsoft.EntityFrameworkCore.Scaffolding -open Microsoft.EntityFrameworkCore.Scaffolding.Internal open EntityFrameworkCore.FSharp open EntityFrameworkCore.FSharp.EntityFrameworkExtensions +open EntityFrameworkCore.FSharp.Scaffolding open EntityFrameworkCore.FSharp.SharedTypeExtensions type FSharpModelGenerator ( dependencies: ModelCodeGeneratorDependencies, - contextGenerator: ICSharpDbContextGenerator, - entityTypeGenerator: ICSharpEntityTypeGenerator + contextGenerator: FSharpDbContextGenerator, + entityTypeGenerator: FSharpEntityTypeGenerator ) = inherit ModelCodeGenerator(dependencies) @@ -99,14 +99,11 @@ type FSharpModelGenerator dbContextFileName let contextFile = - ScaffoldedFile(Code = generatedCode, Path = path) + ScaffoldedFile(path, generatedCode) let resultingFiles = ScaffoldedModel(ContextFile = contextFile) - let domainFile = ScaffoldedFile() - domainFile.Path <- (domainFileName + fileExtension) - let createEntityCode (entityType: IEntityType) = entityTypeGenerator.WriteCode( entityType, @@ -130,7 +127,8 @@ type FSharpModelGenerator entityCode } - domainFile.Code <- domainFileCode + let domainFile = + ScaffoldedFile((domainFileName + fileExtension), domainFileCode) resultingFiles.AdditionalFiles.Add(domainFile) diff --git a/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs b/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs index deea5f6..0544d59 100644 --- a/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs +++ b/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs @@ -2,7 +2,7 @@ namespace EntityFrameworkCore.FSharp open System.Collections.Generic open System.Linq -open Microsoft.EntityFrameworkCore.Design.Internal +open Microsoft.EntityFrameworkCore.Design open Microsoft.EntityFrameworkCore.Metadata open Microsoft.EntityFrameworkCore.Infrastructure open Microsoft.EntityFrameworkCore @@ -46,8 +46,6 @@ module internal EntityFrameworkExtensions = let entityDbSetName (e: IEntityType) = e.GetDbSetName() - let modelEntityTypeErrors (m: IModel) = m.GetEntityTypeErrors() - let toAnnotatable (a: IAnnotatable) = a let annotationsToDictionary (annotations: IAnnotation seq) = From 3662d4775ae9c147bb3bae813c9022c79b5a13f7 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 07:00:19 +0700 Subject: [PATCH 05/19] Add C# interop project for TestRelationalTypeMappingSource F# cannot handle C# covariant return types used by RelationalTypeMappingSource in EF Core 10 (new virtual methods with sealed bridge methods). The F# compiler doesn't see the bridge methods as implementing abstract members from TypeMappingSourceBase. Move TestRelationalTypeMappingSource to a C# project and have the F# test project reference it. Also update the F# stub to inherit from the C# base class and fix Clone -> WithStoreTypeAndSize rename. --- .../EFCore.FSharp.Tests.CSharpInterop.csproj | 8 + .../TestRelationalTypeMappingSourceBase.cs | 178 ++++++++++++++++++ .../EFCore.FSharp.Tests.fsproj | 3 +- .../TestRelationalTypeMappingSource.fs | 8 +- 4 files changed, 191 insertions(+), 6 deletions(-) create mode 100644 tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj create mode 100644 tests/EFCore.FSharp.Tests.CSharpInterop/TestRelationalTypeMappingSourceBase.cs diff --git a/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj b/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj new file mode 100644 index 0000000..0640181 --- /dev/null +++ b/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj @@ -0,0 +1,8 @@ + + + net10.0 + + + + + diff --git a/tests/EFCore.FSharp.Tests.CSharpInterop/TestRelationalTypeMappingSourceBase.cs b/tests/EFCore.FSharp.Tests.CSharpInterop/TestRelationalTypeMappingSourceBase.cs new file mode 100644 index 0000000..d82e56e --- /dev/null +++ b/tests/EFCore.FSharp.Tests.CSharpInterop/TestRelationalTypeMappingSourceBase.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Data; +using Microsoft.EntityFrameworkCore.Storage; + +namespace EntityFrameworkCore.FSharp.Test.TestUtilities; + +internal class IntArrayTypeMapping : RelationalTypeMapping +{ + public IntArrayTypeMapping() : base("some_int_array_mapping", typeof(int[])) { } + private IntArrayTypeMapping(RelationalTypeMappingParameters parameters) : base(parameters) { } + protected override RelationalTypeMapping Clone(RelationalTypeMappingParameters parameters) + => new IntArrayTypeMapping(parameters); +} + +internal class TestStringTypeMapping : StringTypeMapping +{ + public TestStringTypeMapping(string storeType, DbType? dbType, bool unicode, int? size, bool fixedLength) + : base(storeType, dbType, unicode, size) { } +} + +public class TestRelationalTypeMappingSource : RelationalTypeMappingSource +{ + private readonly RelationalTypeMapping _string = + new StringTypeMapping("just_string(2000)", null); + + private readonly RelationalTypeMapping _binary = + new ByteArrayTypeMapping("just_binary(max)", dbType: DbType.Binary); + + private readonly RelationalTypeMapping _rowversion = + new ByteArrayTypeMapping("rowversion", dbType: DbType.Binary, size: 8); + + private readonly RelationalTypeMapping _defaultIntMapping = + new IntTypeMapping("default_int_mapping", dbType: DbType.Int32); + + private readonly RelationalTypeMapping _defaultLongMapping = + new LongTypeMapping("default_long_mapping", dbType: DbType.Int64); + + private readonly RelationalTypeMapping _defaultShortMapping = + new ShortTypeMapping("default_short_mapping", dbType: DbType.Int16); + + private readonly RelationalTypeMapping _defaultByteMapping = + new ByteTypeMapping("default_byte_mapping", dbType: DbType.Byte); + + private readonly RelationalTypeMapping _defaultBoolMapping = + new BoolTypeMapping("default_bool_mapping"); + + private readonly RelationalTypeMapping _someIntMapping = + new IntTypeMapping("some_int_mapping"); + + private readonly RelationalTypeMapping _intArray = + new IntArrayTypeMapping(); + + private readonly RelationalTypeMapping _defaultDecimalMapping = + new DecimalTypeMapping("default_decimal_mapping"); + + private readonly RelationalTypeMapping _defaultDateTimeMapping = + new DateTimeTypeMapping("default_datetime_mapping", dbType: DbType.DateTime2); + + private readonly RelationalTypeMapping _defaultDoubleMapping = + new DoubleTypeMapping("default_double_mapping"); + + private readonly RelationalTypeMapping _defaultDateTimeOffsetMapping = + new DateTimeOffsetTypeMapping("default_datetimeoffset_mapping"); + + private readonly RelationalTypeMapping _defaultFloatMapping = + new FloatTypeMapping("default_float_mapping"); + + private readonly RelationalTypeMapping _defaultGuidMapping = + new GuidTypeMapping("default_guid_mapping"); + + private readonly RelationalTypeMapping _defaultTimeSpanMapping = + new TimeSpanTypeMapping("default_timespan_mapping"); + + private readonly IReadOnlyDictionary _simpleMappings; + private readonly IReadOnlyDictionary _simpleNameMappings; + + public TestRelationalTypeMappingSource( + TypeMappingSourceDependencies dependencies, + RelationalTypeMappingSourceDependencies relationalDependencies) + : base(dependencies, relationalDependencies) + { + _simpleMappings = new Dictionary + { + { typeof(int), _defaultIntMapping }, + { typeof(long), _defaultLongMapping }, + { typeof(DateTime), _defaultDateTimeMapping }, + { typeof(Guid), _defaultGuidMapping }, + { typeof(bool), _defaultBoolMapping }, + { typeof(byte), _defaultByteMapping }, + { typeof(double), _defaultDoubleMapping }, + { typeof(DateTimeOffset), _defaultDateTimeOffsetMapping }, + { typeof(char), _defaultIntMapping }, + { typeof(short), _defaultShortMapping }, + { typeof(float), _defaultFloatMapping }, + { typeof(decimal), _defaultDecimalMapping }, + { typeof(TimeSpan), _defaultTimeSpanMapping }, + { typeof(string), _string }, + { typeof(int[]), _intArray }, + }; + + _simpleNameMappings = new Dictionary + { + { "some_int_mapping", _someIntMapping }, + { "some_string(max)", _string }, + { "some_binary(max)", _binary }, + { "money", _defaultDecimalMapping }, + { "dec", _defaultDecimalMapping }, + }; + } + + protected override RelationalTypeMapping FindMapping(in RelationalTypeMappingInfo mappingInfo) + { + var clrType = mappingInfo.ClrType; + var storeTypeName = mappingInfo.StoreTypeName; + + if (clrType == typeof(string)) + { + var isAnsi = mappingInfo.IsUnicode.GetValueOrDefault(); + var isFixedLength = mappingInfo.IsFixedLength.HasValue && mappingInfo.IsFixedLength.Value; + + var baseName = (isAnsi, isFixedLength) switch + { + (true, true) => "ansi_string_fixed", + (true, false) => "ansi_string", + (false, true) => "just_string_fixed", + (false, false) => "just_string", + }; + + int? size = mappingInfo.Size.HasValue + ? mappingInfo.Size + : mappingInfo.IsKeyOrIndex + ? (isAnsi ? 900 : 450) + : null; + + var name = storeTypeName is null + ? $"{baseName}({(size.HasValue ? size.Value.ToString() : "max")})" + : storeTypeName; + + DbType? dbType = isAnsi ? DbType.AnsiString : null; + return new TestStringTypeMapping(name, dbType, !isAnsi, size, isFixedLength); + } + + if (clrType == typeof(byte[])) + { + if (mappingInfo.IsRowVersion.GetValueOrDefault()) + return _rowversion; + + int? size = mappingInfo.Size.HasValue + ? mappingInfo.Size + : mappingInfo.IsKeyOrIndex + ? 900 + : null; + + var name = storeTypeName is null + ? $"just_binary({(size.HasValue ? size.Value.ToString() : "max")})" + : storeTypeName; + + return new ByteArrayTypeMapping(name, DbType.Binary, size); + } + + if (clrType is not null && _simpleMappings.TryGetValue(clrType, out var mapping)) + { + return storeTypeName is not null && !mapping.StoreType.Equals(storeTypeName, StringComparison.Ordinal) + ? mapping.WithStoreTypeAndSize(storeTypeName, mapping.Size) + : mapping; + } + + if (storeTypeName is not null && _simpleNameMappings.TryGetValue(storeTypeName, out var namedMapping)) + { + if (clrType is null || namedMapping.ClrType == clrType) + return namedMapping; + } + + return null; + } +} diff --git a/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj b/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj index e04c5b2..76de2ca 100644 --- a/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj +++ b/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj @@ -12,7 +12,7 @@ - + @@ -38,6 +38,7 @@ + diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs index b0772e0..52e7ed4 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs @@ -15,7 +15,7 @@ type internal IntArrayTypeMapping = new(parameters) = { inherit RelationalTypeMapping(parameters) } - override this.Clone parameters = + override this.Clone(parameters: RelationalTypeMapping.RelationalTypeMappingParameters) = parameters |> IntArrayTypeMapping :> RelationalTypeMapping type internal TestStringTypeMapping(storeType, dbType, unicode, size, fixedLength) = @@ -23,9 +23,7 @@ type internal TestStringTypeMapping(storeType, dbType, unicode, size, fixedLengt type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = - inherit RelationalTypeMappingSource(dependencies, relationalDependencies) - - + inherit TestRelationalTypeMappingSourceBase(dependencies, relationalDependencies) let _string = StringTypeMapping("just_string(2000)", Nullable()) :> RelationalTypeMapping @@ -197,7 +195,7 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = (not isStoreTypeNameNull) && not (mapping.StoreType.Equals(storeTypeName, StringComparison.Ordinal)) then - mapping.Clone(storeTypeName, mapping.Size) + mapping.WithStoreTypeAndSize(storeTypeName, mapping.Size) else mapping | _ -> From bab2165fcef135389dbdb74fcacfbf123df8b370 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 07:00:32 +0700 Subject: [PATCH 06/19] Update test utilities for EF Core 10 Mocks.fs: - Add IHistoryRepository members: Create, CreateAsync, LockReleaseBehavior, AcquireDatabaseLock, AcquireDatabaseLockAsync SqlServerTestHelpers.fs, RelationalTestHelpers.fs: - UseProviderOptions now returns DbContextOptionsBuilder (was void in EF Core 6) FakeDbConnection.fs: - Remove AppendIdentityWhereCondition, AppendSelectAffectedCountCommand, AppendRowsAffectedWhereCondition (removed from UpdateSqlGenerator) BuildReference.fs: - Replace CompileToDynamicAssembly with Compile + Assembly.Load (CompileToDynamicAssembly removed in FSharp.Compiler.Service 43) - Shared FSharpChecker instance with lock for thread safety --- .../TestUtilities/BuildReference.fs | 58 ++++++++++--------- .../FakeProvider/FakeDbConnection.fs | 22 ------- .../TestUtilities/Mocks.fs | 11 ++++ .../TestUtilities/RelationalTestHelpers.fs | 1 + .../TestUtilities/SqlServerTestHelpers.fs | 2 +- 5 files changed, 45 insertions(+), 49 deletions(-) diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs index e4e2f29..22a2ab9 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs @@ -3,6 +3,7 @@ namespace EntityFrameworkCore.FSharp.Test.TestUtilities open System open System.IO open System.Numerics +open System.Reflection open Microsoft.CodeAnalysis open Microsoft.Extensions.DependencyModel open FSharp.Compiler.CodeAnalysis @@ -55,44 +56,49 @@ type BuildSource = { TargetDir: string Sources: string list } + static let checker = FSharpChecker.Create() + static let compilerLock = obj() + member this.BuildInMemory(references: string array) = let projectName = "TestProject" - let checker = FSharpChecker.Create() - let source = String.Join(Environment.NewLine, this.Sources) - let sourceText = SourceText.ofString source + let tmpDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) + Directory.CreateDirectory(tmpDir) |> ignore - let options = - { FSharpParsingOptions.Default with - SourceFiles = [| "empty.fs" |] } + let sourceFile = Path.Combine(tmpDir, "source.fs") + File.WriteAllText(sourceFile, source) - let parseResult = - checker.ParseFile("empty.fs", sourceText, options) - |> Async.RunSynchronously + let outputDll = Path.Combine(tmpDir, projectName + ".dll") - let input = parseResult.ParseTree + let args = + [| yield "fsc.exe" + yield "--noframework" + yield "--target:library" + yield sprintf "--out:%s" outputDll + for r in references do + yield sprintf "-r:%s" r + yield sourceFile |] - let errors, _, assemblyOpt = - checker.CompileToDynamicAssembly( - [ input ], - projectName, - (List.ofArray references), - None, - noframework = true + let errors, exitCode = + lock compilerLock (fun () -> + checker.Compile(args) + |> Async.RunSynchronously ) - |> Async.RunSynchronously - let assembly = - match assemblyOpt with - | Some a -> a - | None -> - let messages = - errors - |> Seq.map (fun e -> e.Message + Environment.NewLine) + if exitCode <> 0 then + let messages = + errors + |> Seq.map (fun e -> e.Message + Environment.NewLine) + + invalidOp (String.Join(Environment.NewLine, messages)) + + let assemblyBytes = File.ReadAllBytes(outputDll) + let assembly = Assembly.Load(assemblyBytes) - invalidOp (String.Join(Environment.NewLine, messages)) + // Clean up temp files + try Directory.Delete(tmpDir, true) with _ -> () assembly diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs index 5c27e38..0db66d2 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs @@ -376,28 +376,6 @@ and FakeSqlGenerator(dependencies) = _appendBatchHeaderCalls <- _appendBatchHeaderCalls + 1 base.AppendBatchHeader(commandStringBuilder) - override this.AppendIdentityWhereCondition(commandStringBuilder, columnModification) = - commandStringBuilder - .Append(base.SqlGenerationHelper.DelimitIdentifier(columnModification.ColumnName)) - .Append(" = ") - .Append("provider_specific_identity()") - |> ignore - - override this.AppendSelectAffectedCountCommand(commandStringBuilder, name, schema, commandPosition) = - commandStringBuilder - .Append("SELECT provider_specific_rowcount();") - .Append(Environment.NewLine) - .Append(Environment.NewLine) - |> ignore - - ResultSetMapping.LastInResultSet - - override this.AppendRowsAffectedWhereCondition(commandStringBuilder, expectedRowsAffected) = - commandStringBuilder - .Append("provider_specific_rowcount() = ") - .Append(expectedRowsAffected) - |> ignore - and [] FakeDbTransaction(connection: FakeDbConnection, ?isolationLevel: IsolationLevel) = inherit DbTransaction() diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs b/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs index 2929914..cc5d424 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs @@ -1,6 +1,7 @@ namespace EntityFrameworkCore.FSharp.Test.TestUtilities open System.Collections.Generic +open System.Threading open System.Threading.Tasks open Microsoft.EntityFrameworkCore.Design.Internal open Microsoft.EntityFrameworkCore.Migrations @@ -32,6 +33,16 @@ type MockHistoryRepository() = member __.GetInsertScript(row) = null + member __.Create() = () + + member __.CreateAsync(cancellationToken: CancellationToken) = Task.CompletedTask + + member __.get_LockReleaseBehavior() = Unchecked.defaultof + + member __.AcquireDatabaseLock() = Unchecked.defaultof + + member __.AcquireDatabaseLockAsync(cancellationToken: CancellationToken) = Task.FromResult(Unchecked.defaultof) + type MockProvider() = interface IDatabaseProvider with member __.Name = "Mock.Provider" diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs b/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs index 59459a6..b0c44d3 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs @@ -32,3 +32,4 @@ type RelationalTestHelpers private () = (optionsBuilder :> IDbContextOptionsBuilderInfrastructure) .AddOrUpdateExtension(extension.WithConnection(fakeConn)) + optionsBuilder diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/SqlServerTestHelpers.fs b/tests/EFCore.FSharp.Tests/TestUtilities/SqlServerTestHelpers.fs index 628787d..1b08060 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/SqlServerTestHelpers.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/SqlServerTestHelpers.fs @@ -15,4 +15,4 @@ type SqlServerTestHelpers private () = override _.UseProviderOptions optionsBuilder = optionsBuilder.UseSqlServer(new SqlConnection("Database=DummyDatabase")) - |> ignore + optionsBuilder From e6180f915cb7e57a11ee048383423e66aa80bcb3 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 07:00:51 +0700 Subject: [PATCH 07/19] Update tests for EF Core 10 API changes FSharpMigrationOperationGeneratorTest: - SqlServerTypeMappingSource: pass SqlServerSingletonOptions() instead of Unchecked.defaultof (NRE in constructor) - WKTReaderType -> WktReaderType - Add namespace declaration to generated F# code - Type annotations for Assembly/MethodInfo reflection calls FSharpMigrationsGeneratorTest: - SqlServerSingletonOptions() for SqlServerTypeMappingSource - Filter RelationalAnnotationNames to string fields only - SortedDictionary -> Dictionary for DbFunctions - FinalizeModel: add skipValidation for annotation check tests - Update annotation exclusion lists with ~35 new EF Core 7-10 annotations (stored procedures, mapping strategies, JSON, etc.) - HasComment -> HasAnnotation for entity type comment - Remove DefiningQuery (removed in EF Core 7) - configure -> configureConventions parameter rename FSharpMigrationsScaffolderTest: - SqlServerSingletonOptions() for SqlServerTypeMappingSource - MigrationsModelDiffer dependencies: IChangeDetector -> IRelationalAnnotationProvider, IUpdateAdapterFactory -> IRowIdentityMapFactory - MigrationsScaffolder: add 4 new required dependencies - Save: add dryRun=false parameter ModelCodeGeneratorTestBase: - CreateConventionBuilder: use addServices parameter instead of passing stripped-down contextServices - Remove GetEntityTypeErrors call - FinalizeModel: remove skipValidation (use default validation) --- .../FSharpMigrationOperationGeneratorTest.fs | 20 ++- .../Design/FSharpMigrationsGeneratorTest.fs | 122 ++++++++++++++---- .../Design/FSharpMigrationsScaffolderTest.fs | 16 ++- .../Internal/ModelCodeGeneratorTestBase.fs | 22 ++-- 4 files changed, 135 insertions(+), 45 deletions(-) diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs index d0b19f2..c905b0b 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs @@ -25,6 +25,7 @@ open EntityFrameworkCore.FSharp.Internal open EntityFrameworkCore.FSharp.Migrations.Design open EntityFrameworkCore.FSharp.Test.TestUtilities open Microsoft.EntityFrameworkCore.Migrations +open Microsoft.EntityFrameworkCore.SqlServer.Infrastructure.Internal open System.Text open System.Data open Microsoft.Data.SqlClient @@ -159,7 +160,7 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> override __.GetSrid value = (value :?> Geometry).SRID - override __.WKTReaderType = typeof + override __.WktReaderType = typeof override __.ConfigureParameter parameter = let t = parameter.GetType() @@ -236,7 +237,7 @@ module FSharpMigrationOperationGeneratorTest = FSharpMigrationOperationGenerator( FSharpHelper( - SqlServerTypeMappingSource(typeMappingSourceDependencies, relationalTypeMappingSourceDependencies) + SqlServerTypeMappingSource(typeMappingSourceDependencies, relationalTypeMappingSourceDependencies, SqlServerSingletonOptions()) ) ) :> ICSharpMigrationOperationGenerator @@ -250,13 +251,18 @@ module FSharpMigrationOperationGeneratorTest = TestServiceFactory.Instance.Create(), RelationalTypeMappingSourceDependencies( [| SqlServerNetTopologySuiteTypeMappingSourcePlugin(NtsGeometryServices.Instance) |] - ) + ), + SqlServerSingletonOptions() ) ) ) let builder = IndentedStringBuilder() + builder.AppendLine "namespace TestOperations" |> ignore + + builder.AppendLine "" |> ignore + builder.AppendLine "open System" |> ignore builder.AppendLine "open Microsoft.EntityFrameworkCore.Migrations" @@ -311,12 +317,12 @@ module FSharpMigrationOperationGeneratorTest = let assembly = build.BuildInMemory(references) let factoryType = - assembly.GetTypes() - |> Seq.find (fun m -> m.Name = "OperationsFactory") + (assembly :> System.Reflection.Assembly).GetTypes() + |> Seq.find (fun (m: System.Type) -> m.Name = "OperationsFactory") - let createMethod = factoryType.GetMethod("Create") + let createMethod = (factoryType : System.Type).GetMethod("Create") let mb = MigrationBuilder(activeProvider = null) - createMethod.Invoke(null, [| mb |]) |> ignore + (createMethod : System.Reflection.MethodInfo).Invoke(null, [| mb |]) |> ignore let result = mb.Operations.Cast<'a>().Single() ``assert`` result diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs index e3abba0..c99f11f 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs @@ -143,10 +143,10 @@ module FSharpMigrationsGeneratorTest = try let snapshotType = - assembly.GetType(modelSnapshotTypeName, throwOnError = true, ignoreCase = false) + (assembly :> System.Reflection.Assembly).GetType(modelSnapshotTypeName, true, false) let contextTypeAttribute = - System.Reflection.CustomAttributeExtensions.GetCustomAttribute(snapshotType) + System.Reflection.CustomAttributeExtensions.GetCustomAttribute(snapshotType :> System.Reflection.MemberInfo) Expect.isNotNull contextTypeAttribute "Should not be null" Expect.equal contextTypeAttribute.ContextType.FullName typeof.FullName "Should be equal" @@ -190,7 +190,8 @@ module FSharpMigrationsGeneratorTest = let sqlServerTypeMappingSource = SqlServerTypeMappingSource( TestServiceFactory.Instance.Create(), - TestServiceFactory.Instance.Create() + TestServiceFactory.Instance.Create(), + Microsoft.EntityFrameworkCore.SqlServer.Infrastructure.Internal.SqlServerSingletonOptions() ) let codeHelper = FSharpHelper(sqlServerTypeMappingSource) @@ -217,6 +218,7 @@ module FSharpMigrationsGeneratorTest = let rlNames = (typeof).GetFields() + |> Seq.filter (fun f -> f.FieldType = typeof) |> Seq.toList let allAnnotations = @@ -242,7 +244,7 @@ module FSharpMigrationsGeneratorTest = metadataItem.SetAnnotation(annotationName, annotation) - modelBuilder.FinalizeModel(designTime = true) + modelBuilder.FinalizeModel(designTime = true, skipValidation = true) |> ignore try @@ -349,13 +351,31 @@ module FSharpMigrationsGeneratorTest = CoreAnnotationNames.ValueConverterType CoreAnnotationNames.ValueComparer CoreAnnotationNames.ValueComparerType - CoreAnnotationNames.KeyValueComparer - CoreAnnotationNames.StructuralValueComparer CoreAnnotationNames.BeforeSaveBehavior CoreAnnotationNames.AfterSaveBehavior CoreAnnotationNames.ProviderClrType CoreAnnotationNames.EagerLoaded CoreAnnotationNames.DuplicateServiceProperties + CoreAnnotationNames.Sentinel + CoreAnnotationNames.ProviderValueComparer + CoreAnnotationNames.ProviderValueComparerType + CoreAnnotationNames.LazyLoadingEnabled + CoreAnnotationNames.ReadOnlyModel + CoreAnnotationNames.PreUniquificationName + CoreAnnotationNames.InverseNavigationsNoAttribute + CoreAnnotationNames.NavigationCandidatesNoAttribute + CoreAnnotationNames.ComplexCandidates + CoreAnnotationNames.DerivedTypes + CoreAnnotationNames.AmbiguousField + CoreAnnotationNames.FullChangeTrackingNotificationsRequired + CoreAnnotationNames.AdHocModel + CoreAnnotationNames.JsonValueReaderWriterType + CoreAnnotationNames.ElementType + CoreAnnotationNames.SkipNavigationBeingConfigured + CoreAnnotationNames.UnsafeAccessors + CoreAnnotationNames.NonNullableConventionState + CoreAnnotationNames.DiscriminatorMappingComplete + CoreAnnotationNames.EmbeddedDiscriminatorName RelationalAnnotationNames.ColumnName RelationalAnnotationNames.ColumnOrder RelationalAnnotationNames.ColumnType @@ -382,14 +402,37 @@ module FSharpMigrationsGeneratorTest = RelationalAnnotationNames.CheckConstraints RelationalAnnotationNames.DefaultSchema RelationalAnnotationNames.Filter - RelationalAnnotationNames.DbFunction RelationalAnnotationNames.DbFunctions RelationalAnnotationNames.MaxIdentifierLength RelationalAnnotationNames.IsFixedLength RelationalAnnotationNames.Collation RelationalAnnotationNames.IsStored RelationalAnnotationNames.RelationalModel - RelationalAnnotationNames.ModelDependencies ] + RelationalAnnotationNames.ModelDependencies + RelationalAnnotationNames.DefaultConstraintName + RelationalAnnotationNames.UseNamedDefaultConstraints + RelationalAnnotationNames.DeleteStoredProcedure + RelationalAnnotationNames.InsertStoredProcedure + RelationalAnnotationNames.UpdateStoredProcedure + RelationalAnnotationNames.MappingStrategy + RelationalAnnotationNames.TpcMappingStrategy + RelationalAnnotationNames.TphMappingStrategy + RelationalAnnotationNames.TptMappingStrategy + RelationalAnnotationNames.RelationalModelFactory + RelationalAnnotationNames.InsertStoredProcedureMappings + RelationalAnnotationNames.InsertStoredProcedureResultColumnMappings + RelationalAnnotationNames.InsertStoredProcedureParameterMappings + RelationalAnnotationNames.DeleteStoredProcedureMappings + RelationalAnnotationNames.DeleteStoredProcedureParameterMappings + RelationalAnnotationNames.UpdateStoredProcedureMappings + RelationalAnnotationNames.UpdateStoredProcedureResultColumnMappings + RelationalAnnotationNames.UpdateStoredProcedureParameterMappings + RelationalAnnotationNames.MappingFragments + RelationalAnnotationNames.FieldValueGetter + RelationalAnnotationNames.ContainerColumnName + RelationalAnnotationNames.ContainerColumnType + RelationalAnnotationNames.JsonPropertyName + RelationalAnnotationNames.StoreType ] |> HashSet let _toTable = @@ -417,8 +460,7 @@ module FSharpMigrationsGeneratorTest = (RelationalAnnotationNames.Comment, (box "My Comment", _toTable - + @"entityTypeBuilder.HasComment(""My Comment"") |> ignore")) - (CoreAnnotationNames.DefiningQuery, (box (Expression.Lambda(Expression.Constant(null))), "")) + + @"entityTypeBuilder.HasAnnotation(""Relational:Comment"", ""My Comment"") |> ignore")) (RelationalAnnotationNames.ViewName, (box "MyView", _nl @@ -447,13 +489,25 @@ module FSharpMigrationsGeneratorTest = CoreAnnotationNames.NavigationAccessMode CoreAnnotationNames.EagerLoaded CoreAnnotationNames.QueryFilter - CoreAnnotationNames.DefiningQuery CoreAnnotationNames.DiscriminatorProperty + CoreAnnotationNames.DiscriminatorMappingComplete CoreAnnotationNames.DiscriminatorValue + CoreAnnotationNames.EmbeddedDiscriminatorName CoreAnnotationNames.InverseNavigations + CoreAnnotationNames.InverseNavigationsNoAttribute CoreAnnotationNames.NavigationCandidates + CoreAnnotationNames.NavigationCandidatesNoAttribute + CoreAnnotationNames.ComplexCandidates + CoreAnnotationNames.DerivedTypes CoreAnnotationNames.AmbiguousNavigations + CoreAnnotationNames.AmbiguousField CoreAnnotationNames.DuplicateServiceProperties + CoreAnnotationNames.FullChangeTrackingNotificationsRequired + CoreAnnotationNames.AdHocModel + CoreAnnotationNames.ReadOnlyModel + CoreAnnotationNames.SkipNavigationBeingConfigured + CoreAnnotationNames.UnsafeAccessors + CoreAnnotationNames.NonNullableConventionState RelationalAnnotationNames.TableName RelationalAnnotationNames.IsTableExcludedFromMigrations RelationalAnnotationNames.ViewName @@ -481,11 +535,34 @@ module FSharpMigrationsGeneratorTest = RelationalAnnotationNames.SequencePrefix RelationalAnnotationNames.CheckConstraints RelationalAnnotationNames.Filter - RelationalAnnotationNames.DbFunction RelationalAnnotationNames.DbFunctions RelationalAnnotationNames.MaxIdentifierLength RelationalAnnotationNames.RelationalModel - RelationalAnnotationNames.ModelDependencies ] + RelationalAnnotationNames.ModelDependencies + RelationalAnnotationNames.DefaultConstraintName + RelationalAnnotationNames.UseNamedDefaultConstraints + RelationalAnnotationNames.DeleteStoredProcedure + RelationalAnnotationNames.InsertStoredProcedure + RelationalAnnotationNames.UpdateStoredProcedure + RelationalAnnotationNames.MappingStrategy + RelationalAnnotationNames.TpcMappingStrategy + RelationalAnnotationNames.TphMappingStrategy + RelationalAnnotationNames.TptMappingStrategy + RelationalAnnotationNames.RelationalModelFactory + RelationalAnnotationNames.InsertStoredProcedureMappings + RelationalAnnotationNames.InsertStoredProcedureResultColumnMappings + RelationalAnnotationNames.InsertStoredProcedureParameterMappings + RelationalAnnotationNames.DeleteStoredProcedureMappings + RelationalAnnotationNames.DeleteStoredProcedureParameterMappings + RelationalAnnotationNames.UpdateStoredProcedureMappings + RelationalAnnotationNames.UpdateStoredProcedureResultColumnMappings + RelationalAnnotationNames.UpdateStoredProcedureParameterMappings + RelationalAnnotationNames.MappingFragments + RelationalAnnotationNames.FieldValueGetter + RelationalAnnotationNames.ContainerColumnName + RelationalAnnotationNames.ContainerColumnType + RelationalAnnotationNames.JsonPropertyName + RelationalAnnotationNames.StoreType ] |> HashSet let columnMapping = @@ -568,7 +645,8 @@ module FSharpMigrationsGeneratorTest = let sqlServerTypeMappingSource = SqlServerTypeMappingSource( TestServiceFactory.Instance.Create(), - TestServiceFactory.Instance.Create() + TestServiceFactory.Instance.Create(), + Microsoft.EntityFrameworkCore.SqlServer.Infrastructure.Internal.SqlServerSingletonOptions() ) let codeHelper = FSharpHelper(sqlServerTypeMappingSource) @@ -671,15 +749,15 @@ module FSharpMigrationsGeneratorTest = let modelBuilder = SqlServerTestHelpers.Instance.CreateConventionBuilder( - configure = (fun c -> c.RemoveAllConventions()) + configureConventions = (fun c -> c.RemoveAllConventions()) ) - modelBuilder.HasAnnotation("Some:EnumValue", RegexOptions.Multiline) + (modelBuilder : ModelBuilder).HasAnnotation("Some:EnumValue", RegexOptions.Multiline) |> ignore modelBuilder.HasAnnotation( RelationalAnnotationNames.DbFunctions, - SortedDictionary() + Dictionary() ) |> ignore @@ -805,12 +883,12 @@ module FSharpMigrationsGeneratorTest = let assembly = build.BuildInMemory(references) let migrationType = - assembly.GetType("MyNamespace.MyMigration", throwOnError = true, ignoreCase = false) + (assembly :> System.Reflection.Assembly).GetType("MyNamespace.MyMigration", true, false) let attribute = - migrationType.GetCustomAttributes(false) + (migrationType :> System.Reflection.MemberInfo).GetCustomAttributes(false) |> Seq.choose - (fun t -> + (fun (t: obj) -> match t with | :? DbContextAttribute as a -> Some a | _ -> None) @@ -820,8 +898,8 @@ module FSharpMigrationsGeneratorTest = Activator.CreateInstance(migrationType) :?> Migration Expect.equal - attribute.ContextType.FullName - (typeof).FullName + (attribute.ContextType.FullName) + ((typeof).FullName) $"Expected context type {nameof MyContext}" Expect.equal migration.UpOperations.Count 4 "Expected 4 up operations" diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs index 5cc0073..0b9352f 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs @@ -28,6 +28,7 @@ open Microsoft.Extensions.DependencyInjection open EntityFrameworkCore.FSharp.Internal open EntityFrameworkCore.FSharp.Migrations.Design open EntityFrameworkCore.FSharp.Test.TestUtilities +open Microsoft.EntityFrameworkCore.SqlServer.Infrastructure.Internal open Expecto open Microsoft.EntityFrameworkCore.Internal @@ -56,7 +57,8 @@ module FSharpMigrationsScaffolderTest = let sqlServerTypeMappingSource = SqlServerTypeMappingSource( TestServiceFactory.Instance.Create(), - TestServiceFactory.Instance.Create() + TestServiceFactory.Instance.Create(), + SqlServerSingletonOptions() ) let sqlServerAnnotationCodeGenerator = @@ -96,8 +98,8 @@ module FSharpMigrationsScaffolderTest = TestServiceFactory.Instance.Create() ), MigrationsAnnotationProvider(MigrationsAnnotationProviderDependencies()), - services.GetRequiredService(), - services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), services.GetRequiredService() ), idGenerator, @@ -137,7 +139,11 @@ module FSharpMigrationsScaffolderTest = services.GetRequiredService(), services.GetRequiredService>(), services.GetRequiredService(), - services.GetRequiredService() + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService() ) ) ) @@ -209,7 +215,7 @@ module FSharpMigrationsScaffolderTest = scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") let saveResult = - scaffolder.Save(projectDir, migration, null) + scaffolder.Save(projectDir, migration, null, false) Expect.isTrue (File.Exists saveResult.MigrationFile) "MigrationFile should exist" Expect.isTrue (File.Exists saveResult.MetadataFile) "MetadataFile should exist" diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs index a28a700..042b1cc 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs @@ -99,26 +99,26 @@ type ModelCodeGeneratorTestBase() = (additionalSources: string list) = - let designServices = - ServiceCollection() :> IServiceCollection // Add F# overrides let efCoreFSharpServices = EFCoreFSharpServices.Default - efCoreFSharpServices.ConfigureDesignTimeServices designServices - this.AddModelServices designServices + let addModelServices = this.AddModelServices let modelBuilder = - SqlServerTestHelpers.Instance.CreateConventionBuilder(customServices = designServices) - - modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) + SqlServerTestHelpers.Instance.CreateConventionBuilder( + addServices = fun services -> + efCoreFSharpServices.ConfigureDesignTimeServices services + addModelServices services + services + ) + + (modelBuilder : ModelBuilder).Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore let _ = buildModel (modelBuilder) - let _ = modelBuilder.Model.GetEntityTypeErrors() - let model = - modelBuilder.FinalizeModel(designTime = true, skipValidation = true) + modelBuilder.FinalizeModel() let services = createServices () efCoreFSharpServices.ConfigureDesignTimeServices services @@ -156,6 +156,6 @@ type ModelCodeGeneratorTestBase() = let assembly = build.BuildInMemory references let context = - assembly.CreateInstance("TestNamespace.TestDbContext") :?> DbContext + (assembly : System.Reflection.Assembly).CreateInstance("TestNamespace.TestDbContext") :?> DbContext assertModel context.Model From 168f69076f5ec38797e6b3e935440a995e123abe Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 10:50:26 +0700 Subject: [PATCH 08/19] Fix build script for .NET 10 API changes - Changelog.New: add missing 5th parameter (references list) - Regex.IsMatch: add type annotation to resolve overload ambiguity --- build/build.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/build.fs b/build/build.fs index 1fdf1e2..26e83ae 100644 --- a/build/build.fs +++ b/build/build.fs @@ -469,7 +469,7 @@ let updateChangelog ctx = ) let newChangelog = - Changelog.Changelog.New(changelog.Header, changelog.Description, None, newEntry :: changelog.Entries) + Changelog.Changelog.New(changelog.Header, changelog.Description, None, newEntry :: changelog.Entries, []) latestEntry <- newEntry @@ -494,7 +494,7 @@ let updateChangelog ctx = |> List.ofSeq |> List.rev - let isRef line = + let isRef (line: string) = System.Text.RegularExpressions.Regex.IsMatch(line, @"^\[.+?\]:\s?[a-z]+://.*$") let linkReferenceTargets = From d93783f58945c90a1b254a425ceb5efa3d86e990 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 10:55:52 +0700 Subject: [PATCH 09/19] Run fantomas formatting and update documentation for .NET 10 - Run fantomas on all source, test, and build files (48 files formatted) - Update SDK version requirements in README.md, GETTING_STARTED.md, and docsSrc/Tutorials/Getting_Started.md (.NET 5.0 -> 10.0) - Add CHANGELOG.md entry for 10.0.0 release --- CHANGELOG.md | 12 +- GETTING_STARTED.md | 2 +- README.md | 2 +- build/build.fs | 371 ++++------ docsSrc/Tutorials/Getting_Started.md | 2 +- src/EFCore.FSharp/AssemblyInfo.fs | 38 +- src/EFCore.FSharp/DbContextHelpers.fs | 54 +- src/EFCore.FSharp/EFCoreFSharpServices.fs | 3 +- .../Extensions/ModelBuilderExtensions.fs | 38 +- src/EFCore.FSharp/Internal/FSharpHelper.fs | 229 +++--- src/EFCore.FSharp/Internal/FSharpUtilities.fs | 35 +- .../FSharpMigrationOperationGenerator.fs | 116 +--- .../Design/FSharpMigrationsGenerator.fs | 19 +- .../Design/FSharpMigrationsScaffolder.fs | 23 +- .../Design/FSharpSnapshotGenerator.fs | 355 ++++------ .../Internal/FSharpMigrationsModelDiffer.fs | 31 +- .../Scaffolding/FSharpDbContextGenerator.fs | 319 ++++----- .../Scaffolding/FSharpEntityTypeGenerator.fs | 154 ++-- .../Internal/FSharpModelGenerator.fs | 19 +- .../Translations/IsNullTranslation.fs | 1 + src/EFCore.FSharp/Translations/Translation.fs | 3 +- .../Utilities/EntityFrameworkExtensions.fs | 21 +- src/EFCore.FSharp/Utilities/Multigraph.fs | 42 +- .../Utilities/SharedTypeExtensions.fs | 81 +-- src/EFCore.FSharp/Utilities/StringBuffer.fs | 17 +- .../ValueConverters/Converters.fs | 42 +- tests/EFCore.FSharp.Tests/AssemblyInfo.fs | 38 +- .../DbContextHelperTests.fs | 80 +-- .../Internal/FSharpUtilitiesTest.fs | 40 +- .../FSharpMigrationOperationGeneratorTest.fs | 132 ++-- .../Design/FSharpMigrationsGeneratorTest.fs | 655 +++++++----------- .../Design/FSharpMigrationsScaffolderTest.fs | 27 +- .../Internal/FSharpDbContextGeneratorTest.fs | 90 ++- .../Internal/FSharpModelGeneratorTests.fs | 45 +- .../Internal/ModelCodeGeneratorTestBase.fs | 32 +- .../TestUtilities/BuildReference.fs | 20 +- .../FakeProvider/FakeDbConnection.fs | 18 +- .../TestUtilities/Mocks.fs | 9 +- .../TestUtilities/RelationalTestHelpers.fs | 10 +- .../TestModificationCommandBatchFactory.fs | 7 +- .../TestProviderCodeGenerator.fs | 16 +- .../TestRelationalTypeMappingSource.fs | 51 +- .../TestUtilities/TestServiceFactory.fs | 94 ++- .../Translations/IsNullTranslationTests.fs | 21 +- .../Translations/OptionTranslationTests.fs | 21 +- .../SingleCaseUnionTranslationTests.fs | 6 +- .../Utilities/StringBufferTests.fs | 30 +- .../ValueConverters/ValueConvertersTest.fs | 17 +- 48 files changed, 1271 insertions(+), 2217 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecf6f46..2a9c41e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [10.0.0] - 2026-04-05 + +### Changed +- Migrated to .NET 10 / EF Core 10 +- Updated all dependencies: FSharp.Core 6→9, FSharp.Compiler.Service 41→43, paket 6→10, fantomas 4→6, FAKE 5→6 +- Adapted to EF Core 10 breaking changes (removed/renamed APIs, new interface members, constructor changes) +- Updated CI workflow to .NET 10 with latest GitHub Actions +- Added C# interop project for TestRelationalTypeMappingSource (F# cannot handle covariant return types) + ## [6.0.7] - 2022-06-26 ### Fixed @@ -68,7 +77,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Automatic registration of DesignTimeServices - https://github.com/efcore/EFCore.FSharp/pull/86 - DbContextHelpers - curried functions for interacting with DbContext to allow for a more 'native' F# experience -[Unreleased]: https://github.com/efcore/EFCore.FSharp/compare/v6.0.7...HEAD +[Unreleased]: https://github.com/efcore/EFCore.FSharp/compare/v10.0.0...HEAD +[10.0.0]: https://github.com/efcore/EFCore.FSharp/compare/v6.0.7...v10.0.0 [6.0.7]: https://github.com/efcore/EFCore.FSharp/compare/v6.0.6...v6.0.7 [6.0.6]: https://github.com/efcore/EFCore.FSharp/compare/v6.0.5...v6.0.6 [6.0.5]: https://github.com/efcore/EFCore.FSharp/compare/v6.0.4...v6.0.5 diff --git a/GETTING_STARTED.md b/GETTING_STARTED.md index fa4d78e..6b582e8 100644 --- a/GETTING_STARTED.md +++ b/GETTING_STARTED.md @@ -6,7 +6,7 @@ This guide is for a simple single-project setup rather than a production-ready t This guide assumes: -- You have the `.NET Core SDK` installed (tested with version 3.1, though it may work with other versions) +- You have the `.NET SDK` installed (version 10.0 or higher) - You have `SQLite` installed and a basic knowledge of how to explore a SQLite database # Setup diff --git a/README.md b/README.md index a3198b1..d83c6af 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ This can then be referenced as usual. Make sure the following **requirements** are installed on your system: -- [dotnet SDK](https://www.microsoft.com/net/download/core) 5.0 or higher +- [dotnet SDK](https://www.microsoft.com/net/download/core) 10.0 or higher or diff --git a/build/build.fs b/build/build.fs index 26e83ae..e31603e 100644 --- a/build/build.fs +++ b/build/build.fs @@ -14,12 +14,11 @@ let environVarAsBoolOrDefault varName defaultValue = let truthyConsts = [ "1"; "Y"; "YES"; "T"; "TRUE" ] try - let envvar = - (Environment.environVar varName).ToUpper() + let envvar = (Environment.environVar varName).ToUpper() truthyConsts |> List.exists ((=) envvar) - with - | _ -> defaultValue + with _ -> + defaultValue //----------------------------------------------------------------------------- // Metadata and Configuration @@ -27,35 +26,22 @@ let environVarAsBoolOrDefault varName defaultValue = let productName = "EFCore.FSharp" -let sln = - __SOURCE_DIRECTORY__ - ".." - "EFCore.FSharp.sln" +let sln = __SOURCE_DIRECTORY__ ".." "EFCore.FSharp.sln" let srcCodeGlob = !!(__SOURCE_DIRECTORY__ ".." "src/**/*.fs") ++ (__SOURCE_DIRECTORY__ ".." "src/**/*.fsx") - -- (__SOURCE_DIRECTORY__ - ".." - "src/**/obj/**/*.fs") + -- (__SOURCE_DIRECTORY__ ".." "src/**/obj/**/*.fs") let testsCodeGlob = !!(__SOURCE_DIRECTORY__ ".." "tests/**/*.fs") ++ (__SOURCE_DIRECTORY__ ".." "tests/**/*.fsx") - -- (__SOURCE_DIRECTORY__ - ".." - "tests/**/obj/**/*.fs") + -- (__SOURCE_DIRECTORY__ ".." "tests/**/obj/**/*.fs") -let srcGlob = - __SOURCE_DIRECTORY__ - ".." - "src/**/*.??proj" +let srcGlob = __SOURCE_DIRECTORY__ ".." "src/**/*.??proj" -let testsGlob = - __SOURCE_DIRECTORY__ - ".." - "tests/**/*.??proj" +let testsGlob = __SOURCE_DIRECTORY__ ".." "tests/**/*.??proj" let srcAndTest = !!srcGlob ++ testsGlob @@ -64,36 +50,27 @@ let distGlob = distDir "*.nupkg" let coverageThresholdPercent = 55 -let coverageReportDir = - __SOURCE_DIRECTORY__ - ".." - "docs" - "coverage" +let coverageReportDir = __SOURCE_DIRECTORY__ ".." "docs" "coverage" let docsDir = __SOURCE_DIRECTORY__ ".." "docs" -let docsSrcDir = - __SOURCE_DIRECTORY__ ".." "docsSrc" +let docsSrcDir = __SOURCE_DIRECTORY__ ".." "docsSrc" -let docsToolDir = - __SOURCE_DIRECTORY__ ".." "docsTool" +let docsToolDir = __SOURCE_DIRECTORY__ ".." "docsTool" let gitOwner = "efcore" let gitRepoName = "EFCore.FSharp" -let gitHubRepoUrl = - sprintf "https://github.com/%s/%s" gitOwner gitRepoName +let gitHubRepoUrl = sprintf "https://github.com/%s/%s" gitOwner gitRepoName let releaseBranch = "master" let tagFromVersionNumber versionNumber = sprintf "v%s" versionNumber -let changelogFilename = - __SOURCE_DIRECTORY__ ".." "CHANGELOG.md" +let changelogFilename = __SOURCE_DIRECTORY__ ".." "CHANGELOG.md" -let changelog = - Fake.Core.Changelog.load changelogFilename +let changelog = Fake.Core.Changelog.load changelogFilename let mutable latestEntry = if Seq.isEmpty changelog.Entries then @@ -106,36 +83,26 @@ let mutable changelogBackupFilename = "" let publishUrl = "https://www.nuget.org" -let docsSiteBaseUrl = - sprintf "https://%s.github.io/%s" gitOwner gitRepoName +let docsSiteBaseUrl = sprintf "https://%s.github.io/%s" gitOwner gitRepoName -let disableCodeCoverage = - environVarAsBoolOrDefault "DISABLE_COVERAGE" false +let disableCodeCoverage = environVarAsBoolOrDefault "DISABLE_COVERAGE" false -let githubToken = - Environment.environVarOrNone "GITHUB_TOKEN" +let githubToken = Environment.environVarOrNone "GITHUB_TOKEN" -let nugetToken = - Environment.environVarOrNone "NUGET_TOKEN" +let nugetToken = Environment.environVarOrNone "NUGET_TOKEN" //----------------------------------------------------------------------------- // Helpers //----------------------------------------------------------------------------- let isRelease (targets: Target list) = - targets - |> Seq.map (fun t -> t.Name) - |> Seq.exists ((=) "Release") + targets |> Seq.map (fun t -> t.Name) |> Seq.exists ((=) "Release") let invokeAsync f = async { f () } let configuration (targets: Target list) = - let defaultVal = - if isRelease targets then - "Release" - else - "Debug" + let defaultVal = if isRelease targets then "Release" else "Debug" match Environment.environVarOrDefault "CONFIGURATION" defaultVal with | "Debug" -> DotNet.BuildConfiguration.Debug @@ -154,8 +121,8 @@ let rec retryIfInCI times fn = if times > 1 then try fn () - with - | _ -> retryIfInCI (times - 1) fn + with _ -> + retryIfInCI (times - 1) fn else fn () | _ -> fn () @@ -174,7 +141,7 @@ module Changelog = | Changelog.Change.Fixed s | Changelog.Change.Removed s | Changelog.Change.Security s - | Changelog.Change.Custom (_, s) -> String.IsNullOrWhiteSpace s.CleanedText + | Changelog.Change.Custom(_, s) -> String.IsNullOrWhiteSpace s.CleanedText let isChangelogEmpty () = let isEmpty = @@ -199,10 +166,9 @@ module Changelog = // Changelog entries come already sorted, most-recent first, by the Changelog module let prevEntry = changelog.Entries - |> List.skipWhile - (fun entry -> - entry.SemVer.PreRelease.IsSome - && versionTuple entry.SemVer = versionTuple newVersion) + |> List.skipWhile (fun entry -> + entry.SemVer.PreRelease.IsSome + && versionTuple entry.SemVer = versionTuple newVersion) |> List.tryHead let linkTarget = @@ -229,7 +195,7 @@ module Changelog = | Some desc -> sprintf "%s\n\n%s" (desc.Trim()) linkReference { latestEntry with - Description = Some description } + Description = Some description } .ToString() let getVersionNumber envVarName ctx = @@ -242,10 +208,7 @@ module Changelog = if SemVer.isValid verArg then verArg - elif - verArg.StartsWith("v") - && SemVer.isValid verArg.[1..] - then + elif verArg.StartsWith("v") && SemVer.isValid verArg.[1..] then let target = ctx.Context.FinalTarget Trace.traceImportantfn @@ -280,8 +243,7 @@ module dotnet = let run cmdParam args = DotNet.exec cmdParam "run" args let tool optionConfig command args = - DotNet.exec optionConfig (sprintf "%s" command) args - |> failOnBadExitAndPrint + DotNet.exec optionConfig (sprintf "%s" command) args |> failOnBadExitAndPrint let reportgenerator optionConfig args = tool optionConfig "reportgenerator" args @@ -302,6 +264,7 @@ module FSharpAnalyzers = | Fail_On_Warnings of string list | Ignore_Files of string list | Verbose + interface IArgParserTemplate with member s.Usage = "" @@ -311,8 +274,7 @@ open DocsTool.CLIArgs module DocsTool = open Argu - let buildparser = - ArgumentParser.Create(programName = "docstool") + let buildparser = ArgumentParser.Create(programName = "docstool") let buildCLI () = [ BuildArgs.SiteBaseUrl docsSiteBaseUrl @@ -328,12 +290,11 @@ module DocsTool = dotnet.run (fun args -> { args with - WorkingDirectory = docsToolDir }) + WorkingDirectory = docsToolDir }) (sprintf " -- build %s" (buildCLI ())) |> failOnBadExitAndPrint - let watchparser = - ArgumentParser.Create(programName = "docstool") + let watchparser = ArgumentParser.Create(programName = "docstool") let watchCLI () = [ WatchArgs.ProjectGlob srcGlob @@ -347,7 +308,7 @@ module DocsTool = dotnet.watch (fun args -> { args with - WorkingDirectory = docsToolDir }) + WorkingDirectory = docsToolDir }) "run" (sprintf "-- watch %s" (watchCLI ())) |> failOnBadExitAndPrint @@ -362,36 +323,25 @@ let allReleaseChecks () = let clean _ = - [ "bin" - "temp" - distDir - coverageReportDir ] - |> Shell.cleanDirs + [ "bin"; "temp"; distDir; coverageReportDir ] |> Shell.cleanDirs !!srcGlob ++ testsGlob - |> Seq.collect - (fun p -> - [ "bin"; "obj" ] - |> Seq.map (fun sp -> IO.Path.GetDirectoryName p sp)) + |> Seq.collect (fun p -> [ "bin"; "obj" ] |> Seq.map (fun sp -> IO.Path.GetDirectoryName p sp)) |> Shell.cleanDirs - [ "paket-files/paket.restore.cached" ] - |> Seq.iter Shell.rm + [ "paket-files/paket.restore.cached" ] |> Seq.iter Shell.rm let dotnetRestore _ = [ sln ] - |> Seq.map - (fun dir -> - fun () -> - let args = [] |> String.concat " " - - DotNet.restore - (fun c -> - { c with - Common = - c.Common - |> DotNet.Options.withCustomParams (Some(args)) }) - dir) + |> Seq.map (fun dir -> + fun () -> + let args = [] |> String.concat " " + + DotNet.restore + (fun c -> + { c with + Common = c.Common |> DotNet.Options.withCustomParams (Some(args)) }) + dir) |> Seq.iter (retryIfInCI 10) let updateChangelog ctx = @@ -400,61 +350,52 @@ let updateChangelog ctx = | None -> None, [] | Some u -> u.Description, u.Changes - let verStr = - ctx - |> Changelog.getVersionNumber "RELEASE_VERSION" + let verStr = ctx |> Changelog.getVersionNumber "RELEASE_VERSION" let newVersion = SemVer.parse verStr changelog.Entries |> List.tryFind (fun entry -> entry.SemVer = newVersion) - |> Option.iter - (fun entry -> - Trace.traceErrorfn - "Version %s already exists in %s, released on %s" - verStr - changelogFilename - (if entry.Date.IsSome then - entry.Date.Value.ToString("yyyy-MM-dd") - else - "(no date specified)") - - failwith "Can't release with a duplicate version number") + |> Option.iter (fun entry -> + Trace.traceErrorfn + "Version %s already exists in %s, released on %s" + verStr + changelogFilename + (if entry.Date.IsSome then + entry.Date.Value.ToString("yyyy-MM-dd") + else + "(no date specified)") + + failwith "Can't release with a duplicate version number") changelog.Entries |> List.tryFind (fun entry -> entry.SemVer > newVersion) - |> Option.iter - (fun entry -> - Trace.traceErrorfn - "You're trying to release version %s, but a later version %s already exists, released on %s" - verStr - entry.SemVer.AsString - (if entry.Date.IsSome then - entry.Date.Value.ToString("yyyy-MM-dd") - else - "(no date specified)") - - failwith "Can't release with a version number older than an existing release") + |> Option.iter (fun entry -> + Trace.traceErrorfn + "You're trying to release version %s, but a later version %s already exists, released on %s" + verStr + entry.SemVer.AsString + (if entry.Date.IsSome then + entry.Date.Value.ToString("yyyy-MM-dd") + else + "(no date specified)") + + failwith "Can't release with a version number older than an existing release") let versionTuple version = (version.Major, version.Minor, version.Patch) let prereleaseEntries = changelog.Entries - |> List.filter - (fun entry -> - entry.SemVer.PreRelease.IsSome - && versionTuple entry.SemVer = versionTuple newVersion) + |> List.filter (fun entry -> + entry.SemVer.PreRelease.IsSome + && versionTuple entry.SemVer = versionTuple newVersion) let prereleaseChanges = prereleaseEntries - |> List.collect - (fun entry -> - entry.Changes - |> List.filter (not << Changelog.isEmptyChange)) + |> List.collect (fun entry -> entry.Changes |> List.filter (not << Changelog.isEmptyChange)) - let assemblyVersion, nugetVersion = - Changelog.parseVersions newVersion.AsString + let assemblyVersion, nugetVersion = Changelog.parseVersions newVersion.AsString linkReferenceForLatestEntry <- Changelog.mkLinkReference newVersion changelog @@ -476,8 +417,7 @@ let updateChangelog ctx = // Save changelog to temporary file before making any edits changelogBackupFilename <- System.IO.Path.GetTempFileName() - changelogFilename - |> Shell.copyFile changelogBackupFilename + changelogFilename |> Shell.copyFile changelogBackupFilename Target.activateFinal "DeleteChangelogBackupFile" @@ -489,10 +429,7 @@ let updateChangelog ctx = let linkReferenceForUnreleased = sprintf "[Unreleased]: %s/compare/%s...%s" gitHubRepoUrl (tagFromVersionNumber newVersion.AsString) "HEAD" - let tailLines = - File.read changelogFilename - |> List.ofSeq - |> List.rev + let tailLines = File.read changelogFilename |> List.ofSeq |> List.rev let isRef (line: string) = System.Text.RegularExpressions.Regex.IsMatch(line, @"^\[.+?\]:\s?[a-z]+://.*$") @@ -505,27 +442,19 @@ let updateChangelog ctx = let newLinkReferenceTargets = match linkReferenceTargets with - | [] -> - [ linkReferenceForUnreleased - linkReferenceForLatestEntry ] + | [] -> [ linkReferenceForUnreleased; linkReferenceForLatestEntry ] | first :: rest when first |> String.startsWith "[Unreleased]:" -> - linkReferenceForUnreleased - :: linkReferenceForLatestEntry :: rest - | first :: rest -> - linkReferenceForUnreleased - :: linkReferenceForLatestEntry :: first :: rest + linkReferenceForUnreleased :: linkReferenceForLatestEntry :: rest + | first :: rest -> linkReferenceForUnreleased :: linkReferenceForLatestEntry :: first :: rest let blankLineCount = - tailLines - |> Seq.takeWhile String.isNullOrWhiteSpace - |> Seq.length + tailLines |> Seq.takeWhile String.isNullOrWhiteSpace |> Seq.length let linkRefCount = linkReferenceTargets |> List.length let skipCount = blankLineCount + linkRefCount let updatedLines = - List.rev (tailLines |> List.skip skipCount) - @ newLinkReferenceTargets + List.rev (tailLines |> List.skip skipCount) @ newLinkReferenceTargets File.write false changelogFilename updatedLines @@ -534,8 +463,7 @@ let updateChangelog ctx = let revertChangelog _ = if String.isNotNullOrEmpty changelogBackupFilename then - changelogBackupFilename - |> Shell.copyFile changelogFilename + changelogBackupFilename |> Shell.copyFile changelogFilename let deleteChangelogBackupFile _ = if String.isNotNullOrEmpty changelogBackupFilename then @@ -543,14 +471,13 @@ let deleteChangelogBackupFile _ = let dotnetBuild ctx = let args = - [ sprintf "/p:PackageVersion=%s" latestEntry.NuGetVersion - "--no-restore" ] + [ sprintf "/p:PackageVersion=%s" latestEntry.NuGetVersion; "--no-restore" ] DotNet.build (fun c -> { c with - Configuration = configuration (ctx.Context.AllExecutingTargets) - Common = c.Common |> DotNet.Options.withAdditionalArgs args + Configuration = configuration (ctx.Context.AllExecutingTargets) + Common = c.Common |> DotNet.Options.withAdditionalArgs args }) sln @@ -560,26 +487,19 @@ let fsharpAnalyzers _ = ArgumentParser.Create(programName = "fsharp-analyzers") !!srcGlob - |> Seq.iter - (fun proj -> - let args = - [ FSharpAnalyzers.Analyzers_Path( - __SOURCE_DIRECTORY__ - ".." - "packages/analyzers" - ) - FSharpAnalyzers.Arguments.Project proj - FSharpAnalyzers.Arguments.Fail_On_Warnings [ "BDH0002" ] - FSharpAnalyzers.Verbose ] - |> argParser.PrintCommandLineArgumentsFlat - - dotnet.fsharpAnalyzer id args) + |> Seq.iter (fun proj -> + let args = + [ FSharpAnalyzers.Analyzers_Path(__SOURCE_DIRECTORY__ ".." "packages/analyzers") + FSharpAnalyzers.Arguments.Project proj + FSharpAnalyzers.Arguments.Fail_On_Warnings [ "BDH0002" ] + FSharpAnalyzers.Verbose ] + |> argParser.PrintCommandLineArgumentsFlat + + dotnet.fsharpAnalyzer id args) let dotnetTest ctx = let excludeCoverage = - !!testsGlob - |> Seq.map IO.Path.GetFileNameWithoutExtension - |> String.concat "|" + !!testsGlob |> Seq.map IO.Path.GetFileNameWithoutExtension |> String.concat "|" let args = [ "--no-build" @@ -592,18 +512,14 @@ let dotnetTest ctx = (fun c -> { c with - Configuration = configuration (ctx.Context.AllExecutingTargets) - Common = c.Common |> DotNet.Options.withAdditionalArgs args }) + Configuration = configuration (ctx.Context.AllExecutingTargets) + Common = c.Common |> DotNet.Options.withAdditionalArgs args }) sln let generateCoverageReport _ = - let coverageReports = - !! "tests/**/coverage*.xml" |> String.concat ";" + let coverageReports = !! "tests/**/coverage*.xml" |> String.concat ";" - let sourceDirs = - !!srcGlob - |> Seq.map Path.getDirectory - |> String.concat ";" + let sourceDirs = !!srcGlob |> Seq.map Path.getDirectory |> String.concat ";" let independentArgs = [ sprintf "-reports:\"%s\"" coverageReports @@ -619,29 +535,19 @@ let generateCoverageReport _ = let watchTests _ = !!testsGlob - |> Seq.map - (fun proj -> - fun () -> - dotnet.watch - (fun opt -> - opt - |> DotNet.Options.withWorkingDirectory (IO.Path.GetDirectoryName proj)) - "test" - "" - |> ignore) - |> Seq.iter ( - invokeAsync - >> Async.Catch - >> Async.Ignore - >> Async.Start - ) + |> Seq.map (fun proj -> + fun () -> + dotnet.watch + (fun opt -> opt |> DotNet.Options.withWorkingDirectory (IO.Path.GetDirectoryName proj)) + "test" + "" + |> ignore) + |> Seq.iter (invokeAsync >> Async.Catch >> Async.Ignore >> Async.Start) printfn "Press Ctrl+C (or Ctrl+Break) to stop..." let cancelEvent = - Console.CancelKeyPress - |> Async.AwaitEvent - |> Async.RunSynchronously + Console.CancelKeyPress |> Async.AwaitEvent |> Async.RunSynchronously cancelEvent.Cancel <- true @@ -670,33 +576,22 @@ let generateAssemblyInfo _ = AssemblyInfo.Metadata("GitHash", Git.Information.getCurrentSHA1 (null)) ] let getProjectDetails (projectPath: string) = - let projectName = - IO.Path.GetFileNameWithoutExtension(projectPath) + let projectName = IO.Path.GetFileNameWithoutExtension(projectPath) (projectPath, projectName, IO.Path.GetDirectoryName(projectPath), (getAssemblyInfoAttributes projectName)) srcAndTest |> Seq.map getProjectDetails - |> Seq.iter - (fun (projFileName, _, folderName, attributes) -> - match projFileName with - | Fsproj -> AssemblyInfoFile.createFSharp (folderName "AssemblyInfo.fs") attributes - | Csproj -> - AssemblyInfoFile.createCSharp - ((folderName "Properties") - "AssemblyInfo.cs") - attributes - | Vbproj -> - AssemblyInfoFile.createVisualBasic - ((folderName "My Project") - "AssemblyInfo.vb") - attributes) + |> Seq.iter (fun (projFileName, _, folderName, attributes) -> + match projFileName with + | Fsproj -> AssemblyInfoFile.createFSharp (folderName "AssemblyInfo.fs") attributes + | Csproj -> AssemblyInfoFile.createCSharp ((folderName "Properties") "AssemblyInfo.cs") attributes + | Vbproj -> AssemblyInfoFile.createVisualBasic ((folderName "My Project") "AssemblyInfo.vb") attributes) let dotnetPack ctx = // Get release notes with properly-linked version number let releaseNotes = - latestEntry - |> Changelog.mkReleaseNotes linkReferenceForLatestEntry + latestEntry |> Changelog.mkReleaseNotes linkReferenceForLatestEntry let args = [ sprintf "/p:PackageVersion=%s" latestEntry.NuGetVersion @@ -705,9 +600,9 @@ let dotnetPack ctx = DotNet.pack (fun c -> { c with - Configuration = configuration (ctx.Context.AllExecutingTargets) - OutputPath = Some distDir - Common = c.Common |> DotNet.Options.withAdditionalArgs args }) + Configuration = configuration (ctx.Context.AllExecutingTargets) + OutputPath = Some distDir + Common = c.Common |> DotNet.Options.withAdditionalArgs args }) sln let sourceLinkTest _ = @@ -717,17 +612,16 @@ let sourceLinkTest _ = let publishToNuget _ = allReleaseChecks () - Paket.push - (fun c -> - { c with - ToolType = ToolType.CreateLocalTool() - PublishUrl = publishUrl - WorkingDir = "dist" - ApiKey = - match nugetToken with - | Some s -> s - | _ -> c.ApiKey // assume paket-config was set properly - }) + Paket.push (fun c -> + { c with + ToolType = ToolType.CreateLocalTool() + PublishUrl = publishUrl + WorkingDir = "dist" + ApiKey = + match nugetToken with + | Some s -> s + | _ -> c.ApiKey } // assume paket-config was set properly + ) // If build fails after this point, we've pushed a release out with this version of CHANGELOG.md so we should keep it around Target.deactivateBuildFailure "RevertChangelog" @@ -738,14 +632,12 @@ let gitRelease _ = Git.Staging.stageFile "" "CHANGELOG.md" |> ignore - !! "src/**/AssemblyInfo.fs" - |> Seq.iter (Git.Staging.stageFile "" >> ignore) + !! "src/**/AssemblyInfo.fs" |> Seq.iter (Git.Staging.stageFile "" >> ignore) Git.Commit.exec "" (sprintf "Bump version to %s\n\n%s" latestEntry.NuGetVersion releaseNotesGitCommitFormat) Git.Branches.push "" - let tag = - tagFromVersionNumber latestEntry.NuGetVersion + let tag = tagFromVersionNumber latestEntry.NuGetVersion Git.Branches.tag "" tag Git.Branches.pushTag "" "origin" tag @@ -763,8 +655,7 @@ let githubRelease _ = let files = !!distGlob // Get release notes with properly-linked version number let releaseNotes = - latestEntry - |> Changelog.mkReleaseNotes linkReferenceForLatestEntry + latestEntry |> Changelog.mkReleaseNotes linkReferenceForLatestEntry GitHub.createClientWithToken token |> GitHub.draftNewRelease diff --git a/docsSrc/Tutorials/Getting_Started.md b/docsSrc/Tutorials/Getting_Started.md index d13aef3..807336e 100644 --- a/docsSrc/Tutorials/Getting_Started.md +++ b/docsSrc/Tutorials/Getting_Started.md @@ -3,7 +3,7 @@ ## Prerequisites This guide assumes: -* You have the .NET 5.0 SDK installed +* You have the .NET 10.0 SDK installed * You have created a project and added the `dotnet-ef` tool ## Installing the package diff --git a/src/EFCore.FSharp/AssemblyInfo.fs b/src/EFCore.FSharp/AssemblyInfo.fs index 9d20573..a0e4658 100644 --- a/src/EFCore.FSharp/AssemblyInfo.fs +++ b/src/EFCore.FSharp/AssemblyInfo.fs @@ -1,23 +1,39 @@ // Auto-Generated by FAKE; do not edit namespace System + open System.Reflection [] [] [] -[] +[] [] [] -[] -[] +[] +[] do () module internal AssemblyVersionInformation = - let [] AssemblyTitle = "EFCore.FSharp" - let [] AssemblyProduct = "EFCore.FSharp" - let [] AssemblyVersion = "6.0.7" - let [] AssemblyMetadata_ReleaseDate = "2022-06-26T00:00:00.0000000+01:00" - let [] AssemblyFileVersion = "6.0.7" - let [] AssemblyInformationalVersion = "6.0.7" - let [] AssemblyMetadata_ReleaseChannel = "release" - let [] AssemblyMetadata_GitHash = "bd06b49bb7290ad9a1242b35b07609a0299fdc04" + [] + let AssemblyTitle = "EFCore.FSharp" + + [] + let AssemblyProduct = "EFCore.FSharp" + + [] + let AssemblyVersion = "6.0.7" + + [] + let AssemblyMetadata_ReleaseDate = "2022-06-26T00:00:00.0000000+01:00" + + [] + let AssemblyFileVersion = "6.0.7" + + [] + let AssemblyInformationalVersion = "6.0.7" + + [] + let AssemblyMetadata_ReleaseChannel = "release" + + [] + let AssemblyMetadata_GitHash = "bd06b49bb7290ad9a1242b35b07609a0299fdc04" diff --git a/src/EFCore.FSharp/DbContextHelpers.fs b/src/EFCore.FSharp/DbContextHelpers.fs index 53f3576..fc6489f 100644 --- a/src/EFCore.FSharp/DbContextHelpers.fs +++ b/src/EFCore.FSharp/DbContextHelpers.fs @@ -8,16 +8,13 @@ open System.Threading.Tasks let private awaitValueTask (x: ValueTask<_>) = Async.AwaitTask(x.AsTask()) type KeyType = - | Composite of obj [] + | Composite of obj[] | Single of obj let private transform (a: obj) = match a with - | :? seq as s -> - Array.ofSeq s - |> Array.map (fun i -> box i) - |> Composite + | :? seq as s -> Array.ofSeq s |> Array.map (fun i -> box i) |> Composite | _ -> Single a let findEntity<'a when 'a: not struct> (ctx: DbContext) (key: obj) : 'a = @@ -29,10 +26,7 @@ let findEntity<'a when 'a: not struct> (ctx: DbContext) (key: obj) : 'a = let tryFindEntity<'a when 'a: not struct> (ctx: DbContext) (key: obj) : 'a option = let result = findEntity<'a> ctx key - if isNull (box result) then - None - else - Some result + if isNull (box result) then None else Some result let findEntityAsync<'a when 'a: not struct> (ctx: DbContext) (key: obj) : Async<'a> = let f = @@ -51,11 +45,7 @@ let tryFindEntityAsync<'a when 'a: not struct> (ctx: DbContext) (key: obj) : Asy async { let! result = findEntityAsync<'a> ctx key - let result' = - if isNull (box result) then - None - else - Some result + let result' = if isNull (box result) then None else Some result return result' } @@ -65,20 +55,14 @@ let tryFindEntityTaskAsync<'a when 'a: not struct> (ctx: DbContext) (key: obj) : result .AsTask() - .ContinueWith(fun (t: Task<'a>) -> - if isNull (box t.Result) then - None - else - Some t.Result) + .ContinueWith(fun (t: Task<'a>) -> if isNull (box t.Result) then None else Some t.Result) /// Helper method for saving an updated record type let updateEntity (ctx: DbContext) (key: 'a -> 'b) (entity: 'a when 'a: not struct) = let currentEntity = findEntity<'a> ctx (key entity) - ctx - .Entry(currentEntity) - .CurrentValues.SetValues(entity :> obj) + ctx.Entry(currentEntity).CurrentValues.SetValues(entity :> obj) entity @@ -86,8 +70,7 @@ let updateEntityAsync (ctx: DbContext) (key: 'a -> 'b) (entity: 'a when 'a: not async { return updateEntity ctx key entity } let updateEntityRange (ctx: DbContext) (key: 'a -> 'b) (entities: 'a seq when 'a: not struct) = - entities - |> Seq.map (fun e -> updateEntity ctx key e) + entities |> Seq.map (fun e -> updateEntity ctx key e) let updateEntityRangeAsync (ctx: DbContext) (key: 'a -> 'b) (entities: 'a seq when 'a: not struct) = async { return updateEntityRange ctx key entities } @@ -125,11 +108,7 @@ let addEntityRange' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = c let addEntityRange (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = addEntityRange' ctx entities |> ignore let addEntityRangeAsync' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = - async { - return! - ctx.Set<'a>().AddRangeAsync(entities) - |> Async.AwaitTask - } + async { return! ctx.Set<'a>().AddRangeAsync(entities) |> Async.AwaitTask } let addEntityRangeAsync (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = addEntityRangeAsync' ctx entities |> Async.Ignore @@ -170,23 +149,19 @@ let tryFirstTaskAsync dbset = let tryFirst (dbset: #IQueryable<_>) = - dbset.FirstOrDefault() - |> FSharpUtilities.OptionOfNullableObj + dbset.FirstOrDefault() |> FSharpUtilities.OptionOfNullableObj let tryFilterFirstAsync predicate (dbSet: #IQueryable<_>) = async { let pred = FSharpUtilities.exprToLinq predicate - let! ret = - dbSet.FirstOrDefaultAsync(predicate = pred) - |> Async.AwaitTask + let! ret = dbSet.FirstOrDefaultAsync(predicate = pred) |> Async.AwaitTask return FSharpUtilities.OptionOfNullableObj ret } let tryFilterFirstTaskAsync predicate (dbSet: #IQueryable<_>) = - tryFilterFirstAsync predicate dbSet - |> Async.StartAsTask + tryFilterFirstAsync predicate dbSet |> Async.StartAsTask let tryFilterFirst predicate (dbSet: #IQueryable<_>) = let pred = FSharpUtilities.exprToLinq predicate @@ -200,9 +175,7 @@ type IQueryable<'T> with member this.TryFirstAsync expr = async { - let! ret = - this.FirstOrDefaultAsync(predicate = expr) - |> Async.AwaitTask + let! ret = this.FirstOrDefaultAsync(predicate = expr) |> Async.AwaitTask return FSharpUtilities.OptionOfNullableObj ret } @@ -211,5 +184,4 @@ type IQueryable<'T> with this.TryFirstAsync(expr) |> Async.StartAsTask member this.TryFirst expr = - this.FirstOrDefault(predicate = expr) - |> FSharpUtilities.OptionOfNullableObj + this.FirstOrDefault(predicate = expr) |> FSharpUtilities.OptionOfNullableObj diff --git a/src/EFCore.FSharp/EFCoreFSharpServices.fs b/src/EFCore.FSharp/EFCoreFSharpServices.fs index cd8c267..4578823 100644 --- a/src/EFCore.FSharp/EFCoreFSharpServices.fs +++ b/src/EFCore.FSharp/EFCoreFSharpServices.fs @@ -17,8 +17,7 @@ type EFCoreFSharpServices(scaffoldOptions: ScaffoldOptions) = new() = EFCoreFSharpServices(ScaffoldOptions.Default) - static member Default = - EFCoreFSharpServices() :> IDesignTimeServices + static member Default = EFCoreFSharpServices() :> IDesignTimeServices static member WithScaffoldOptions scaffoldOptions = EFCoreFSharpServices scaffoldOptions :> IDesignTimeServices diff --git a/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs b/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs index c811413..34496b4 100644 --- a/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs +++ b/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs @@ -21,17 +21,10 @@ module Extensions = member this.UseValueConverterForType(``type``: Type, converter: ValueConverter) = this.Model.GetEntityTypes() - |> Seq.iter - (fun e -> - e.ClrType.GetProperties() - |> Seq.filter (fun p -> p.PropertyType = ``type``) - |> Seq.iter - (fun p -> - this - .Entity(e.Name) - .Property(p.Name) - .HasConversion(converter) - |> ignore)) + |> Seq.iter (fun e -> + e.ClrType.GetProperties() + |> Seq.filter (fun p -> p.PropertyType = ``type``) + |> Seq.iter (fun p -> this.Entity(e.Name).Property(p.Name).HasConversion(converter) |> ignore)) this @@ -40,11 +33,9 @@ module Extensions = let makeOptionConverter t = let underlyingType = SharedTypeExtensions.unwrapOptionType t - let converterType = - genericOptionConverterType.MakeGenericType(underlyingType) + let converterType = genericOptionConverterType.MakeGenericType(underlyingType) - let converter = - converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter + let converter = converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter converter @@ -64,23 +55,18 @@ module Extensions = member this.RegisterSingleUnionCases() = let makeSingleUnionCaseConverter tUnion = - let underlyingType = - SharedTypeExtensions.unwrapSingleCaseUnion tUnion + let underlyingType = SharedTypeExtensions.unwrapSingleCaseUnion tUnion let converterType = genericSingleCaseUnionConverterType.MakeGenericType(underlyingType, tUnion) - let converter = - converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter + let converter = converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter converter let converterDetails = this.Model.GetEntityTypes() - |> Seq.filter - (fun p -> - not - <| SharedTypeExtensions.isSingleCaseUnion p.ClrType) + |> Seq.filter (fun p -> not <| SharedTypeExtensions.isSingleCaseUnion p.ClrType) |> Seq.collect (fun e -> e.ClrType.GetProperties()) |> Seq.filter (fun p -> SharedTypeExtensions.isSingleCaseUnion p.PropertyType) |> Seq.map (fun p -> (p, (makeSingleUnionCaseConverter p.PropertyType))) @@ -107,8 +93,7 @@ module Extensions = type DbContextOptionsBuilder with member this.UseFSharpTypes() = let extension = - let found = - this.Options.FindExtension() + let found = this.Options.FindExtension() if notNull found then found @@ -116,7 +101,6 @@ module Extensions = fSharpTypeOptionsExtensionInstance - (this :> IDbContextOptionsBuilderInfrastructure) - .AddOrUpdateExtension(extension) + (this :> IDbContextOptionsBuilderInfrastructure).AddOrUpdateExtension(extension) this diff --git a/src/EFCore.FSharp/Internal/FSharpHelper.fs b/src/EFCore.FSharp/Internal/FSharpHelper.fs index 3144542..04f11de 100644 --- a/src/EFCore.FSharp/Internal/FSharpHelper.fs +++ b/src/EFCore.FSharp/Internal/FSharpHelper.fs @@ -147,9 +147,9 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = | true, value -> value | _ -> if t |> isNullableType then - sprintf "Nullable<%s>" (this.ReferenceFullName(t |> unwrapNullableType) useFullName) + sprintf "Nullable<%s>" (this.ReferenceFullName (t |> unwrapNullableType) useFullName) elif t |> isOptionType then - sprintf "%s option" (this.ReferenceFullName(t |> unwrapOptionType) useFullName) + sprintf "%s option" (this.ReferenceFullName (t |> unwrapOptionType) useFullName) else let builder = StringBuilder() @@ -159,9 +159,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = builder.Append(name) |> string if t.IsArray then - builder - .Append(this.ReferenceFullName(t.GetElementType()) false) - .Append("[") + builder.Append(this.ReferenceFullName (t.GetElementType()) false).Append("[") |> ignore match t.GetArrayRank() with @@ -170,9 +168,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = builder |> string elif t.IsNested then - builder - .Append(this.ReferenceFullName(t.DeclaringType) false) - .Append(".") + builder.Append(this.ReferenceFullName (t.DeclaringType) false).Append(".") |> ignore returnName () @@ -180,10 +176,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = returnName () member private this.ensureDecimalPlaces(number: string) = - if number.IndexOf('.') >= 0 then - number - else - number + ".0" + if number.IndexOf('.') >= 0 then number else number + ".0" member private this.literalString(value: string) = "\"" @@ -198,27 +191,21 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member private this.literalByte(value: byte) = sprintf "(byte %d)" value - member private this.literalByteArray(values: byte []) = + member private this.literalByteArray(values: byte[]) = let v = values |> Seq.map this.literalByte sprintf "[| %s |]" (String.Join("; ", v)) - member private this.literalStringArray(values: string []) = + member private this.literalStringArray(values: string[]) = let v = values |> Seq.map this.literalString sprintf "[| %s |]" (String.Join("; ", v)) member private this.literalArray(values: Array) = - let v = - values.Cast() |> Seq.map this.unknownLiteral + let v = values.Cast() |> Seq.map this.unknownLiteral sprintf "[| %s |]" (String.Join("; ", v)) member private this.literalChar(value: char) = - "\'" - + (if value = '\'' then - "\\'" - else - value.ToString()) - + "\'" + "\'" + (if value = '\'' then "\\'" else value.ToString()) + "\'" member private this.literalDateTime(value: DateTime) = sprintf @@ -248,8 +235,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member private this.literalDecimal(value: decimal) = sprintf "%fm" value member private this.literalDouble(value: double) = - (value.ToString("R", CultureInfo.InvariantCulture)) - |> this.ensureDecimalPlaces + (value.ToString("R", CultureInfo.InvariantCulture)) |> this.ensureDecimalPlaces member private this.literalFloat32(value: float32) = sprintf "(float32 %f)" value @@ -278,9 +264,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let values' = if isObjType then - values - |> Seq.map this.unknownLiteral - |> Seq.map literalAsObj + values |> Seq.map this.unknownLiteral |> Seq.map literalAsObj else values |> Seq.map this.unknownLiteral @@ -295,23 +279,19 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = } - member private this.literalArray2D(values: obj [,]) = + member private this.literalArray2D(values: obj[,]) = let rowCount = Array2D.length1 values - 1 let valuesCount = Array2D.length2 values - 1 let rowContents = - [ 0 .. rowCount ] - |> Seq.map - (fun i -> - let row' = values.[i, 0..valuesCount] + [ 0..rowCount ] + |> Seq.map (fun i -> + let row' = values.[i, 0..valuesCount] - let entries = - row' - |> Seq.map this.unknownLiteral - |> Seq.map literalAsObj + let entries = row' |> Seq.map this.unknownLiteral |> Seq.map literalAsObj - sprintf "[ %s ]" (String.Join("; ", entries))) + sprintf "[ %s ]" (String.Join("; ", entries))) sprintf "array2D [ %s ]" (String.Join("; ", rowContents)) @@ -330,14 +310,13 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let results = exps - |> Seq.map - (fun e -> - sb.Append(separator) |> ignore + |> Seq.map (fun e -> + sb.Append(separator) |> ignore - let result = this.handleExpression e simple sb + let result = this.handleExpression e simple sb - separator <- ", " - result) + separator <- ", " + result) results |> Seq.forall (fun r -> r = true) @@ -356,16 +335,13 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = | ExpressionType.Convert -> sb.Append("(") |> ignore - let result = - this.handleExpression (expression :?> UnaryExpression).Operand false sb + let result = this.handleExpression (expression :?> UnaryExpression).Operand false sb - sb.Append($" :?> {this.ReferenceFullName expression.Type true})") - |> ignore + sb.Append($" :?> {this.ReferenceFullName expression.Type true})") |> ignore result | ExpressionType.New -> - sb.Append(this.ReferenceFullName expression.Type true) - |> ignore + sb.Append(this.ReferenceFullName expression.Type true) |> ignore this.handleArguments ((expression :?> NewExpression).Arguments) sb @@ -375,8 +351,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let callExpr = expression :?> MethodCallExpression if callExpr.Method.IsStatic then - sb.Append(this.ReferenceFullName callExpr.Method.DeclaringType true) - |> ignore + sb.Append(this.ReferenceFullName callExpr.Method.DeclaringType true) |> ignore else if (not (this.handleExpression callExpr.Object false sb)) then exitEarly <- true @@ -388,8 +363,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = this.handleArguments callExpr.Arguments sb | ExpressionType.Constant -> - let value = - (expression :?> ConstantExpression).Value + let value = (expression :?> ConstantExpression).Value let valueToWrite = if simple && (value.GetType() |> isNumeric) then @@ -405,8 +379,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let memberExpression = expression :?> MemberExpression let appendAndReturn () = - sb.Append($".{memberExpression.Member.Name}") - |> ignore + sb.Append($".{memberExpression.Member.Name}") |> ignore true @@ -415,16 +388,14 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = |> ignore appendAndReturn () - elif this.handleExpression memberExpression.Expression false sb - |> not then + elif this.handleExpression memberExpression.Expression false sb |> not then false else appendAndReturn () | ExpressionType.Add -> let binaryExpression = expression :?> BinaryExpression - if this.handleExpression binaryExpression.Left false sb - |> not then + if this.handleExpression binaryExpression.Left false sb |> not then false else sb.Append(" + ") |> ignore @@ -450,22 +421,19 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let allValues = flags |> this.getFlags |> HashSet allValues - |> Seq.iter - (fun a -> - let decomposedValues = this.getFlags a + |> Seq.iter (fun a -> + let decomposedValues = this.getFlags a - if decomposedValues.Length > 1 then - decomposedValues - |> Seq.filter (fun v -> not (obj.Equals(v, a))) - |> allValues.ExceptWith) + if decomposedValues.Length > 1 then + decomposedValues + |> Seq.filter (fun v -> not (obj.Equals(v, a))) + |> allValues.ExceptWith) let folder previous current = if String.IsNullOrEmpty previous then this.getSimpleEnumValue t (Enum.GetName(t, current)) else - previous - + " | " - + this.getSimpleEnumValue t (Enum.GetName(t, current)) + previous + " | " + this.getSimpleEnumValue t (Enum.GetName(t, current)) allValues |> Seq.fold folder "" @@ -516,18 +484,13 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member private this.isIdentifierStartCharacter ch = if ch < 'a' then - if ch < 'A' then - false - else - ch <= 'Z' || ch = '_' + if ch < 'A' then false else ch <= 'Z' || ch = '_' elif ch <= 'z' then true elif ch <= '\u007F' then false else - ch - |> CharUnicodeInfo.GetUnicodeCategory - |> this.isLetterChar + ch |> CharUnicodeInfo.GetUnicodeCategory |> this.isLetterChar member private this.handleScope (scope: ICollection) (sb: StringBuilder) = if scope |> Seq.isEmpty then @@ -552,16 +515,14 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = for i = partStart to (name.Length - 1) do if name.[i] |> this.isIdentifierPartCharacter |> not then if partStart <> i then - sb.Append(name.Substring(partStart, (i - partStart))) - |> ignore + sb.Append(name.Substring(partStart, (i - partStart))) |> ignore partStart <- i + 1 if partStart <> name.Length then sb.Append(name.Substring(partStart)) |> ignore - if sb.Length = 0 - || sb.[0] |> this.isIdentifierStartCharacter |> not then + if sb.Length = 0 || sb.[0] |> this.isIdentifierStartCharacter |> not then sb.Insert(0, "_") |> ignore let identifier = sb |> this.handleScope scope @@ -572,12 +533,8 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = identifier member private this.buildFragment - ( - fragment: MethodCallCodeFragment, - typeQualified, - instanceIdentifier, - (indent: int) - ) = + (fragment: MethodCallCodeFragment, typeQualified, instanceIdentifier, (indent: int)) + = let builder = IndentedStringBuilder() let mutable current = fragment @@ -589,9 +546,11 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = | _ -> sb.Append(this.unknownLiteral arg) if typeQualified then - if isNull instanceIdentifier - || isNull fragment.MethodInfo - || notNull fragment.ChainedCall then + if + isNull instanceIdentifier + || isNull fragment.MethodInfo + || notNull fragment.ChainedCall + then raise (ArgumentException DesignStrings.CannotGenerateTypeQualifiedMethodCall) builder.Append $"%s{fragment.DeclaringType}.%s{fragment.Method}(%s{instanceIdentifier}" @@ -610,16 +569,13 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = builder.AppendLine().IncrementIndent() |> ignore while notNull current do - builder.Append(sprintf ".%s(" current.Method) - |> ignore + builder.Append(sprintf ".%s(" current.Method) |> ignore for i in [ 0 .. current.Arguments.Count - 1 ] do if i <> 0 then builder.Append(", ") |> ignore - builder - |> processArg current.Arguments.[i] - |> ignore + builder |> processArg current.Arguments.[i] |> ignore builder.Append(")") |> ignore @@ -649,8 +605,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = builder.IncrementIndent() |> ignore for l in lines do - builder.AppendLines(l + " |> ignore", false) - |> ignore + builder.AppendLines(l + " |> ignore", false) |> ignore builder.Append(")") |> string @@ -682,7 +637,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = | :? UInt64 as e -> this.literalUInt64 e | :? UInt16 as e -> this.literalUInt16 e | :? BigInteger as e -> this.literalBigInteger e - | :? (string []) as e -> this.literalStringArray e + | :? (string[]) as e -> this.literalStringArray e | :? Array as e -> this.literalArray e | :? Type as t -> this.ReferenceFullName t false | :? NestedClosureCodeFragment as n -> this.buildNestedFragment (n, 0) @@ -690,33 +645,27 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let literalType = value.GetType() - let mapping = - relationalTypeMappingSource.FindMapping literalType + let mapping = relationalTypeMappingSource.FindMapping literalType if isNull mapping then let t = value.GetType() let type' = - if t |> isNullableType then - t |> unwrapNullableType - elif t |> isOptionType then - t |> unwrapOptionType - else - t + if t |> isNullableType then t |> unwrapNullableType + elif t |> isOptionType then t |> unwrapOptionType + else t invalidOp (type' |> DesignStrings.UnknownLiteral) else let builder = IndentedStringBuilder() let expression = mapping.GenerateCodeLiteral(value) - let handled = - this.handleExpression expression false builder + let handled = this.handleExpression expression false builder if handled then builder.ToString() else - let args = - ((expression.ToString()), (displayName literalType false false)) + let args = ((expression.ToString()), (displayName literalType false false)) args |> DesignStrings.LiteralExpressionNotSupported @@ -740,21 +689,20 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = fragment.Properties |> Seq.map (fun p -> fragment.Parameter + "." + p) |> join ", " + sprintf "(fun %s -> (%s) :> obj)" fragment.Parameter props member this.Fragment(fragment: AttributeCodeFragment) = - let args = - fragment.Arguments - |> Seq.map this.unknownLiteral - |> join ", " + let args = fragment.Arguments |> Seq.map this.unknownLiteral |> join ", " + let namedArgs = fragment.NamedArguments |> Seq.map (fun kv -> sprintf "%s = %s" kv.Key (this.unknownLiteral kv.Value)) |> join ", " + let allArgs = - [args; namedArgs] - |> List.filter (String.IsNullOrEmpty >> not) - |> join ", " + [ args; namedArgs ] |> List.filter (String.IsNullOrEmpty >> not) |> join ", " + if String.IsNullOrEmpty allArgs then sprintf "[<%s>]" (this.ReferenceFullName fragment.Type false) else @@ -766,15 +714,19 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = else this.IdentifierWithScope name scope - member this.Identifier(name: string, value: 'T, scope: IDictionary, capitalize: Nullable) : string = + member this.Identifier + (name: string, value: 'T, scope: IDictionary, capitalize: Nullable) + : string = let identifier = if isNull (scope :> obj) then this.IdentifierWithScope name [||] else let keys = scope.Keys :> ICollection this.IdentifierWithScope name keys + if notNull (scope :> obj) then scope.[identifier] <- value + identifier member this.Lambda(properties: IReadOnlyList, lambdaIdentifier: string) : string = @@ -786,25 +738,27 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = lambdaIdentifier let props = - properties - |> Seq.map (fun p -> lambdaIdentifier' + "." + p) - |> join ", " + properties |> Seq.map (fun p -> lambdaIdentifier' + "." + p) |> join ", " sprintf "(fun %s -> (%s) :> obj)" lambdaIdentifier' props - member this.Lambda(properties: System.Collections.Generic.IEnumerable, lambdaIdentifier: string) : string = + member this.Lambda + ( + properties: System.Collections.Generic.IEnumerable, + lambdaIdentifier: string + ) : string = let lambdaIdentifier' = if String.IsNullOrEmpty lambdaIdentifier then "x" else lambdaIdentifier + let props = - properties - |> Seq.map (fun p -> lambdaIdentifier' + "." + p.Name) - |> join ", " + properties |> Seq.map (fun p -> lambdaIdentifier' + "." + p.Name) |> join ", " + sprintf "(fun %s -> (%s) :> obj)" lambdaIdentifier' props - member this.Literal(values: obj [,]) : string = this.literalArray2D values + member this.Literal(values: obj[,]) : string = this.literalArray2D values member this.Literal(value: Nullable<'T>) : string = this.unknownLiteral value @@ -857,7 +811,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.Literal(value: UInt64) = this.literalUInt64 value - member this.Literal(values: 'T [], vertical: bool) : string = + member this.Literal(values: 'T[], vertical: bool) : string = let isObjType = typeof<'T> = typeof this.literalList (values |> Seq.cast |> ResizeArray) vertical isObjType @@ -869,12 +823,13 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let entries = values |> Seq.map (fun kv -> sprintf "(%s, %s)" (this.unknownLiteral kv.Key) (this.unknownLiteral kv.Value)) + sprintf "[| %s |]" (String.Join("; ", entries)) member this.Literal(t: Type, fullName: Nullable) = this.ReferenceFullName t (fullName.GetValueOrDefault()) - member this.Namespace([] name: string []) : string = + member this.Namespace([] name: string[]) : string = let join (ns': string array) = String.Join(".", ns') let ns = @@ -885,10 +840,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = |> Array.filter (String.IsNullOrEmpty >> not) |> join - if String.IsNullOrEmpty ns then - "_" - else - ns + if String.IsNullOrEmpty ns then "_" else ns member this.Reference(t: Type, fullName) : string = this.ReferenceFullName t (fullName.GetValueOrDefault()) @@ -897,18 +849,19 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.XmlComment(comment: string, indent: int) : string = let lines = comment.Split([| '\n' |], StringSplitOptions.None) - lines - |> Seq.map (fun l -> sprintf "/// %s" (l.TrimEnd())) - |> join "\n" + lines |> Seq.map (fun l -> sprintf "/// %s" (l.TrimEnd())) |> join "\n" member this.Arguments(values: System.Collections.Generic.IEnumerable) : string = values |> Seq.map this.unknownLiteral |> join ", " - member this.GetRequiredUsings(``type``: Type) : System.Collections.Generic.IEnumerable = - Seq.empty + member this.GetRequiredUsings(``type``: Type) : System.Collections.Generic.IEnumerable = Seq.empty - member this.Statement(node, collectedNamespaces, unsafeAccessors, constantReplacements, memberAccessReplacements) : string = + member this.Statement + (node, collectedNamespaces, unsafeAccessors, constantReplacements, memberAccessReplacements) + : string = raise (NotSupportedException "F# expression statements are not supported") - member this.Expression(node, collectedNamespaces, unsafeAccessors, constantReplacements, memberAccessReplacements) : string = + member this.Expression + (node, collectedNamespaces, unsafeAccessors, constantReplacements, memberAccessReplacements) + : string = raise (NotSupportedException "F# expression generation is not supported") diff --git a/src/EFCore.FSharp/Internal/FSharpUtilities.fs b/src/EFCore.FSharp/Internal/FSharpUtilities.fs index ea6eac2..031a60f 100644 --- a/src/EFCore.FSharp/Internal/FSharpUtilities.fs +++ b/src/EFCore.FSharp/Internal/FSharpUtilities.fs @@ -17,7 +17,7 @@ module FSharpUtilities = let private _primitiveTypeNames = [ (typeof, "bool") (typeof, "byte") - (typeof, "byte[]") + (typeof, "byte[]") (typeof, "sbyte") (typeof, "char") (typeof, "Int16") @@ -41,10 +41,7 @@ module FSharpUtilities = |> dict let private escapeString (str: string) = - str - .Replace("\\", "\\\\") - .Replace("\"", "\\\"") - .Replace("\t", "\\t") + str.Replace("\\", "\\\\").Replace("\"", "\\\"").Replace("\t", "\\t") let private escapeVerbatimString (str: string) = str.Replace("\"", "\"\"") @@ -52,10 +49,7 @@ module FSharpUtilities = "new byte[] {" + String.Join(", ", value) + "}" let private generateLiteralStringArray (value: string array) = - "[| " - + (value - |> Array.fold (fun c n -> c + "\"" + n + "\"; ") "") - + "|]" + "[| " + (value |> Array.fold (fun c n -> c + "\"" + n + "\"; ") "") + "|]" let private generateLiteralBool (value: bool) = if value then "true" else "false" @@ -228,12 +222,11 @@ module FSharpUtilities = let args = t.GenericTypeArguments - |> Array.map - (fun t' -> - if isNull t' then - failwithf "%s has a null arg" t.Name - else - t' |> getTypeName) + |> Array.map (fun t' -> + if isNull t' then + failwithf "%s has a null arg" t.Name + else + t' |> getTypeName) |> join ", " match _fsharpTypeNames.TryGetValue genericTypeDefName with @@ -267,21 +260,15 @@ module FSharpUtilities = let generate (methodCallCodeFragment: MethodCallCodeFragment) = let parameters = - methodCallCodeFragment.Arguments - |> Seq.map generateLiteral - |> join ", " + methodCallCodeFragment.Arguments |> Seq.map generateLiteral |> join ", " sprintf ".%s(%s)" methodCallCodeFragment.Method parameters let OptionOfNullableObj v : 'a option = - (v: 'a) - |> box - |> Option.ofObj - |> Option.map (fun x -> x :?> 'a) + (v: 'a) |> box |> Option.ofObj |> Option.map (fun x -> x :?> 'a) let exprToLinq (expr: Expr<'a -> 'b>) = - let linq = - LeafExpressionConverter.QuotationToExpression expr + let linq = LeafExpressionConverter.QuotationToExpression expr let call = linq :?> MethodCallExpression let lambda = call.Arguments.[0] :?> LambdaExpression diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs index 0fcfe0c..582a70e 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs @@ -15,14 +15,8 @@ open EntityFrameworkCore.FSharp type FSharpMigrationOperationGenerator(code: ICSharpHelper) = - let toOnedimensionalArray firstDimension (a: obj [,]) = - Array.init - a.Length - (fun i -> - if firstDimension then - a.[i, 0] - else - a.[0, i]) + let toOnedimensionalArray firstDimension (a: obj[,]) = + Array.init a.Length (fun i -> if firstDimension then a.[i, 0] else a.[0, i]) let sanitiseName name = if FSharpUtilities.isKeyword name then @@ -55,8 +49,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if nullableParameter.HasValue then let value = nullableParameter |> code.UnknownLiteral - $",%s{sanitiseName name} = Nullable(%s{value})" - |> Some + $",%s{sanitiseName name} = Nullable(%s{value})" |> Some else None @@ -67,18 +60,12 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = |> Seq.map (fun a -> $".Annotation(%s{code.Literal a.Name}, %s{code.UnknownLiteral a.Value})") if lines |> Seq.isEmpty then - if includeIgnore then - ") |> ignore" - else - ")" + if includeIgnore then ") |> ignore" else ")" elif lines |> Seq.length = 1 then let line = lines |> Seq.head - if includeIgnore then - $"){line} |> ignore" - else - $"){line}" + if includeIgnore then $"){line} |> ignore" else $"){line}" else let last = lines |> Seq.last @@ -86,12 +73,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = let tail = lines |> Seq.tail - |> Seq.map - (fun l -> - if includeIgnore && l = last then - l + " |> ignore" - else - l) + |> Seq.map (fun l -> if includeIgnore && l = last then l + " |> ignore" else l) stringBuilder { ")" + (lines |> Seq.head) @@ -114,9 +96,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = let last = lines |> Seq.last let tail = - lines - |> Seq.tail - |> Seq.map (fun l -> if l = last then l + " |> ignore" else l) + lines |> Seq.tail |> Seq.map (fun l -> if l = last then l + " |> ignore" else l) stringBuilder { lines |> Seq.head @@ -234,8 +214,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if isOptionType op.ClrType then $").SetValueConverter(OptionConverter<%s{op.ClrType |> unwrapOptionType |> code.Reference}> ()" - let hasNoOldAnnotations = - op.OldColumn.GetAnnotations() |> Seq.isEmpty + let hasNoOldAnnotations = op.OldColumn.GetAnnotations() |> Seq.isEmpty annotations hasNoOldAnnotations (op.GetAnnotations()) @@ -251,8 +230,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = indent { - let hasNoOldAnnotations = - op.OldDatabase.GetAnnotations() |> Seq.isEmpty + let hasNoOldAnnotations = op.OldDatabase.GetAnnotations() |> Seq.isEmpty annotations hasNoOldAnnotations (op.GetAnnotations()) @@ -277,8 +255,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = writeNullableParameterIfValue "oldMaxValue " op.OldSequence.MaxValue writeParameterIfTrue op.OldSequence.IsCyclic "oldCyclic" "true" - let hasNoOldAnnotations = - op.OldSequence.GetAnnotations() |> Seq.isEmpty + let hasNoOldAnnotations = op.OldSequence.GetAnnotations() |> Seq.isEmpty annotations hasNoOldAnnotations (op.GetAnnotations()) @@ -295,8 +272,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = writeName op.Name writeSchema op.Schema - let hasNoOldAnnotations = - op.OldTable.GetAnnotations() |> Seq.isEmpty + let hasNoOldAnnotations = op.OldTable.GetAnnotations() |> Seq.isEmpty annotations hasNoOldAnnotations (op.GetAnnotations()) @@ -399,11 +375,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = ",columns = (fun table -> " "{|" - indent { - op.Columns - |> Seq.filter notNull - |> Seq.map writeColumn - } + indent { op.Columns |> Seq.filter notNull |> Seq.map writeColumn } "|})" } @@ -411,10 +383,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = let writeUniqueConstraint (uc: AddUniqueConstraintOperation) = let constraints = - uc.Columns - |> Seq.map (fun c -> map.[c]) - |> Seq.toList - |> code.Lambda + uc.Columns |> Seq.map (fun c -> map.[c]) |> Seq.toList |> code.Lambda stringBuilder { $"table.UniqueConstraint({code.Literal uc.Name}, {constraints}" @@ -435,16 +404,12 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = "table.ForeignKey(" let constraints = - fk.Columns - |> Seq.map (fun c -> map.[c]) - |> Seq.toList - |> code.Lambda + fk.Columns |> Seq.map (fun c -> map.[c]) |> Seq.toList |> code.Lambda indent { writeName fk.Name - if fk.Columns.Length = 1 - || isNull fk.PrincipalColumns then + if fk.Columns.Length = 1 || isNull fk.PrincipalColumns then $",column = {constraints}" else $",columns = {constraints}" @@ -482,22 +447,16 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = let pkName = op.PrimaryKey.Name |> code.Literal let pkColumns = - op.PrimaryKey.Columns - |> Seq.map (fun c -> map.[c]) - |> Seq.toList - |> code.Lambda + op.PrimaryKey.Columns |> Seq.map (fun c -> map.[c]) |> Seq.toList |> code.Lambda $"table.PrimaryKey(%s{pkName}, %s{pkColumns}" annotations true (op.PrimaryKey.GetAnnotations()) - op.UniqueConstraints - |> Seq.map writeUniqueConstraint + op.UniqueConstraints |> Seq.map writeUniqueConstraint - op.CheckConstraints - |> Seq.map writeCheckConstraint + op.CheckConstraints |> Seq.map writeCheckConstraint - op.ForeignKeys - |> Seq.map writeForeignKeyConstraint + op.ForeignKeys |> Seq.map writeForeignKeyConstraint } ")" @@ -707,11 +666,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if length0 = 1 && length1 = 1 then sprintf "value = %s :> obj" (op.Values.[0, 0] |> code.UnknownLiteral) elif length0 = 1 then - sprintf - "values = %s" - (op.Values - |> toOnedimensionalArray false - |> code.Literal) + sprintf "values = %s" (op.Values |> toOnedimensionalArray false |> code.Literal) elif length1 = 1 then let arr = op.Values |> toOnedimensionalArray true let lines = code.Literal(arr, true) @@ -747,15 +702,9 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if length0 = 1 && length1 = 1 then yield sprintf "keyValue = %s" (op.KeyValues.[0, 0] |> code.UnknownLiteral) elif length0 = 1 then - yield - sprintf - "keyValues = %s" - (op.KeyValues - |> toOnedimensionalArray false - |> code.Literal) + yield sprintf "keyValues = %s" (op.KeyValues |> toOnedimensionalArray false |> code.Literal) elif length1 = 1 then - let arr = - op.KeyValues |> toOnedimensionalArray true + let arr = op.KeyValues |> toOnedimensionalArray true let lines = code.Literal(arr, true) yield sprintf "keyValues = %s" lines @@ -788,15 +737,9 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if length0 = 1 && length1 = 1 then yield sprintf "keyValue = %s" (op.KeyValues.[0, 0] |> code.UnknownLiteral) elif length0 = 1 then - yield - sprintf - "keyValues = %s" - (op.KeyValues - |> toOnedimensionalArray false - |> code.Literal) + yield sprintf "keyValues = %s" (op.KeyValues |> toOnedimensionalArray false |> code.Literal) elif length1 = 1 then - let arr = - op.KeyValues |> toOnedimensionalArray true + let arr = op.KeyValues |> toOnedimensionalArray true let lines = code.Literal(arr, true) yield sprintf "keyValues = %s" lines @@ -814,12 +757,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if length0 = 1 && length1 = 1 then yield sprintf "value = %s" (op.Values.[0, 0] |> code.UnknownLiteral) elif length0 = 1 then - yield - sprintf - "values = %s" - (op.Values - |> toOnedimensionalArray false - |> code.Literal) + yield sprintf "values = %s" (op.Values |> toOnedimensionalArray false |> code.Literal) elif length1 = 1 then let arr = op.Values |> toOnedimensionalArray true let lines = code.Literal(arr, true) @@ -893,9 +831,7 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = | :? UpdateDataOperation as op' -> op' |> generateUpdateDataOperation | :? AddCheckConstraintOperation as op' -> op' |> generateAddCheckConstraintOperation | :? DropCheckConstraintOperation as op' -> op' |> generateDropCheckConstraintOperation - | _ -> - op - |> invalidOp ((op.GetType()) |> DesignStrings.UnknownOperation) // The failure case + | _ -> op |> invalidOp ((op.GetType()) |> DesignStrings.UnknownOperation) // The failure case builderName + result diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs index 2e0cdce..1f18f19 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs @@ -26,11 +26,9 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies: FSharpMigration let code = fSharpDependencies.FSharpHelper - let generator = - fSharpDependencies.FSharpMigrationOperationGenerator + let generator = fSharpDependencies.FSharpMigrationOperationGenerator - let snapshot = - fSharpDependencies.FSharpSnapshotGenerator + let snapshot = fSharpDependencies.FSharpSnapshotGenerator // Due to api shape we're currently forced to work around the fact EF expects 2 files per migration let mutable tempUpOperations = list.Empty @@ -46,9 +44,7 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies: FSharpMigration "Microsoft.EntityFrameworkCore.Migrations" "Microsoft.EntityFrameworkCore.Storage.ValueConversion" - if contextType.Namespace - |> String.IsNullOrEmpty - |> not then + if contextType.Namespace |> String.IsNullOrEmpty |> not then contextType.Namespace } |> Seq.toList @@ -62,15 +58,12 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies: FSharpMigration (downOperations) (model) = - let allOperations = - (upOperations |> Seq.append downOperations) + let allOperations = (upOperations |> Seq.append downOperations) - let operationNamespaces = - this.GetNamespaces allOperations |> Seq.toList + let operationNamespaces = this.GetNamespaces allOperations |> Seq.toList let namespaces = - (getDefaultNamespaces contextType - @ operationNamespaces) + (getDefaultNamespaces contextType @ operationNamespaces) |> sortNamespaces |> Seq.distinct diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs index 391ec72..e88b8a9 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs @@ -11,9 +11,7 @@ type FSharpMigrationsScaffolder(dependencies) = // Copy of (modulo custom code changes) https://github.com/aspnet/EntityFrameworkCore/blob/d8b7ebbfabff3d2e8560c24b1ff14d1f4244ca6a/src/EFCore.Design/Migrations/Design/MigrationsScaffolder.cs#L365 override this.Save(projectDir, migration: ScaffoldedMigration, outputDir, dryRun) = - let lastMigrationFileName = - migration.PreviousMigrationId - + migration.FileExtension + let lastMigrationFileName = migration.PreviousMigrationId + migration.FileExtension let migrationDirectory = if outputDir |> notNull then @@ -25,26 +23,18 @@ type FSharpMigrationsScaffolder(dependencies) = Path.Combine(migrationDirectory, migration.MigrationId + migration.FileExtension) let migrationMetadataFile = - Path.Combine( - migrationDirectory, - migration.MigrationId - + ".Designer" - + migration.FileExtension - ) + Path.Combine(migrationDirectory, migration.MigrationId + ".Designer" + migration.FileExtension) - let modelSnapshotFileName = - migration.SnapshotName + migration.FileExtension + let modelSnapshotFileName = migration.SnapshotName + migration.FileExtension let modelSnapshotDirectory = this.GetDirectory(projectDir, modelSnapshotFileName, migration.SnapshotSubnamespace) - let modelSnapshotFile = - Path.Combine(modelSnapshotDirectory, modelSnapshotFileName) + let modelSnapshotFile = Path.Combine(modelSnapshotDirectory, modelSnapshotFileName) dependencies.OperationReporter.WriteVerbose(DesignStrings.WritingMigration(migrationFile)) - Directory.CreateDirectory(migrationDirectory) - |> ignore + Directory.CreateDirectory(migrationDirectory) |> ignore (* Custom code This is all we need to support an F# compatible file structure @@ -61,8 +51,7 @@ type FSharpMigrationsScaffolder(dependencies) = dependencies.OperationReporter.WriteVerbose(DesignStrings.WritingSnapshot(modelSnapshotFile)) - Directory.CreateDirectory(modelSnapshotDirectory) - |> ignore + Directory.CreateDirectory(modelSnapshotDirectory) |> ignore if not dryRun then File.WriteAllText(modelSnapshotFile, (migration.SnapshotCode: string), Encoding.UTF8) diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs index 7ec45dc..6310d8c 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs @@ -16,11 +16,8 @@ open Microsoft.EntityFrameworkCore.Storage open EntityFrameworkCore.FSharp type FSharpSnapshotGenerator - ( - code: ICSharpHelper, - mappingSource: IRelationalTypeMappingSource, - annotationCodeGenerator: IAnnotationCodeGenerator - ) = + (code: ICSharpHelper, mappingSource: IRelationalTypeMappingSource, annotationCodeGenerator: IAnnotationCodeGenerator) + = let mutable _typeQualifiedCalls: string option = None @@ -36,12 +33,9 @@ type FSharpSnapshotGenerator if typeMapping |> isNull then let mapping = mappingSource.FindMapping(p) - if mapping |> isNull then - None - elif mapping.Converter |> isNull then - None - else - mapping.Converter |> Some + if mapping |> isNull then None + elif mapping.Converter |> isNull then None + else mapping.Converter |> Some elif typeMapping.Converter |> isNull then None else @@ -65,32 +59,31 @@ type FSharpSnapshotGenerator let typeQualifiedCalls = ResizeArray() fluentApiCalls - |> Seq.iter - (fun call -> - if notNull call.MethodInfo - && call.MethodInfo.IsStatic - && (isNull call.MethodInfo.DeclaringType - || call.MethodInfo.DeclaringType.Assembly - <> typeof.Assembly) then - typeQualifiedCalls.Add call - else - chainedCall <- - match chainedCall with - | None -> Some call - | Some c -> Some(c.Chain(call))) + |> Seq.iter (fun call -> + if + notNull call.MethodInfo + && call.MethodInfo.IsStatic + && (isNull call.MethodInfo.DeclaringType + || call.MethodInfo.DeclaringType.Assembly + <> typeof.Assembly) + then + typeQualifiedCalls.Add call + else + chainedCall <- + match chainedCall with + | None -> Some call + | Some c -> Some(c.Chain(call))) // Append remaining raw annotations which did not get generated as Fluent API calls annotations.Values |> Seq.sortBy (fun a -> a.Name) - |> Seq.iter - (fun a -> - let call = - MethodCallCodeFragment(hasAnnotationMethodInfo, a.Name, a.Value) + |> Seq.iter (fun a -> + let call = MethodCallCodeFragment(hasAnnotationMethodInfo, a.Name, a.Value) - chainedCall <- - match chainedCall with - | None -> Some call - | Some c -> Some(c.Chain(call))) + chainedCall <- + match chainedCall with + | None -> Some call + | Some c -> Some(c.Chain(call))) let chainedCalls = @@ -101,27 +94,23 @@ type FSharpSnapshotGenerator else stringBuilder { - if leadingNewLine then "" + if leadingNewLine then + "" + (code.Fragment(c, builderName, false)) + " |> ignore" } - | None -> - if inChainedCall then - "|> ignore" - else - "" + | None -> if inChainedCall then "|> ignore" else "" let buildTypeQualifiedCall call = - code.Fragment(call, builderName, typeQualified = true) - + " |> ignore" + code.Fragment(call, builderName, typeQualified = true) + " |> ignore" let typeQualifiedCalls = if typeQualifiedCalls.Count > 0 then stringBuilder { "" - typeQualifiedCalls - |> Seq.map buildTypeQualifiedCall + typeQualifiedCalls |> Seq.map buildTypeQualifiedCall } |> Some else @@ -139,17 +128,13 @@ type FSharpSnapshotGenerator | true, defaultValue -> let valueConverter = if defaultValue <> (box DBNull.Value) then - let valueConverter = - property.GetValueConverter() |> Option.ofObj + let valueConverter = property.GetValueConverter() |> Option.ofObj let typeMap = - if property.FindTypeMapping() - |> Option.ofObj - |> Option.isSome then + if property.FindTypeMapping() |> Option.ofObj |> Option.isSome then property.FindTypeMapping() |> Option.ofObj else - (mappingSource.FindMapping(property) :> CoreTypeMapping) - |> Option.ofObj + (mappingSource.FindMapping(property) :> CoreTypeMapping) |> Option.ofObj match valueConverter, typeMap with | Some v, _ -> v |> Option.ofObj @@ -166,8 +151,7 @@ type FSharpSnapshotGenerator code.UnknownLiteral(value) - $".HasDefaultValue({appendValueConverter})" - |> Some + $".HasDefaultValue({appendValueConverter})" |> Some | _ -> None @@ -177,9 +161,7 @@ type FSharpSnapshotGenerator |> annotationsToDictionary let columnType (p: IProperty) = - let columnType = - p.GetColumnType() - ?= mappingSource.GetMapping(p).StoreType + let columnType = p.GetColumnType() ?= mappingSource.GetMapping(p).StoreType code.Literal columnType @@ -194,20 +176,18 @@ type FSharpSnapshotGenerator let generateFluentApiForPrecisionAndScale = property.GetPrecision() |> Option.ofNullable - |> Option.map - (fun i -> - let scale = - if property.GetScale().HasValue then - $", {code.UnknownLiteral(property.GetScale().Value)}" - else - "" + |> Option.map (fun i -> + let scale = + if property.GetScale().HasValue then + $", {code.UnknownLiteral(property.GetScale().Value)}" + else + "" - annotations.Remove(CoreAnnotationNames.Precision) - |> ignore + annotations.Remove(CoreAnnotationNames.Precision) |> ignore - $".HasPrecision({code.UnknownLiteral i}{scale})" + $".HasPrecision({code.UnknownLiteral i}{scale})" - ) + ) let generateFluentApiForUnicode = property.IsUnicode() @@ -255,8 +235,7 @@ type FSharpSnapshotGenerator | None -> p.ClrType let isPropertyRequired = - let isNullable = - (isOptionType clrType || isNullableType clrType) + let isNullable = (isOptionType clrType || isNullableType clrType) (p.IsPrimaryKey()) || (not isNullable) @@ -310,20 +289,13 @@ type FSharpSnapshotGenerator let keyBuilderName = let props = - key.Properties - |> Seq.map (fun p -> (p.Name |> code.Literal)) - |> join ", " + key.Properties |> Seq.map (fun p -> (p.Name |> code.Literal)) |> join ", " - let methodName = - if isPrimary then - "HasKey" - else - "HasAlternateKey" + let methodName = if isPrimary then "HasKey" else "HasAlternateKey" sprintf "%s.%s(%s)" entityTypeBuilderName methodName props - let keyAnnotations = - generateKeyAnnotations keyBuilderName key + let keyAnnotations = generateKeyAnnotations keyBuilderName key stringBuilder { "" @@ -345,15 +317,11 @@ type FSharpSnapshotGenerator let otherKeys = if isNull pk || pk.DeclaringEntityType.IsOwned() then keys - |> Seq.filter - (fun k -> - k <> pk - && (k.GetReferencingForeignKeys() |> Seq.isEmpty - || k.GetAnnotations() - |> Seq.exists - (fun a -> - a.Name - <> RelationalAnnotationNames.UniqueConstraintMappings))) + |> Seq.filter (fun k -> + k <> pk + && (k.GetReferencingForeignKeys() |> Seq.isEmpty + || k.GetAnnotations() + |> Seq.exists (fun a -> a.Name <> RelationalAnnotationNames.UniqueConstraintMappings))) |> Seq.map (fun k -> generateKey entityTypeBuilderName k false) else Seq.empty @@ -374,30 +342,22 @@ type FSharpSnapshotGenerator let indexParams = if isNull idx.Name then - String.Join( - ", ", - (idx.Properties - |> Seq.map (fun p -> p.Name |> code.Literal)) - ) + String.Join(", ", (idx.Properties |> Seq.map (fun p -> p.Name |> code.Literal))) else sprintf "[| %s |], %s" - (String.Join( - "; ", - (idx.Properties - |> Seq.map (fun p -> p.Name |> code.Literal)) - )) + (String.Join("; ", (idx.Properties |> Seq.map (fun p -> p.Name |> code.Literal)))) (code.Literal idx.Name) - let indexBuilderName = - sprintf "%s.HasIndex(%s)" entityTypeBuilderName indexParams + let indexBuilderName = sprintf "%s.HasIndex(%s)" entityTypeBuilderName indexParams stringBuilder { "" indexBuilderName indent { - if idx.IsUnique then ".IsUnique()" + if idx.IsUnique then + ".IsUnique()" generateIndexAnnotations indexBuilderName idx } @@ -424,8 +384,7 @@ type FSharpSnapshotGenerator "" | _ -> "" - let propsToWrite = - props |> Seq.map writeProperty |> join "; " + let propsToWrite = props |> Seq.map writeProperty |> join "; " $"{{| {propsToWrite} |}}" @@ -445,21 +404,20 @@ type FSharpSnapshotGenerator "" let schema = - if String.IsNullOrEmpty(sequence.Schema) |> not - && sequence.Model.GetDefaultSchema() - <> sequence.Schema then + if + String.IsNullOrEmpty(sequence.Schema) |> not + && sequence.Model.GetDefaultSchema() <> sequence.Schema + then $", {code.Literal sequence.Schema}" else "" let lines = seq { - if sequence.StartValue - <> (Sequence.DefaultStartValue |> int64) then + if sequence.StartValue <> (Sequence.DefaultStartValue |> int64) then $".StartsAt({code.Literal sequence.StartValue})" - if sequence.IncrementBy - <> Sequence.DefaultIncrementBy then + if sequence.IncrementBy <> Sequence.DefaultIncrementBy then $".IncrementsBy({code.Literal sequence.IncrementBy})" if sequence.MinValue <> Sequence.DefaultMinValue then @@ -518,13 +476,10 @@ type FSharpSnapshotGenerator else defaultValue () - let annotationList = - entityType.GetAnnotations() |> Seq.toList + let annotationList = entityType.GetAnnotations() |> Seq.toList let findInList (a: IAnnotation list) name = - a - |> List.tryFind (fun an -> an.Name = name) - |> Option.toObj + a |> List.tryFind (fun an -> an.Name = name) |> Option.toObj let discriminatorPropertyAnnotation = findInList annotationList CoreAnnotationNames.DiscriminatorProperty @@ -551,77 +506,55 @@ type FSharpSnapshotGenerator - let tableNameAnnotation = - tryGetAnnotationByName RelationalAnnotationNames.TableName + let tableNameAnnotation = tryGetAnnotationByName RelationalAnnotationNames.TableName - if annotationAndValueNotNull tableNameAnnotation - || (isNull entityType.BaseType) then + if annotationAndValueNotNull tableNameAnnotation || (isNull entityType.BaseType) then - let tableName = - getAnnotationValue tableNameAnnotation entityType.GetTableName + let tableName = getAnnotationValue tableNameAnnotation entityType.GetTableName if notNull tableName || notNull tableNameAnnotation then - sb - .AppendLine("") - .Append(entityTypeBuilderName) - .Append(".ToTable(") - |> ignore + sb.AppendLine("").Append(entityTypeBuilderName).Append(".ToTable(") |> ignore - let schemaAnnotation = - tryGetAnnotationByName RelationalAnnotationNames.Schema + let schemaAnnotation = tryGetAnnotationByName RelationalAnnotationNames.Schema - let schema = - getAnnotationValue schemaAnnotation entityType.GetSchema + let schema = getAnnotationValue schemaAnnotation entityType.GetSchema - if isNull tableName - && (isNull schemaAnnotation || isNull schema) then - sb.Append(sprintf "(string %s)" (code.UnknownLiteral tableName)) - |> ignore + if isNull tableName && (isNull schemaAnnotation || isNull schema) then + sb.Append(sprintf "(string %s)" (code.UnknownLiteral tableName)) |> ignore else sb.Append(code.UnknownLiteral tableName) |> ignore if notNull tableNameAnnotation then - annotations.Remove(tableNameAnnotation.Name) - |> ignore + annotations.Remove(tableNameAnnotation.Name) |> ignore let isExcludedAnnotation = tryGetAnnotationByName RelationalAnnotationNames.IsTableExcludedFromMigrations - if notNull schema - || (notNull schemaAnnotation && notNull tableName) then - if isNull schema - && (notNull isExcludedAnnotation - && (isExcludedAnnotation.Value :?> Nullable) - .GetValueOrDefault() - <> true) then - sb.Append(sprintf ", (string %s)" (code.UnknownLiteral schema)) - |> ignore + if notNull schema || (notNull schemaAnnotation && notNull tableName) then + if + isNull schema + && (notNull isExcludedAnnotation + && (isExcludedAnnotation.Value :?> Nullable).GetValueOrDefault() <> true) + then + sb.Append(sprintf ", (string %s)" (code.UnknownLiteral schema)) |> ignore elif notNull schema then - sb.Append(sprintf ", %s" (code.UnknownLiteral schema)) - |> ignore + sb.Append(sprintf ", %s" (code.UnknownLiteral schema)) |> ignore if notNull isExcludedAnnotation then - if (isExcludedAnnotation.Value :?> Nullable) - .GetValueOrDefault() then - sb.Append ", (fun t -> t.ExcludeFromMigrations())" - |> ignore + if (isExcludedAnnotation.Value :?> Nullable).GetValueOrDefault() then + sb.Append ", (fun t -> t.ExcludeFromMigrations())" |> ignore - annotations.Remove(isExcludedAnnotation.Name) - |> ignore + annotations.Remove(isExcludedAnnotation.Name) |> ignore sb.Append ") |> ignore" |> ignore - annotations.Remove(RelationalAnnotationNames.Schema) - |> ignore + annotations.Remove(RelationalAnnotationNames.Schema) |> ignore - let viewNameAnnotation = - tryGetAnnotationByName RelationalAnnotationNames.ViewName + let viewNameAnnotation = tryGetAnnotationByName RelationalAnnotationNames.ViewName - if (annotationAndValueNotNull viewNameAnnotation - || isNull entityType.BaseType) then - let viewName = - getAnnotationValue viewNameAnnotation entityType.GetViewName + if (annotationAndValueNotNull viewNameAnnotation || isNull entityType.BaseType) then + let viewName = getAnnotationValue viewNameAnnotation entityType.GetViewName if notNull viewName then sb @@ -630,8 +563,7 @@ type FSharpSnapshotGenerator |> ignore if notNull viewNameAnnotation then - annotations.Remove(viewNameAnnotation.Name) - |> ignore + annotations.Remove(viewNameAnnotation.Name) |> ignore let viewSchemaAnnotation = tryGetAnnotationByName RelationalAnnotationNames.ViewSchema @@ -639,32 +571,24 @@ type FSharpSnapshotGenerator if annotationAndValueNotNull viewSchemaAnnotation then let viewSchemaAnnotationValue = viewSchemaAnnotation.Value :?> string - sb - .Append(", ") - .Append(code.UnknownLiteral viewSchemaAnnotationValue) - |> ignore + sb.Append(", ").Append(code.UnknownLiteral viewSchemaAnnotationValue) |> ignore - annotations.Remove(viewSchemaAnnotation.Name) - |> ignore + annotations.Remove(viewSchemaAnnotation.Name) |> ignore sb.Append ") |> ignore" |> ignore - annotations.Remove(RelationalAnnotationNames.ViewSchema) - |> ignore + annotations.Remove(RelationalAnnotationNames.ViewSchema) |> ignore - annotations.Remove(RelationalAnnotationNames.ViewDefinitionSql) - |> ignore + annotations.Remove(RelationalAnnotationNames.ViewDefinitionSql) |> ignore let functionNameAnnotation = tryGetAnnotationByName RelationalAnnotationNames.FunctionName - if annotationAndValueNotNull functionNameAnnotation - || isNull entityType.BaseType then + if annotationAndValueNotNull functionNameAnnotation || isNull entityType.BaseType then let functionName = getAnnotationValue functionNameAnnotation entityType.GetFunctionName - if notNull functionName - || notNull functionNameAnnotation then + if notNull functionName || notNull functionNameAnnotation then sb .AppendLine("") .Append(entityTypeBuilderName) @@ -674,16 +598,12 @@ type FSharpSnapshotGenerator |> ignore if notNull functionNameAnnotation then - annotations.Remove(functionNameAnnotation.Name) - |> ignore + annotations.Remove(functionNameAnnotation.Name) |> ignore - let sqlQueryAnnotation = - tryGetAnnotationByName RelationalAnnotationNames.SqlQuery + let sqlQueryAnnotation = tryGetAnnotationByName RelationalAnnotationNames.SqlQuery - if annotationAndValueNotNull sqlQueryAnnotation - || isNull entityType.BaseType then - let sqlQuery = - getAnnotationValue sqlQueryAnnotation entityType.GetSqlQuery + if annotationAndValueNotNull sqlQueryAnnotation || isNull entityType.BaseType then + let sqlQuery = getAnnotationValue sqlQueryAnnotation entityType.GetSqlQuery if notNull sqlQuery || notNull sqlQueryAnnotation then sb @@ -695,15 +615,11 @@ type FSharpSnapshotGenerator |> ignore if notNull sqlQueryAnnotation then - annotations.Remove(sqlQueryAnnotation.Name) - |> ignore + annotations.Remove(sqlQueryAnnotation.Name) |> ignore if hasDiscriminator then - sb - .AppendLine("") - .Append(entityTypeBuilderName) - .Append(".HasDiscriminator") + sb.AppendLine("").Append(entityTypeBuilderName).Append(".HasDiscriminator") |> ignore if annotationAndValueNotNull discriminatorPropertyAnnotation then @@ -712,9 +628,7 @@ type FSharpSnapshotGenerator let propertyClrType = match discriminatorProperty |> findValueConverter with - | Some c -> - c.ProviderClrType - |> makeNullable discriminatorProperty.IsNullable + | Some c -> c.ProviderClrType |> makeNullable discriminatorProperty.IsNullable | None -> discriminatorProperty.ClrType sb @@ -728,13 +642,9 @@ type FSharpSnapshotGenerator sb.Append "()" |> ignore if annotationAndValueNotNull discriminatorMappingCompleteAnnotation then - let value = - discriminatorMappingCompleteAnnotation.Value + let value = discriminatorMappingCompleteAnnotation.Value - sb - .Append(".IsComplete(") - .Append(code.UnknownLiteral(value)) - .Append(")") + sb.Append(".IsComplete(").Append(code.UnknownLiteral(value)).Append(")") |> ignore if annotationAndValueNotNull discriminatorValueAnnotation then @@ -750,11 +660,7 @@ type FSharpSnapshotGenerator else defaultValue - sb - .Append(".HasValue(") - .Append(code.UnknownLiteral(value)) - .Append(")") - |> ignore + sb.Append(".HasValue(").Append(code.UnknownLiteral(value)).Append(")") |> ignore sb.Append " |> ignore" |> ignore @@ -775,9 +681,7 @@ type FSharpSnapshotGenerator member private this.generateForeignKey entityTypeBuilderName (fk: IForeignKey) = let literalPropNames (properties: seq) = - properties - |> Seq.map (fun p -> p.Name |> code.Literal) - |> join ", " + properties |> Seq.map (fun p -> p.Name |> code.Literal) |> join ", " let definition = if not fk.IsOwnership then @@ -810,8 +714,7 @@ type FSharpSnapshotGenerator lines.Add $".WithOne({ptd})" lines.Add $".HasForeignKey({code.Literal fk.DeclaringEntityType.Name}, {literalPropNames fk.Properties})" - if fk.PrincipalKey - <> fk.PrincipalEntityType.FindPrimaryKey() then + if fk.PrincipalKey <> fk.PrincipalEntityType.FindPrimaryKey() then lines.Add $".HasPrincipalKey({code.Literal fk.PrincipalEntityType.Name}, {literalPropNames fk.PrincipalKey.Properties})" @@ -822,8 +725,7 @@ type FSharpSnapshotGenerator lines.Add $".HasForeignKey({literalPropNames fk.Properties})" - if fk.PrincipalKey - <> fk.PrincipalEntityType.FindPrimaryKey() then + if fk.PrincipalKey <> fk.PrincipalEntityType.FindPrimaryKey() then lines.Add $".HasPrincipalKey({literalPropNames fk.PrincipalKey.Properties})" if not fk.IsOwnership then @@ -943,11 +845,7 @@ type FSharpSnapshotGenerator | true, (true, _) -> counter <- counter + 1 | _ -> () - "b" - + if counter = 0 then - "" - else - counter.ToString() + "b" + if counter = 0 then "" else counter.ToString() else "b" @@ -992,10 +890,7 @@ type FSharpSnapshotGenerator let navigations = entityType.GetDeclaredNavigations() - |> Seq.filter - (fun n -> - (not n.IsOnDependent) - && (not n.ForeignKey.IsOwnership)) + |> Seq.filter (fun n -> (not n.IsOnDependent) && (not n.ForeignKey.IsOwnership)) stringBuilder { $"{builderName}.Entity({code.Literal entityType.Name}, (fun b ->" @@ -1005,27 +900,19 @@ type FSharpSnapshotGenerator member private this.generateEntityTypes builderName (entities: IEntityType seq) = - let entitiesToWrite = - entities |> Seq.filter (findOwnership >> isNull) + let entitiesToWrite = entities |> Seq.filter (findOwnership >> isNull) let relationships = entitiesToWrite - |> Seq.filter - (fun e -> - (e |> getDeclaredForeignKeys |> Seq.isEmpty |> not) - || (e - |> getDeclaredReferencingForeignKeys - |> Seq.exists (fun fk -> fk.IsOwnership))) + |> Seq.filter (fun e -> + (e |> getDeclaredForeignKeys |> Seq.isEmpty |> not) + || (e |> getDeclaredReferencingForeignKeys |> Seq.exists (fun fk -> fk.IsOwnership))) let navigations = entitiesToWrite - |> Seq.filter - (fun e -> - e.GetDeclaredNavigations() - |> Seq.exists - (fun n -> - (not n.IsOnDependent) - && (not n.ForeignKey.IsOwnership))) + |> Seq.filter (fun e -> + e.GetDeclaredNavigations() + |> Seq.exists (fun n -> (not n.IsOnDependent) && (not n.ForeignKey.IsOwnership))) stringBuilder { diff --git a/src/EFCore.FSharp/Migrations/Internal/FSharpMigrationsModelDiffer.fs b/src/EFCore.FSharp/Migrations/Internal/FSharpMigrationsModelDiffer.fs index e06fdab..993335e 100644 --- a/src/EFCore.FSharp/Migrations/Internal/FSharpMigrationsModelDiffer.fs +++ b/src/EFCore.FSharp/Migrations/Internal/FSharpMigrationsModelDiffer.fs @@ -8,15 +8,9 @@ open EntityFrameworkCore.FSharp.SharedTypeExtensions open Microsoft.EntityFrameworkCore.Metadata.Internal type FSharpMigrationsModelDiffer - ( - typeMappingSource, - migrationsAnnotations, - changeDetector, - updateAdapterFactory, - commandBatchPreparerDependencies - ) = - inherit MigrationsModelDiffer - ( + (typeMappingSource, migrationsAnnotations, changeDetector, updateAdapterFactory, commandBatchPreparerDependencies) = + inherit + MigrationsModelDiffer( typeMappingSource, migrationsAnnotations, changeDetector, @@ -28,23 +22,17 @@ type FSharpMigrationsModelDiffer let clrType = p.ClrType let isPrimaryKey = p.IsPrimaryKey() - let isNullable = - (isOptionType clrType || isNullableType clrType) + let isNullable = (isOptionType clrType || isNullableType clrType) isNullable && not isPrimaryKey override _.Diff - ( - source: IColumn, - target: IColumn, - diffContext: MigrationsModelDiffer.DiffContext - ) : MigrationOperation seq = + (source: IColumn, target: IColumn, diffContext: MigrationsModelDiffer.DiffContext) + : MigrationOperation seq = - let sourceTypeProperty = - (source.PropertyMappings |> Seq.head).Property + let sourceTypeProperty = (source.PropertyMappings |> Seq.head).Property - let targetTypeProperty = - (target.PropertyMappings |> Seq.head).Property + let targetTypeProperty = (target.PropertyMappings |> Seq.head).Property (source :?> Column).IsNullable <- isNullableType sourceTypeProperty (target :?> Column).IsNullable <- isNullableType targetTypeProperty @@ -58,8 +46,7 @@ type FSharpMigrationsModelDiffer [] ``inline``: bool ) : MigrationOperation seq = - let sourceTypeProperty = - (source.PropertyMappings |> Seq.head).Property + let sourceTypeProperty = (source.PropertyMappings |> Seq.head).Property (source :?> Column).IsNullable <- isNullableType sourceTypeProperty diff --git a/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs index daaa6f2..29874dd 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs @@ -38,12 +38,11 @@ type FSharpDbContextGenerator = annotationCodeGenerator.GenerateFluentApiCalls(annotatable, annotations) - |> Seq.iter - (fun fluentApiCall -> - lines.Add(code.Fragment(fluentApiCall)) + |> Seq.iter (fun fluentApiCall -> + lines.Add(code.Fragment(fluentApiCall)) - if notNull fluentApiCall.Namespace then - namespaces.Add fluentApiCall.Namespace |> ignore) + if notNull fluentApiCall.Namespace then + namespaces.Add fluentApiCall.Namespace |> ignore) lines.AddRange( annotations.Values @@ -75,9 +74,7 @@ type FSharpDbContextGenerator lines.Add(sprintf ".HasPrincipalKey(%s)" principalKeyProps) let fkProps = - foreignKey.Properties - |> Seq.map (fun e -> code.Literal(e.Name)) - |> join ", " + foreignKey.Properties |> Seq.map (fun e -> code.Literal(e.Name)) |> join ", " lines.Add(sprintf ".HasForeignKey(%s)" fkProps) @@ -101,9 +98,7 @@ type FSharpDbContextGenerator else let connStringFragment = - connectionString - |> providerCodeGenerator.GenerateUseProvider - |> code.Fragment + connectionString |> providerCodeGenerator.GenerateUseProvider |> code.Fragment stringBuilder { "override this.OnConfiguring(optionsBuilder: DbContextOptionsBuilder) =" @@ -126,8 +121,7 @@ type FSharpDbContextGenerator sprintf "HasSequence<%s>" (FSharpUtilities.getTypeName (s.Type)) let parameters = - if (s.Schema |> String.IsNullOrEmpty) - && (s.Model.GetDefaultSchema() <> s.Schema) then + if (s.Schema |> String.IsNullOrEmpty) && (s.Model.GetDefaultSchema() <> s.Schema) then sprintf "%s, %s" (s.Name |> FSharpUtilities.delimitString) (s.Schema |> FSharpUtilities.delimitString) else s.Name |> FSharpUtilities.delimitString @@ -142,19 +136,14 @@ type FSharpDbContextGenerator if s.IncrementBy <> Sequence.DefaultIncrementBy then $".IncrementsBy({s.IncrementBy})" - if - s.MinValue - <> Nullable(Sequence.DefaultMinValue |> int64) - then + if s.MinValue <> Nullable(Sequence.DefaultMinValue |> int64) then $".HasMin({s.MinValue})" - if - s.MaxValue - <> Nullable(Sequence.DefaultMaxValue |> int64) - then + if s.MaxValue <> Nullable(Sequence.DefaultMaxValue |> int64) then $".HasMax({s.MaxValue})" - if s.IsCyclic then $".IsCyclic()" + if s.IsCyclic then + $".IsCyclic()" "" } @@ -174,10 +163,7 @@ type FSharpDbContextGenerator let generatePropertyNameArray (properties: IReadOnlyList) = - let props = - properties - |> Seq.map (fun p -> code.Literal p.Name) - |> join "; " + let props = properties |> Seq.map (fun p -> code.Literal p.Name) |> join "; " sprintf "[| %s |]" props @@ -203,8 +189,7 @@ type FSharpDbContextGenerator if lines |> Seq.isEmpty then None else - let head = - entityLambdaIdentifier + (lines |> Seq.head) + let head = entityLambdaIdentifier + (lines |> Seq.head) let tail = lines |> Seq.tail @@ -225,15 +210,13 @@ type FSharpDbContextGenerator |> Some let generateKeyGuardClause (key: IKey) (annotations: IAnnotation seq) useDataAnnotations explicitName = - if key.Properties.Count = 1 - && annotations |> Seq.isEmpty then + if key.Properties.Count = 1 && annotations |> Seq.isEmpty then match key with | :? IConventionKey as concreteKey -> let keyProperties = key.Properties let concreteDeclaringProperties = - concreteKey.DeclaringEntityType.GetProperties() - |> Seq.cast + concreteKey.DeclaringEntityType.GetProperties() |> Seq.cast let concreteProperties = @@ -273,8 +256,7 @@ type FSharpDbContextGenerator let explicitName = key.GetName() <> key.GetDefaultName() - annotations.Remove(RelationalAnnotationNames.Name) - |> ignore + annotations.Remove(RelationalAnnotationNames.Name) |> ignore let earlyExit = generateKeyGuardClause key annotations.Values useDataAnnotations explicitName @@ -300,13 +282,11 @@ type FSharpDbContextGenerator let schema = entityType.GetSchema() let defaultSchema = entityType.Model.GetDefaultSchema() - let explicitSchema = - not (isNull schema) && schema <> defaultSchema + let explicitSchema = not (isNull schema) && schema <> defaultSchema let explicitTable = explicitSchema - || not (isNull tableName) - && tableName <> entityType.GetDbSetName() + || not (isNull tableName) && tableName <> entityType.GetDbSetName() if explicitTable then @@ -322,8 +302,7 @@ type FSharpDbContextGenerator let viewName = entityType.GetViewName() let viewSchema = entityType.GetViewSchema() - let explicitViewSchema = - notNull viewSchema && viewSchema <> defaultSchema + let explicitViewSchema = notNull viewSchema && viewSchema <> defaultSchema let explicitViewTable = explicitViewSchema || notNull viewName @@ -357,8 +336,7 @@ type FSharpDbContextGenerator (code.Literal(index.GetDatabaseName())) ) - annotations.Remove(RelationalAnnotationNames.Name) - |> ignore + annotations.Remove(RelationalAnnotationNames.Name) |> ignore if index.IsUnique then lines.Add(".IsUnique()") @@ -380,29 +358,24 @@ type FSharpDbContextGenerator annotationCodeGenerator.RemoveAnnotationsHandledByConventions(property, annotations) if useDataAnnotations then - annotations.Remove(RelationalAnnotationNames.ColumnName) - |> ignore + annotations.Remove(RelationalAnnotationNames.ColumnName) |> ignore - annotations.Remove(RelationalAnnotationNames.ColumnType) - |> ignore + annotations.Remove(RelationalAnnotationNames.ColumnType) |> ignore annotationCodeGenerator.GenerateDataAnnotationAttributes(property, annotations) |> ignore - else if property.IsNullable |> not - && property.ClrType - |> SharedTypeExtensions.isNullableType - && property.IsPrimaryKey() |> not then + else if + property.IsNullable |> not + && property.ClrType |> SharedTypeExtensions.isNullableType + && property.IsPrimaryKey() |> not + then lines.Add(".IsRequired()") - match property.GetConfiguredColumnType() - |> isNull - |> not - with + match property.GetConfiguredColumnType() |> isNull |> not with | true -> lines.Add($".HasColumnType({code.Literal(property.GetConfiguredColumnType())})") - annotations.Remove(RelationalAnnotationNames.ColumnType) - |> ignore + annotations.Remove(RelationalAnnotationNames.ColumnType) |> ignore | false -> () match property.GetMaxLength() |> Option.ofNullable with @@ -422,8 +395,7 @@ type FSharpDbContextGenerator match property.GetDefaultValue() |> Option.ofObj with | Some d -> - annotations.Remove(RelationalAnnotationNames.DefaultValue) - |> ignore + annotations.Remove(RelationalAnnotationNames.DefaultValue) |> ignore match d with | :? DBNull -> lines.Add(".HasDefaultValue()") @@ -435,12 +407,9 @@ type FSharpDbContextGenerator match property with | :? IConventionProperty as cp -> - match cp.GetValueGeneratedConfigurationSource() - |> Option.ofNullable - with + match cp.GetValueGeneratedConfigurationSource() |> Option.ofNullable with | Some valueGeneratedConfigurationSource when - valueGeneratedConfigurationSource - <> ConfigurationSource.Convention + valueGeneratedConfigurationSource <> ConfigurationSource.Convention && ValueGenerationConvention.GetValueGenerated(property) <> (valueGenerated |> Nullable) -> @@ -497,10 +466,7 @@ type FSharpDbContextGenerator lines.Add( sprintf ".%s(%s)" - (if fk.IsUnique then - "WithOne" - else - "WithMany") + (if fk.IsUnique then "WithOne" else "WithMany") (if isNull fk.PrincipalToDependent then "" else @@ -512,15 +478,11 @@ type FSharpDbContextGenerator let typeParam = if fk.IsUnique then - (sprintf - "<%s>" - ((fk.PrincipalEntityType :> ITypeBase) - .DisplayName())) + (sprintf "<%s>" ((fk.PrincipalEntityType :> ITypeBase).DisplayName())) else "" - let methodParams = - code.Lambda(fk.PrincipalKey.Properties, "p") + let methodParams = code.Lambda(fk.PrincipalKey.Properties, "p") lines.Add(sprintf ".HasPrincipalKey%s(%s)" typeParam methodParams) @@ -530,10 +492,7 @@ type FSharpDbContextGenerator else "" - let methodParams = - fk.Properties - |> Seq.map (fun p -> "d." + p.Name) - |> join ", " + let methodParams = fk.Properties |> Seq.map (fun p -> "d." + p.Name) |> join ", " lines.Add( sprintf ".HasForeignKey%s(fun (d:%s) -> (%s) :> obj)" typeParam fk.DeclaringEntityType.Name methodParams @@ -554,8 +513,7 @@ type FSharpDbContextGenerator generateAnnotations fk annotations lines - if not useDataAnnotations - || not canUseDataAnnotations then + if not useDataAnnotations || not canUseDataAnnotations then appendMultiLineFluentApi fk.DeclaringEntityType lines else @@ -583,13 +541,9 @@ type FSharpDbContextGenerator let explicitName = key.GetName() <> key.GetDefaultName() - keyAnnotations.Remove(RelationalAnnotationNames.Name) - |> ignore + keyAnnotations.Remove(RelationalAnnotationNames.Name) |> ignore - let props = - key.Properties - |> Seq.map (fun e -> code.Literal(e.Name)) - |> join ", " + let props = key.Properties |> Seq.map (fun e -> code.Literal(e.Name)) |> join ", " lines.Add $"j.HasKey({props})" @@ -620,14 +574,11 @@ type FSharpDbContextGenerator let schema = joinEntityType.GetSchema() let defaultSchema = joinEntityType.Model.GetDefaultSchema() - let explicitSchema = - notNull schema && schema <> defaultSchema + let explicitSchema = notNull schema && schema <> defaultSchema let parameterString = if explicitSchema then - (code.Literal tableName) - + ", " - + (code.Literal schema) + (code.Literal tableName) + ", " + (code.Literal schema) else code.Literal tableName @@ -643,10 +594,7 @@ type FSharpDbContextGenerator annotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, indexAnnotations) |> ignore - let indexProps = - index.Properties - |> Seq.map (fun e -> e.Name) - |> Seq.toArray + let indexProps = index.Properties |> Seq.map (fun e -> e.Name) |> Seq.toArray lines.Add $".HasIndex({code.Literal(indexProps)}, {code.Literal(index.GetDatabaseName())}" @@ -656,9 +604,7 @@ type FSharpDbContextGenerator generateAnnotations index indexAnnotations lines writeLines lines " |> ignore" - let indexes = - joinEntityType.GetIndexes() - |> Seq.map generateManyToManyIndex + let indexes = joinEntityType.GetIndexes() |> Seq.map generateManyToManyIndex let generateManyToManyProperties (property: IProperty) = lines.Add $"j.IndexerProperty<{code.Reference(property.ClrType)}>({code.Literal(property.Name)})" @@ -667,13 +613,13 @@ type FSharpDbContextGenerator annotationCodeGenerator.FilterIgnoredAnnotations(property.GetAnnotations()) |> annotationsToDictionary - propertyAnnotations.Remove RelationalAnnotationNames.ColumnOrder - |> ignore + propertyAnnotations.Remove RelationalAnnotationNames.ColumnOrder |> ignore - if property.IsNullable |> not - && property.ClrType - |> SharedTypeExtensions.isNullableType - && property.IsPrimaryKey() |> not then + if + property.IsNullable |> not + && property.ClrType |> SharedTypeExtensions.isNullableType + && property.IsPrimaryKey() |> not + then lines.Add ".IsRequired()" let columnType = property.GetConfiguredColumnType() @@ -681,8 +627,7 @@ type FSharpDbContextGenerator if notNull columnType then lines.Add $".HasColumnType({code.Literal(columnType)})" - propertyAnnotations.Remove RelationalAnnotationNames.ColumnType - |> ignore + propertyAnnotations.Remove RelationalAnnotationNames.ColumnType |> ignore let maxLength = property.GetMaxLength() @@ -692,18 +637,13 @@ type FSharpDbContextGenerator let precision = property.GetPrecision() let scale = property.GetScale() - if precision.HasValue - && scale.GetValueOrDefault() <> 0 then + if precision.HasValue && scale.GetValueOrDefault() <> 0 then lines.Add $".HasPrecision({code.Literal(precision.Value)}, {code.Literal(scale.Value)})" elif precision.HasValue then lines.Add $".HasPrecision({code.Literal(precision.Value)})" if property.IsUnicode().HasValue then - let value = - if property.IsUnicode().Value then - "" - else - "false" + let value = if property.IsUnicode().Value then "" else "false" lines.Add $".IsUnicode({value})" @@ -713,26 +653,24 @@ type FSharpDbContextGenerator if defaultValue = box DBNull.Value then lines.Add ".HasDefaultValue()" - propertyAnnotations.Remove RelationalAnnotationNames.DefaultValue - |> ignore + propertyAnnotations.Remove RelationalAnnotationNames.DefaultValue |> ignore elif notNull defaultValue then lines.Add ".HasDefaultValue({code.UnknownLiteral(defaultValue)})" - propertyAnnotations.Remove RelationalAnnotationNames.DefaultValue - |> ignore + propertyAnnotations.Remove RelationalAnnotationNames.DefaultValue |> ignore let valueGenerated = property.ValueGenerated let mutable isRowVersion = false let valueGeneratedConfigurationSource = - ((property :?> IConventionProperty) - .GetValueGeneratedConfigurationSource()) - - if valueGeneratedConfigurationSource.HasValue - && valueGeneratedConfigurationSource.Value - <> ConfigurationSource.Convention - && ValueGenerationConvention.GetValueGenerated(property) - <> Nullable(valueGenerated) then + ((property :?> IConventionProperty).GetValueGeneratedConfigurationSource()) + + if + valueGeneratedConfigurationSource.HasValue + && valueGeneratedConfigurationSource.Value <> ConfigurationSource.Convention + && ValueGenerationConvention.GetValueGenerated(property) + <> Nullable(valueGenerated) + then let methodName = match valueGenerated with | ValueGenerated.OnAdd -> "ValueGeneratedOnAdd" @@ -768,8 +706,7 @@ type FSharpDbContextGenerator None let properties = - joinEntityType.GetProperties() - |> Seq.map generateManyToManyProperties + joinEntityType.GetProperties() |> Seq.map generateManyToManyProperties stringBuilder { fst @@ -821,8 +758,7 @@ type FSharpDbContextGenerator let generateEntityType (entityType: IEntityType) (useDataAnnotations: bool) = - let key = - generateKey (entityType.FindPrimaryKey()) entityType useDataAnnotations + let key = generateKey (entityType.FindPrimaryKey()) entityType useDataAnnotations let annotations = annotationCodeGenerator.FilterIgnoredAnnotations(entityType.GetAnnotations()) @@ -844,10 +780,7 @@ type FSharpDbContextGenerator |> ignore let tableName = - if - not useDataAnnotations - || notNull (entityType.GetViewName()) - then + if not useDataAnnotations || notNull (entityType.GetViewName()) then generateTableName entityType else None @@ -873,17 +806,15 @@ type FSharpDbContextGenerator generateRelationship fk useDataAnnotations entityType.GetSkipNavigations() - |> Seq.map - (fun skip -> - let containingKey = - skip.JoinEntityType.FindPrimaryKey().Properties.[0] - .GetContainingForeignKeys() - |> Seq.head - - if containingKey.PrincipalEntityType = entityType then - generateManyToMany skip |> Some - else - None) + |> Seq.map (fun skip -> + let containingKey = + skip.JoinEntityType.FindPrimaryKey().Properties.[0].GetContainingForeignKeys() + |> Seq.head + + if containingKey.PrincipalEntityType = entityType then + generateManyToMany skip |> Some + else + None) } @@ -908,8 +839,7 @@ type FSharpDbContextGenerator generateAnnotations model annotations lines let typesToGenerate = - model.GetEntityTypes() - |> Seq.filter (isManyToManyJoinEntityType >> not) + model.GetEntityTypes() |> Seq.filter (isManyToManyJoinEntityType >> not) let writeEntityType (e: IEntityType) = @@ -935,12 +865,11 @@ type FSharpDbContextGenerator let lines' = lines |> Seq.tail lines' - |> Seq.mapi - (fun i line -> - if i = ((lines' |> Seq.length) - 1) then - line + " |> ignore" - else - line) + |> Seq.mapi (fun i line -> + if i = ((lines' |> Seq.length) - 1) then + line + " |> ignore" + else + line) "" } @@ -960,8 +889,7 @@ type FSharpDbContextGenerator let generateClass (model: IModel) contextName connectionString useDataAnnotations suppressOnConfiguring = let typesToGenerate = - model.GetEntityTypes() - |> Seq.filter (isManyToManyJoinEntityType >> not) + model.GetEntityTypes() |> Seq.filter (isManyToManyJoinEntityType >> not) stringBuilder { $"type %s{contextName} =" @@ -1006,57 +934,52 @@ type FSharpDbContextGenerator suppressOnConfiguring ) = - namespaces.Clear() + namespaces.Clear() - namespaces.Add "System" |> ignore + namespaces.Add "System" |> ignore - namespaces.Add "System.Collections.Generic" - |> ignore + namespaces.Add "System.Collections.Generic" |> ignore - namespaces.Add "Microsoft.EntityFrameworkCore" - |> ignore + namespaces.Add "Microsoft.EntityFrameworkCore" |> ignore - namespaces.Add "Microsoft.EntityFrameworkCore.Metadata" - |> ignore + namespaces.Add "Microsoft.EntityFrameworkCore.Metadata" |> ignore - namespaces.Add "EntityFrameworkCore.FSharp.Extensions" - |> ignore + namespaces.Add "EntityFrameworkCore.FSharp.Extensions" |> ignore - let finalContextNamespace = - if isNull contextNamespace then - modelNamespace - else - contextNamespace - - let finalCode = - generateClass model contextName connectionString useDataAnnotations suppressOnConfiguring - - let mutable finalNamespaces = - namespaces - |> Seq.sortBy - (fun n -> - (match n with - | "System" -> 1 - | x when x.StartsWith("System", StringComparison.Ordinal) -> 2 - | x when x.StartsWith("Microsoft", StringComparison.Ordinal) -> 3 - | x when x.StartsWith("EntityFrameworkCore.FSharp", StringComparison.Ordinal) -> 4 - | _ -> 5), - - n) - - if - finalContextNamespace <> modelNamespace - && not (String.IsNullOrEmpty modelNamespace) - then - finalNamespaces <- finalNamespaces |> Seq.append [ modelNamespace ] + let finalContextNamespace = + if isNull contextNamespace then + modelNamespace + else + contextNamespace - stringBuilder { - $"namespace {finalContextNamespace}" - "" + let finalCode = + generateClass model contextName connectionString useDataAnnotations suppressOnConfiguring - for ns in finalNamespaces do - $"open {ns}" + let mutable finalNamespaces = + namespaces + |> Seq.sortBy (fun n -> + (match n with + | "System" -> 1 + | x when x.StartsWith("System", StringComparison.Ordinal) -> 2 + | x when x.StartsWith("Microsoft", StringComparison.Ordinal) -> 3 + | x when x.StartsWith("EntityFrameworkCore.FSharp", StringComparison.Ordinal) -> 4 + | _ -> 5), - "" - finalCode - } + n) + + if + finalContextNamespace <> modelNamespace + && not (String.IsNullOrEmpty modelNamespace) + then + finalNamespaces <- finalNamespaces |> Seq.append [ modelNamespace ] + + stringBuilder { + $"namespace {finalContextNamespace}" + "" + + for ns in finalNamespaces do + $"open {ns}" + + "" + finalCode + } diff --git a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs index 0ae7946..f5c85f6 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs @@ -31,18 +31,14 @@ type internal AttributeWriter(name: string) = sprintf "[<%s(%s)>]" name (String.Join(", ", parameters)) type FSharpEntityTypeGenerator - ( - annotationCodeGenerator: IAnnotationCodeGenerator, - code: ICSharpHelper, - config: ScaffoldOptions - ) = + (annotationCodeGenerator: IAnnotationCodeGenerator, code: ICSharpHelper, config: ScaffoldOptions) = let createAttributeQuick = AttributeWriter >> string let primitiveTypeNames = seq { yield (typedefof, "bool") yield (typedefof, "byte") - yield (typedefof, "byte[]") + yield (typedefof, "byte[]") yield (typedefof, "sbyte") yield (typedefof, "int") yield (typedefof, "char") @@ -66,8 +62,7 @@ type FSharpEntityTypeGenerator let rec getTypeName scaffoldNullableColumnsAs (t: Type) = if t.IsArray then - (getTypeName scaffoldNullableColumnsAs (t.GetElementType())) - + "[]" + (getTypeName scaffoldNullableColumnsAs (t.GetElementType())) + "[]" else if t.GetTypeInfo().IsGenericType then if t.GetGenericTypeDefinition() = typedefof> then @@ -89,10 +84,7 @@ type FSharpEntityTypeGenerator |> Seq.map (fun t' -> getTypeName scaffoldNullableColumnsAs t') ) - genericTypeDefName - + "<" - + genericTypeArguments - + ">" + genericTypeDefName + "<" + genericTypeArguments + ">" else match primitiveTypeNames.TryGetValue t with @@ -109,11 +101,12 @@ type FSharpEntityTypeGenerator && (typeInfo.GetGenericTypeDefinition() = typedefof> || typeInfo.GetGenericTypeDefinition() = typedefof>)) - if (not p.IsNullable) - && (p.ClrType |> isNullableOrOptionType) - && (p.IsPrimaryKey() |> not) then - (nameof RequiredAttribute |> createAttributeQuick) - |> Some + if + (not p.IsNullable) + && (p.ClrType |> isNullableOrOptionType) + && (p.IsPrimaryKey() |> not) + then + (nameof RequiredAttribute |> createAttributeQuick) |> Some else None @@ -133,8 +126,7 @@ type FSharpEntityTypeGenerator else Option.None - if delimitedColumnName.IsSome - || delimitedColumnType.IsSome then + if delimitedColumnName.IsSome || delimitedColumnType.IsSome then let a = "ColumnAttribute" |> AttributeWriter match delimitedColumnName with @@ -171,15 +163,13 @@ type FSharpEntityTypeGenerator let generateKeyAttribute (property: IProperty) = if notNull (property.FindContainingPrimaryKey()) then - (nameof KeyAttribute |> createAttributeQuick) - |> Some + (nameof KeyAttribute |> createAttributeQuick) |> Some else None let generateKeylessAttribute (entityType: IEntityType) = if isNull (entityType.FindPrimaryKey()) then - (nameof KeylessAttribute |> createAttributeQuick) - |> Some + (nameof KeylessAttribute |> createAttributeQuick) |> Some else None @@ -189,16 +179,14 @@ type FSharpEntityTypeGenerator let schema = entityType.GetSchema() let defaultSchema = entityType.Model.GetDefaultSchema() - let schemaParameterNeeded = - notNull schema && schema <> defaultSchema + let schemaParameterNeeded = notNull schema && schema <> defaultSchema let isView = notNull (entityType.GetViewName()) let tableAttributeNeeded = (not isView) && (schemaParameterNeeded - || notNull tableName - && tableName <> entityType.GetDbSetName()) + || notNull tableName && tableName <> entityType.GetDbSetName()) if tableAttributeNeeded then let tableAttribute = AttributeWriter(nameof TableAttribute) @@ -216,56 +204,47 @@ type FSharpEntityTypeGenerator let indexes = entityType.GetIndexes() - |> Seq.filter - (fun i -> - ConfigurationSource.Convention - <> ((i :?> IConventionIndex).GetConfigurationSource())) + |> Seq.filter (fun i -> + ConfigurationSource.Convention + <> ((i :?> IConventionIndex).GetConfigurationSource())) let attributes = indexes - |> Seq.map - (fun index -> - let annotations = - annotationCodeGenerator.FilterIgnoredAnnotations(index.GetAnnotations()) - |> annotationsToDictionary + |> Seq.map (fun index -> + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(index.GetAnnotations()) + |> annotationsToDictionary - annotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, annotations) + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, annotations) - if annotations.Count = 0 then - let indexAttribute = AttributeWriter(nameof IndexAttribute) + if annotations.Count = 0 then + let indexAttribute = AttributeWriter(nameof IndexAttribute) - index.Properties - |> Seq.iter (fun p -> indexAttribute.AddParameter $"nameof({p.Name})") + index.Properties + |> Seq.iter (fun p -> indexAttribute.AddParameter $"nameof({p.Name})") - if notNull index.Name then - indexAttribute.AddParameter $"Name = {code.Literal(index.Name)}" + if notNull index.Name then + indexAttribute.AddParameter $"Name = {code.Literal(index.Name)}" - if index.IsUnique then - indexAttribute.AddParameter $"IsUnique = {code.Literal(index.IsUnique)}" + if index.IsUnique then + indexAttribute.AddParameter $"IsUnique = {code.Literal(index.IsUnique)}" - string indexAttribute |> Some + string indexAttribute |> Some - else - None) + else + None) let output = stringBuilder { attributes } - if output.Length > 0 then - Some output - else - None + if output.Length > 0 then Some output else None let generateForeignKeyAttribute (navigation: INavigation) = - if navigation.IsOnDependent - && navigation.ForeignKey.PrincipalKey.IsPrimaryKey() then - let foreignKeyAttribute = - AttributeWriter(nameof ForeignKeyAttribute) + if navigation.IsOnDependent && navigation.ForeignKey.PrincipalKey.IsPrimaryKey() then + let foreignKeyAttribute = AttributeWriter(nameof ForeignKeyAttribute) if navigation.ForeignKey.Properties.Count > 1 then - let names = - navigation.ForeignKey.Properties - |> Seq.map (fun fk -> fk.Name) + let names = navigation.ForeignKey.Properties |> Seq.map (fun fk -> fk.Name) let param = String.Join(",", names) foreignKeyAttribute.AddParameter(code.Literal param) @@ -278,12 +257,10 @@ type FSharpEntityTypeGenerator let generateInversePropertyAttribute (navigation: INavigation) = - if navigation.ForeignKey.PrincipalKey.IsPrimaryKey() - && notNull navigation.Inverse then + if navigation.ForeignKey.PrincipalKey.IsPrimaryKey() && notNull navigation.Inverse then let inverseNavigation = navigation.Inverse - let inversePropertyAttribute = - AttributeWriter(nameof InversePropertyAttribute) + let inversePropertyAttribute = AttributeWriter(nameof InversePropertyAttribute) let nameMatches = navigation.DeclaringEntityType.GetMembers() @@ -309,17 +286,13 @@ type FSharpEntityTypeGenerator generateIndexAttributes entityType } - if annotations.Length > 0 then - Some annotations - else - None + if annotations.Length > 0 then Some annotations else None let generateConstructor (entityType: IEntityType) = let collectionNavigations = - entityType.GetNavigations() - |> Seq.filter (fun n -> n.IsCollection) + entityType.GetNavigations() |> Seq.filter (fun n -> n.IsCollection) if collectionNavigations |> Seq.isEmpty then None @@ -361,10 +334,7 @@ type FSharpEntityTypeGenerator string a } - if annotations.Length > 0 then - Some annotations - else - None + if annotations.Length > 0 then Some annotations else None let generateNavigationDataAnnotations (navigation: INavigation) = @@ -388,8 +358,7 @@ type FSharpEntityTypeGenerator else None - let typeName = - getTypeName scaffoldNullableColumnsAs p.ClrType + let typeName = getTypeName scaffoldNullableColumnsAs p.ClrType writeProperty p.Name typeName annotationText } @@ -397,13 +366,10 @@ type FSharpEntityTypeGenerator let generateSkipForeignKeyAttribute (navigation: ISkipNavigation) = if navigation.ForeignKey.PrincipalKey.IsPrimaryKey() then - let foreignKeyAttribute = - AttributeWriter(nameof ForeignKeyAttribute) + let foreignKeyAttribute = AttributeWriter(nameof ForeignKeyAttribute) let props = - navigation.ForeignKey.Properties - |> Seq.map (fun p -> p.Name) - |> join "," + navigation.ForeignKey.Properties |> Seq.map (fun p -> p.Name) |> join "," foreignKeyAttribute.AddParameter(code.Literal props) (string foreignKeyAttribute) |> Some @@ -416,8 +382,7 @@ type FSharpEntityTypeGenerator let inverseNavigation = navigation.Inverse if notNull inverseNavigation then - let inversePropertyAttribute = - AttributeWriter(nameof InversePropertyAttribute) + let inversePropertyAttribute = AttributeWriter(nameof InversePropertyAttribute) let condition = navigation.DeclaringEntityType.GetMembers() @@ -528,8 +493,7 @@ type FSharpEntityTypeGenerator if useDataAnnotations then generatePropertyDataAnnotations p - let typeName = - getTypeName scaffoldNullableColumnsAs p.ClrType + let typeName = getTypeName scaffoldNullableColumnsAs p.ClrType $"{p.Name}: {typeName}" } @@ -608,16 +572,16 @@ type FSharpEntityTypeGenerator generate entityType useDataAnnotation scaffoldNullableColumnsAs member this.WriteCode(entityType, ``namespace``, useDataAnnotations, useNullableReferenceTypes) = - let scaffoldTypesAs = - if notNull config then - config.ScaffoldTypesAs - else - RecordType + let scaffoldTypesAs = + if notNull config then + config.ScaffoldTypesAs + else + RecordType - let scaffoldNullableColumnsAs = - if notNull config then - config.ScaffoldNullableColumnsAs - else - OptionTypes + let scaffoldNullableColumnsAs = + if notNull config then + config.ScaffoldNullableColumnsAs + else + OptionTypes - writeCode entityType useDataAnnotations scaffoldTypesAs scaffoldNullableColumnsAs + writeCode entityType useDataAnnotations scaffoldTypesAs scaffoldNullableColumnsAs diff --git a/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs b/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs index df2ae04..418133e 100644 --- a/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs @@ -21,9 +21,7 @@ type FSharpModelGenerator let fileExtension = ".fs" - let defaultNamespaces = - [ "System" - "System.Collections.Generic" ] + let defaultNamespaces = [ "System"; "System.Collections.Generic" ] let annotationNamespaces = [ "System.ComponentModel.DataAnnotations" @@ -50,8 +48,7 @@ type FSharpModelGenerator |> Seq.append annotationNamespaces |> Seq.append (model |> getNamespacesFromModel) else - defaultNamespaces - |> Seq.append (model |> getNamespacesFromModel) + defaultNamespaces |> Seq.append (model |> getNamespacesFromModel) stringBuilder { $"namespace {``namespace``}" @@ -71,8 +68,7 @@ type FSharpModelGenerator let dbContextFileName = options.ContextName - let domainFileName = - dbContextFileName.Replace("Context", "Domain") + let domainFileName = dbContextFileName.Replace("Context", "Domain") let generatedCode = contextGenerator.WriteCode( @@ -98,11 +94,9 @@ type FSharpModelGenerator else dbContextFileName - let contextFile = - ScaffoldedFile(path, generatedCode) + let contextFile = ScaffoldedFile(path, generatedCode) - let resultingFiles = - ScaffoldedModel(ContextFile = contextFile) + let resultingFiles = ScaffoldedModel(ContextFile = contextFile) let createEntityCode (entityType: IEntityType) = entityTypeGenerator.WriteCode( @@ -127,8 +121,7 @@ type FSharpModelGenerator entityCode } - let domainFile = - ScaffoldedFile((domainFileName + fileExtension), domainFileCode) + let domainFile = ScaffoldedFile((domainFileName + fileExtension), domainFileCode) resultingFiles.AdditionalFiles.Add(domainFile) diff --git a/src/EFCore.FSharp/Translations/IsNullTranslation.fs b/src/EFCore.FSharp/Translations/IsNullTranslation.fs index 8dba65c..f8add05 100644 --- a/src/EFCore.FSharp/Translations/IsNullTranslation.fs +++ b/src/EFCore.FSharp/Translations/IsNullTranslation.fs @@ -10,6 +10,7 @@ let isNullMethodTranslator (sqlExp: ISqlExpressionFactory) = null else let expression = arguments |> Seq.tryHead + match expression with | Some expression when method.Name = "IsNull" -> sqlExp.IsNull(expression) :> _ | _ -> null } diff --git a/src/EFCore.FSharp/Translations/Translation.fs b/src/EFCore.FSharp/Translations/Translation.fs index 3e9c6a3..f759b44 100644 --- a/src/EFCore.FSharp/Translations/Translation.fs +++ b/src/EFCore.FSharp/Translations/Translation.fs @@ -41,7 +41,6 @@ type FSharpTypeOptionsExtension() = .TryAdd() |> ignore - member this.Info = - ExtensionInfo(this :> IDbContextOptionsExtension) :> _ + member this.Info = ExtensionInfo(this :> IDbContextOptionsExtension) :> _ member this.Validate _ = () diff --git a/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs b/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs index 0544d59..a85baff 100644 --- a/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs +++ b/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs @@ -11,16 +11,14 @@ open Microsoft.EntityFrameworkCore.Migrations.Internal module internal EntityFrameworkExtensions = - let getConfiguredColumnType = - RelationalPropertyExtensions.GetConfiguredColumnType + let getConfiguredColumnType = RelationalPropertyExtensions.GetConfiguredColumnType let getPrimaryKey (p: IProperty) = (p :?> Property).PrimaryKey let sortNamespaces ns = let namespaceComparer = NamespaceComparer() - ns - |> List.sortWith (fun x y -> namespaceComparer.Compare(x, y)) + ns |> List.sortWith (fun x y -> namespaceComparer.Compare(x, y)) let getId = MigrationExtensions.GetId @@ -49,15 +47,11 @@ module internal EntityFrameworkExtensions = let toAnnotatable (a: IAnnotatable) = a let annotationsToDictionary (annotations: IAnnotation seq) = - annotations - |> Seq.map (fun a -> a.Name, a) - |> readOnlyDict - |> Dictionary + annotations |> Seq.map (fun a -> a.Name, a) |> readOnlyDict |> Dictionary let isManyToManyJoinEntityType (e: IEntityType) = - if (e.GetNavigations() |> Seq.isEmpty - && e.GetSkipNavigations() |> Seq.isEmpty) then + if (e.GetNavigations() |> Seq.isEmpty && e.GetSkipNavigations() |> Seq.isEmpty) then false else let primaryKey = e.FindPrimaryKey() @@ -68,11 +62,8 @@ module internal EntityFrameworkExtensions = && primaryKey.Properties.Count > 1 && foreignKeys.Length = 2 && primaryKey.Properties.Count = properties.Length - && (foreignKeys.[0].Properties.Count - + foreignKeys.[1].Properties.Count) = properties.Length - && foreignKeys.[0] - .Properties.Intersect(foreignKeys.[1].Properties) - |> Seq.isEmpty + && (foreignKeys.[0].Properties.Count + foreignKeys.[1].Properties.Count) = properties.Length + && foreignKeys.[0].Properties.Intersect(foreignKeys.[1].Properties) |> Seq.isEmpty && foreignKeys.[0].IsRequired && foreignKeys.[1].IsRequired && not foreignKeys.[0].IsUnique diff --git a/src/EFCore.FSharp/Utilities/Multigraph.fs b/src/EFCore.FSharp/Utilities/Multigraph.fs index f7fd430..d5e5a68 100644 --- a/src/EFCore.FSharp/Utilities/Multigraph.fs +++ b/src/EFCore.FSharp/Utilities/Multigraph.fs @@ -5,11 +5,9 @@ open System.Collections.Generic type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = let vertexSet = HashSet<'TVertex>() - let successorMap = - Dictionary<'TVertex, Dictionary<'TVertex, List<'TEdge>>>() + let successorMap = Dictionary<'TVertex, Dictionary<'TVertex, List<'TEdge>>>() - let predecessorMap = - Dictionary<'TVertex, HashSet<'TVertex>>() + let predecessorMap = Dictionary<'TVertex, HashSet<'TVertex>>() member this.AddVertices(vertices: 'TVertex seq) = vertexSet.UnionWith(vertices) @@ -43,10 +41,7 @@ type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = predecessors.Add(from) |> ignore member private this.ThrowCycle(cycle: List<'TVertex>) = - let cycleString = - cycle - |> Seq.map string - |> Seq.fold (fun c n -> $"{c} -> {n}") "" + let cycleString = cycle |> Seq.map string |> Seq.fold (fun c n -> $"{c} -> {n}") "" invalidOp $"Circular dependency {cycleString}" @@ -65,15 +60,13 @@ type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = | _ -> Seq.empty vertexSet - |> Seq.iter - (fun v -> - getOutgoingNeighbour v - |> Seq.iter - (fun n -> - if predecessorCounts.ContainsKey(n) then - predecessorCounts.[n] <- predecessorCounts.[n] + 1 - else - predecessorCounts.[n] <- 1)) + |> Seq.iter (fun v -> + getOutgoingNeighbour v + |> Seq.iter (fun n -> + if predecessorCounts.ContainsKey(n) then + predecessorCounts.[n] <- predecessorCounts.[n] + 1 + else + predecessorCounts.[n] <- 1)) vertexSet |> Seq.filter (predecessorCounts.ContainsKey >> not) @@ -85,20 +78,17 @@ type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = while index < sortedQueue.Count do getOutgoingNeighbour (sortedQueue.[index]) |> Seq.filter predecessorCounts.ContainsKey - |> Seq.iter - (fun n -> - predecessorCounts.[n] <- predecessorCounts.[n] - 1 + |> Seq.iter (fun n -> + predecessorCounts.[n] <- predecessorCounts.[n] - 1 - if predecessorCounts.[n] = 0 then - sortedQueue.Add(n) - predecessorCounts.Remove(n) |> ignore) + if predecessorCounts.[n] = 0 then + sortedQueue.Add(n) + predecessorCounts.Remove(n) |> ignore) index <- index + 1 if sortedQueue.Capacity < vertexSet.Count then - let mutable currentCycleVertex = - vertexSet - |> Seq.find predecessorCounts.ContainsKey + let mutable currentCycleVertex = vertexSet |> Seq.find predecessorCounts.ContainsKey let cycle = [ currentCycleVertex ] |> ResizeArray let mutable finished = false diff --git a/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs b/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs index 3b1b829..9067bf5 100644 --- a/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs +++ b/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs @@ -35,28 +35,20 @@ module internal rec SharedTypeExtensions = match builtInTypeNames.TryGetValue t with | (true, builtInName) -> sb.Append(builtInName) | _ -> - let name = - if useFullName then - t.FullName - else - t.Name + let name = if useFullName then t.FullName else t.Name sb.Append(name) let rec processGenericType t genericArguments length useFullName (compilable: bool) (sb: StringBuilder) = - if t.IsConstructedGenericType - && t.GetGenericTypeDefinition() = typeof> then + if t.IsConstructedGenericType && t.GetGenericTypeDefinition() = typeof> then sb.Append("Nullable<") |> ignore - processType (unwrapNullableType t) useFullName compilable sb - |> ignore + processType (unwrapNullableType t) useFullName compilable sb |> ignore sb.Append(">") - elif t.IsConstructedGenericType - && t.GetGenericTypeDefinition() = typeof> then - processType (unwrapNullableType t) useFullName compilable sb - |> ignore + elif t.IsConstructedGenericType && t.GetGenericTypeDefinition() = typeof> then + processType (unwrapNullableType t) useFullName compilable sb |> ignore sb.Append(" option") else @@ -69,8 +61,7 @@ module internal rec SharedTypeExtensions = if compilable then if t.IsNested then - processType t.DeclaringType useFullName compilable sb - |> ignore + processType t.DeclaringType useFullName compilable sb |> ignore sb.Append('.') |> ignore else @@ -90,12 +81,10 @@ module internal rec SharedTypeExtensions = if genericPartIndex <= 0 then sb.Append(t.Name) else - sb.Append(t.Name, 0, genericPartIndex).Append("<") - |> ignore + sb.Append(t.Name, 0, genericPartIndex).Append("<") |> ignore for i = offset to (length - 1) do - processType genericArguments.[i] useFullName compilable sb - |> ignore + processType genericArguments.[i] useFullName compilable sb |> ignore if (i + 1) <> length then sb.Append(',') |> ignore @@ -111,15 +100,10 @@ module internal rec SharedTypeExtensions = while (innerType.IsArray) do innerType <- innerType.GetElementType() - processType innerType useFullName compilable sb - |> ignore + processType innerType useFullName compilable sb |> ignore while (innerType.IsArray) do - sb - .Append('[') - .Append(',', innerType.GetArrayRank() - 1) - .Append(']') - |> ignore + sb.Append('[').Append(',', innerType.GetArrayRank() - 1).Append(']') |> ignore innerType <- innerType.GetElementType() @@ -151,22 +135,16 @@ module internal rec SharedTypeExtensions = && typeInfo.GetGenericTypeDefinition() = typedefof> let unwrapNullableType (t: Type) = - if isNullableType t then - Nullable.GetUnderlyingType t - else - t + if isNullableType t then Nullable.GetUnderlyingType t else t let unwrapOptionType (t: Type) = - if isOptionType t then - t.GenericTypeArguments.[0] - else - t + if isOptionType t then t.GenericTypeArguments.[0] else t let makeNullable (nullable: bool) (t: Type) = if isNullableType t = nullable then t else if nullable && t.IsValueType then - typedefof>.MakeGenericType (t) + typedefof>.MakeGenericType(t) else unwrapNullableType t @@ -174,24 +152,19 @@ module internal rec SharedTypeExtensions = if isOptionType t = optional then t else if optional then - typedefof>.MakeGenericType (t) + typedefof>.MakeGenericType(t) else unwrapOptionType t let unwrapEnumType (t: Type) = let isNullable = isNullableType t - let underlyingNonNullableType = - if isNullable then - unwrapNullableType t - else - t + let underlyingNonNullableType = if isNullable then unwrapNullableType t else t if not (underlyingNonNullableType.GetTypeInfo()).IsEnum then t else - let underlyingEnumType = - Enum.GetUnderlyingType(underlyingNonNullableType) + let underlyingEnumType = Enum.GetUnderlyingType(underlyingNonNullableType) if isNullable then makeNullable true underlyingEnumType @@ -199,8 +172,7 @@ module internal rec SharedTypeExtensions = underlyingEnumType let isInteger (t: Type) = - let t' = - t |> unwrapNullableType |> unwrapOptionType + let t' = t |> unwrapNullableType |> unwrapOptionType t' = typeof || t' = typeof @@ -213,8 +185,7 @@ module internal rec SharedTypeExtensions = || t' = typeof let isNumeric (t: Type) = - let t' = - t |> unwrapNullableType |> unwrapOptionType + let t' = t |> unwrapNullableType |> unwrapOptionType (isInteger t') || t' = typeof @@ -222,8 +193,7 @@ module internal rec SharedTypeExtensions = || t' = typeof let isSignedInteger (t: Type) = - let t' = - t |> unwrapNullableType |> unwrapOptionType + let t' = t |> unwrapNullableType |> unwrapOptionType t' = typeof || t' = typeof @@ -236,21 +206,16 @@ module internal rec SharedTypeExtensions = sb.ToString() let isSingleCaseUnion t = - FSharpType.IsUnion t - && FSharpType.GetUnionCases(t) - |> Array.length - |> ((=) 1) + FSharpType.IsUnion t && FSharpType.GetUnionCases(t) |> Array.length |> ((=) 1) let unwrapSingleCaseUnion t = - let case = - FSharpType.GetUnionCases(t) |> Array.exactlyOne + let case = FSharpType.GetUnionCases(t) |> Array.exactlyOne let field = case.GetFields() |> Array.head field.PropertyType - let getRequiredRuntimeMethod (t: Type, name: string, parameters: Type []) = - let result = - t.GetTypeInfo().GetRuntimeMethod(name, parameters) + let getRequiredRuntimeMethod (t: Type, name: string, parameters: Type[]) = + let result = t.GetTypeInfo().GetRuntimeMethod(name, parameters) if isNull result then invalidOp $"Could not find method '{name}' on type '{t}'" diff --git a/src/EFCore.FSharp/Utilities/StringBuffer.fs b/src/EFCore.FSharp/Utilities/StringBuffer.fs index 8ba2fa4..5ddc8c4 100644 --- a/src/EFCore.FSharp/Utilities/StringBuffer.fs +++ b/src/EFCore.FSharp/Utilities/StringBuffer.fs @@ -33,26 +33,23 @@ module StringBuffer = if Seq.isEmpty strings then String.Empty else - strings - |> Seq.reduce (fun x y -> x + separator + y) + strings |> Seq.reduce (fun x y -> x + separator + y) let ifTrue condition txt = if condition then Some txt else None let writeNamespaces (namespaces: string seq) = - namespaces - |> Seq.map (fun n -> "open " + n) - |> join Environment.NewLine + namespaces |> Seq.map (fun n -> "open " + n) |> join Environment.NewLine let unindent (n: int) (txt: string option) = fun (b: IndentedStringBuilder) -> match txt with | Some t -> - for _ in [ 1 .. n ] do + for _ in [ 1..n ] do b.DecrementIndent() |> ignore Printf.kprintf (b.AppendLines >> ignore) "%s" t - for _ in [ 1 .. n ] do + for _ in [ 1..n ] do b.IncrementIndent() |> ignore | None -> () @@ -93,8 +90,7 @@ module StringBuffer = member inline _.Yield(lines: string seq) = fun (b: IndentedStringBuilder) -> - lines - |> Seq.iter (fun txt -> Printf.kprintf (b.AppendLines >> ignore) "%s" txt) + lines |> Seq.iter (fun txt -> Printf.kprintf (b.AppendLines >> ignore) "%s" txt) member inline __.Yield(txt: string option) = fun (b: IndentedStringBuilder) -> @@ -112,9 +108,8 @@ module StringBuffer = type IndentStringBufferBuilder() = inherit StringBufferBuilder() - with - override _.Run(f: StringBuffer) = writeStringBuffer f Indent + override _.Run(f: StringBuffer) = writeStringBuffer f Indent let stringBuilder = new StringBufferBuilder() let indent = new IndentStringBufferBuilder() diff --git a/src/EFCore.FSharp/ValueConverters/Converters.fs b/src/EFCore.FSharp/ValueConverters/Converters.fs index 9df4370..6c7f357 100644 --- a/src/EFCore.FSharp/ValueConverters/Converters.fs +++ b/src/EFCore.FSharp/ValueConverters/Converters.fs @@ -8,55 +8,49 @@ module Conversion = open System.Linq.Expressions let toOption<'T> = - <@ Func<'T, 'T option> - (fun (x: 'T) -> + <@ + Func<'T, 'T option>(fun (x: 'T) -> match box x with | null -> None - | _ -> Some x) @> + | _ -> Some x) + @> |> LeafExpressionConverter.QuotationToExpression |> unbox>> let fromOption<'T> = - <@ Func<'T option, 'T> - (fun (x: 'T option) -> + <@ + Func<'T option, 'T>(fun (x: 'T option) -> match x with | Some y -> y - | None -> Unchecked.defaultof<'T>) @> + | None -> Unchecked.defaultof<'T>) + @> |> LeafExpressionConverter.QuotationToExpression |> unbox>> let toSingleCaseUnion<'T, 'U> = - <@ Func<'T, 'U> - (fun (x: 'T) -> - FSharpValue.MakeUnion( - FSharpType.GetUnionCases(typedefof<'U>) - |> Array.exactlyOne, - [| x :> obj |] - ) - :?> 'U) @> + <@ + Func<'T, 'U>(fun (x: 'T) -> + FSharpValue.MakeUnion(FSharpType.GetUnionCases(typedefof<'U>) |> Array.exactlyOne, [| x :> obj |]) + :?> 'U) + @> |> LeafExpressionConverter.QuotationToExpression |> unbox>> let fromFromSingleCase<'T, 'U> = - <@ Func<'U, 'T> - (fun (x: 'U) -> - FSharpValue.GetUnionFields(x, x.GetType()) - |> snd - |> Seq.head - :?> 'T) @> + <@ Func<'U, 'T>(fun (x: 'U) -> FSharpValue.GetUnionFields(x, x.GetType()) |> snd |> Seq.head :?> 'T) @> |> LeafExpressionConverter.QuotationToExpression |> unbox>> type OptionConverter<'T>() = - inherit Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'T option, 'T> - ( + inherit + Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'T option, 'T>( Conversion.fromOption, Conversion.toOption ) type SingleCaseUnionConverter<'T, 'U>() = - inherit Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'U, 'T> - ( + inherit + Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'U, 'T>( Conversion.fromFromSingleCase, Conversion.toSingleCaseUnion ) diff --git a/tests/EFCore.FSharp.Tests/AssemblyInfo.fs b/tests/EFCore.FSharp.Tests/AssemblyInfo.fs index 4683eb2..8573ff2 100644 --- a/tests/EFCore.FSharp.Tests/AssemblyInfo.fs +++ b/tests/EFCore.FSharp.Tests/AssemblyInfo.fs @@ -1,23 +1,39 @@ // Auto-Generated by FAKE; do not edit namespace System + open System.Reflection [] [] [] -[] +[] [] [] -[] -[] +[] +[] do () module internal AssemblyVersionInformation = - let [] AssemblyTitle = "EFCore.FSharp.Tests" - let [] AssemblyProduct = "EFCore.FSharp" - let [] AssemblyVersion = "6.0.5" - let [] AssemblyMetadata_ReleaseDate = "2021-11-30T00:00:00.0000000+00:00" - let [] AssemblyFileVersion = "6.0.5" - let [] AssemblyInformationalVersion = "6.0.5" - let [] AssemblyMetadata_ReleaseChannel = "release" - let [] AssemblyMetadata_GitHash = "9b0e92f0fe99052d899a2c5bc55a5f8b61416127" + [] + let AssemblyTitle = "EFCore.FSharp.Tests" + + [] + let AssemblyProduct = "EFCore.FSharp" + + [] + let AssemblyVersion = "6.0.5" + + [] + let AssemblyMetadata_ReleaseDate = "2021-11-30T00:00:00.0000000+00:00" + + [] + let AssemblyFileVersion = "6.0.5" + + [] + let AssemblyInformationalVersion = "6.0.5" + + [] + let AssemblyMetadata_ReleaseChannel = "release" + + [] + let AssemblyMetadata_GitHash = "9b0e92f0fe99052d899a2c5bc55a5f8b61416127" diff --git a/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs b/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs index 706b680..5d1f58c 100644 --- a/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs +++ b/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs @@ -38,10 +38,7 @@ type MyContext() = |> ignore override __.OnModelCreating(modelBuilder) = - modelBuilder - .Entity() - .HasKey([| "Key1"; "Key2" |]) - |> ignore + modelBuilder.Entity().HasKey([| "Key1"; "Key2" |]) |> ignore let createContext () = let ctx = new MyContext() @@ -71,8 +68,7 @@ let DbContextHelperTests = let modified = { original with Title = "My New Title" } - updateEntity ctx (fun b -> b.Id) modified - |> ignore + updateEntity ctx (fun b -> b.Id) modified |> ignore let expected = { Id = original.Id @@ -81,8 +77,7 @@ let DbContextHelperTests = let found = tryFindEntity ctx original.Id - let actual = - Expect.wantSome found "Should not be None" + let actual = Expect.wantSome found "Should not be None" Expect.equal actual expected "Record in context should match" } @@ -101,22 +96,20 @@ let DbContextHelperTests = let modified = { original with - Value = "My New Content" } + Value = "My New Content" } - updateEntity ctx (fun b -> [ box b.Key1; box b.Key2 ]) modified - |> ignore + updateEntity ctx (fun b -> [ box b.Key1; box b.Key2 ]) modified |> ignore let expected = { Key1 = 1 Key2 = 2 Value = "My New Content" } - let key: obj [] = [| original.Key1; original.Key2 |] + let key: obj[] = [| original.Key1; original.Key2 |] let found = tryFindEntity ctx key - let actual = - Expect.wantSome found "Should not be None" + let actual = Expect.wantSome found "Should not be None" Expect.equal actual expected "Record in context should match" } @@ -148,8 +141,7 @@ let DbContextHelperTests = } |> Async.RunSynchronously - let actual = - Expect.wantSome found "Should not be None" + let actual = Expect.wantSome found "Should not be None" Expect.equal actual expected "Record in context should match" } @@ -177,14 +169,11 @@ let DbContextHelperTests = let! _ = updateEntityAsync ctx (fun b -> b.Id :> obj) modified - return! - tryFindEntityTaskAsync ctx original.Id - |> Async.AwaitTask + return! tryFindEntityTaskAsync ctx original.Id |> Async.AwaitTask } |> Async.RunSynchronously - let actual = - Expect.wantSome found "Should not be None" + let actual = Expect.wantSome found "Should not be None" Expect.equal actual expected "Record in context should match" } @@ -200,9 +189,7 @@ let DbContextHelperTests = test "tryFindEntityAsync returns None if no matching entry found" { use ctx = createContext () - let found = - tryFindEntityAsync ctx (Guid.NewGuid()) - |> Async.RunSynchronously + let found = tryFindEntityAsync ctx (Guid.NewGuid()) |> Async.RunSynchronously Expect.isNone found "Should be None" } ] @@ -224,8 +211,7 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = - toListAsync ctx.Blogs |> Async.RunSynchronously + let result = toListAsync ctx.Blogs |> Async.RunSynchronously Expect.equal [ blog ] result "Should be same" } @@ -242,8 +228,7 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = - tryFirstAsync ctx.Blogs |> Async.RunSynchronously + let result = tryFirstAsync ctx.Blogs |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -252,8 +237,7 @@ let DbSetTests = test "tryFirstAsync should return None" { use ctx = createContext () - let result = - tryFirstAsync ctx.Blogs |> Async.RunSynchronously + let result = tryFirstAsync ctx.Blogs |> Async.RunSynchronously Expect.isNone result "should have none" } @@ -294,8 +278,7 @@ let DbSetTests = saveChanges ctx let result = - tryFilterFirstAsync <@ fun x -> x.Id = id @> ctx.Blogs - |> Async.RunSynchronously + tryFilterFirstAsync <@ fun x -> x.Id = id @> ctx.Blogs |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -306,8 +289,7 @@ let DbSetTests = let id = Guid.NewGuid() let result = - tryFilterFirstAsync <@ fun x -> x.Id = id @> ctx.Blogs - |> Async.RunSynchronously + tryFilterFirstAsync <@ fun x -> x.Id = id @> ctx.Blogs |> Async.RunSynchronously Expect.isNone result "should have none" } @@ -324,8 +306,7 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = - tryFilterFirst <@ fun x -> x.Id = id @> ctx.Blogs + let result = tryFilterFirst <@ fun x -> x.Id = id @> ctx.Blogs let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -335,8 +316,7 @@ let DbSetTests = use ctx = createContext () let id = Guid.NewGuid() - let result = - tryFilterFirst <@ fun x -> x.Id = id @> ctx.Blogs + let result = tryFilterFirst <@ fun x -> x.Id = id @> ctx.Blogs Expect.isNone result "should have none" } @@ -353,9 +333,7 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = - ctx.Blogs.TryFirstAsync() - |> Async.RunSynchronously + let result = ctx.Blogs.TryFirstAsync() |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -364,9 +342,7 @@ let DbSetTests = test "TryFirstAsync extension should return None" { use ctx = createContext () - let result = - ctx.Blogs.TryFirstAsync() - |> Async.RunSynchronously + let result = ctx.Blogs.TryFirstAsync() |> Async.RunSynchronously Expect.isNone result "should have none" } @@ -384,9 +360,7 @@ let DbSetTests = saveChanges ctx let result = - ctx.Blogs.TryFirstTaskAsync() - |> Async.AwaitTask - |> Async.RunSynchronously + ctx.Blogs.TryFirstTaskAsync() |> Async.AwaitTask |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -396,9 +370,7 @@ let DbSetTests = use ctx = createContext () let result = - ctx.Blogs.TryFirstTaskAsync() - |> Async.AwaitTask - |> Async.RunSynchronously + ctx.Blogs.TryFirstTaskAsync() |> Async.AwaitTask |> Async.RunSynchronously Expect.isNone result "should have none" } @@ -439,9 +411,7 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = - ctx.Blogs.TryFirstAsync(fun x -> x.Id = id) - |> Async.RunSynchronously + let result = ctx.Blogs.TryFirstAsync(fun x -> x.Id = id) |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -473,9 +443,7 @@ let DbSetTests = use ctx = createContext () let id = Guid.NewGuid() - let result = - ctx.Blogs.TryFirstAsync(fun x -> x.Id = id) - |> Async.RunSynchronously + let result = ctx.Blogs.TryFirstAsync(fun x -> x.Id = id) |> Async.RunSynchronously Expect.isNone result "should have none" } diff --git a/tests/EFCore.FSharp.Tests/Internal/FSharpUtilitiesTest.fs b/tests/EFCore.FSharp.Tests/Internal/FSharpUtilitiesTest.fs index 6453d5f..0357feb 100644 --- a/tests/EFCore.FSharp.Tests/Internal/FSharpUtilitiesTest.fs +++ b/tests/EFCore.FSharp.Tests/Internal/FSharpUtilitiesTest.fs @@ -9,7 +9,7 @@ open Expecto let getTypeNameTestCases = [ (typeof, "int") (typeof>, "Nullable") - (typeof, "int[]") + (typeof, "int[]") (typeof>>, "Dictionary") (typeof>>, "Nullable ResizeArray") (typeof list>, "Nullable list") @@ -29,11 +29,9 @@ let TestFunc (builder: obj, o1: obj, o2: obj, o3: obj) = failwith "NotSupported" let _testFuncMethodInfo = - let a = - System.Reflection.Assembly.GetExecutingAssembly() + let a = System.Reflection.Assembly.GetExecutingAssembly() - let modu = - a.GetType("EntityFrameworkCore.FSharp.Test.Internal") + let modu = a.GetType("EntityFrameworkCore.FSharp.Test.Internal") let methodInfo = modu.GetMethod("TestFunc") @@ -45,38 +43,34 @@ let FSharpUtilitiesTest = testList "FSharpUtilitiesTest" [ testList - "getTypeName" - [ test "int" { - getTypeNameTestCases - |> Seq.iter - (fun (type', expected) -> - let actual = FSharpUtilities.getTypeName type' - Expect.equal actual expected "Should be equal") - } ] + "getTypeName" + [ test "int" { + getTypeNameTestCases + |> Seq.iter (fun (type', expected) -> + let actual = FSharpUtilities.getTypeName type' + Expect.equal actual expected "Should be equal") + } ] testList "delimitString" [ test "delimitString" { delimitStringTestCases - |> Seq.iter - (fun (input, expected) -> - let actual = FSharpUtilities.delimitString input - Expect.equal actual expected "Should be equal") + |> Seq.iter (fun (input, expected) -> + let actual = FSharpUtilities.delimitString input + Expect.equal actual expected "Should be equal") } ] testList "MethodCallCodeFragment" [ test "MethodCallCodeFragment with parameters" { - let method = - MethodCallCodeFragment(_testFuncMethodInfo, true, 42) + let method = MethodCallCodeFragment(_testFuncMethodInfo, true, 42) - let actual = method |> FSharpUtilities.generate - Expect.equal actual ".TestFunc(true, 42)" "Should be equal" + let actual = method |> FSharpUtilities.generate + Expect.equal actual ".TestFunc(true, 42)" "Should be equal" } test "MethodCallCodeFragment when niladic" { - let method = - MethodCallCodeFragment(_testFuncMethodInfo) + let method = MethodCallCodeFragment(_testFuncMethodInfo) let actual = method |> FSharpUtilities.generate Expect.equal actual ".TestFunc()" "Should be equal" diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs index c905b0b..d89474a 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs @@ -31,12 +31,9 @@ open System.Data open Microsoft.Data.SqlClient type GeometryValueCoverter<'geometry when 'geometry :> Geometry> - ( - reader: SqlServerBytesReader, - writer: SqlServerBytesWriter - ) = - inherit ValueConverter<'geometry, SqlBytes> - ( + (reader: SqlServerBytesReader, writer: SqlServerBytesWriter) = + inherit + ValueConverter<'geometry, SqlBytes>( (fun g -> SqlBytes(writer.Write g)), (fun b -> reader.Read(b.Value) :?> 'geometry) ) @@ -46,21 +43,16 @@ module Helpers = let isGeography = String.Equals(storeType, "geography", StringComparison.OrdinalIgnoreCase) - let reader = - SqlServerBytesReader(geometryServices, IsGeography = isGeography) + let reader = SqlServerBytesReader(geometryServices, IsGeography = isGeography) - let writer = - SqlServerBytesWriter(IsGeography = isGeography) + let writer = SqlServerBytesWriter(IsGeography = isGeography) GeometryValueCoverter<'geometry>(reader, writer) type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> - ( - geometryServices: NtsGeometryServices, - storeType: string - ) = - inherit RelationalGeometryTypeMapping<'geometry, SqlBytes> - ( + (geometryServices: NtsGeometryServices, storeType: string) = + inherit + RelationalGeometryTypeMapping<'geometry, SqlBytes>( (Helpers.createConverter geometryServices storeType), storeType ) @@ -69,14 +61,12 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> String.Equals(storeType, "geography", StringComparison.OrdinalIgnoreCase) let getSqlBytes = - typeof.GetRuntimeMethod ("GetSqlBytes", [| typeof |]) + typeof.GetRuntimeMethod("GetSqlBytes", [| typeof |]) let createSqlDbTypeAccessor paramType = - let paramParam = - Expression.Parameter(typeof, "parameter") + let paramParam = Expression.Parameter(typeof, "parameter") - let valueParam = - Expression.Parameter(typeof, "value") + let valueParam = Expression.Parameter(typeof, "value") Expression .Lambda>( @@ -92,11 +82,9 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> let createUdtTypeNameAccessor (paramType) = - let paramParam = - Expression.Parameter(typeof, "parameter") + let paramParam = Expression.Parameter(typeof, "parameter") - let valueParam = - Expression.Parameter(typeof, "value") + let valueParam = Expression.Parameter(typeof, "value") Expression .Lambda>( @@ -121,34 +109,17 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> (geometry = (Point.Empty :> Geometry)) || (geometry.SRID = (if isGeography then 4326 else 0)) - let g = - if isGeography then - "geography" - else - "geometry" + let g = if isGeography then "geography" else "geometry" - let m = - if defaultSrid then - "Parse" - else - "STGeomFromText" - - let a = - (WKTWriter.ForMicrosoftSqlServer()) - .Write(geometry) - - builder - .Append(g) - .Append("::") - .Append(m) - .Append("('") - .Append(a) - .Append("'") + let m = if defaultSrid then "Parse" else "STGeomFromText" + + let a = (WKTWriter.ForMicrosoftSqlServer()).Write(geometry) + + builder.Append(g).Append("::").Append(m).Append("('").Append(a).Append("'") |> ignore if (not defaultSrid) then - builder.Append(", ").Append(geometry.SRID) - |> ignore + builder.Append(", ").Append(geometry.SRID) |> ignore builder.Append(")") |> ignore @@ -173,13 +144,7 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> sqlDbTypeSetter.Invoke(parameter, SqlDbType.Udt) - udtTypeNameSetter.Invoke( - parameter, - (if isGeography then - "geography" - else - "geometry") - ) + udtTypeNameSetter.Invoke(parameter, (if isGeography then "geography" else "geometry")) type SqlServerNetTopologySuiteTypeMappingSourcePlugin(geometryServices) = @@ -193,25 +158,16 @@ type SqlServerNetTopologySuiteTypeMappingSourcePlugin(geometryServices) = let storeTypeName = mappingInfo.StoreTypeName if - typeof.IsAssignableFrom (clrType) - || (notNull storeTypeName - && spatialStoresTypes.Contains(storeTypeName)) + typeof.IsAssignableFrom(clrType) + || (notNull storeTypeName && spatialStoresTypes.Contains(storeTypeName)) then - let genericType = - if notNull clrType then - clrType - else - typeof - - let storeName = - if notNull storeTypeName then - storeTypeName - else - "geography" + let genericType = if notNull clrType then clrType else typeof + + let storeName = if notNull storeTypeName then storeTypeName else "geography" let instance = Activator.CreateInstance( - typedefof>.MakeGenericType (genericType), + typedefof>.MakeGenericType(genericType), geometryServices, storeName ) @@ -237,7 +193,11 @@ module FSharpMigrationOperationGeneratorTest = FSharpMigrationOperationGenerator( FSharpHelper( - SqlServerTypeMappingSource(typeMappingSourceDependencies, relationalTypeMappingSourceDependencies, SqlServerSingletonOptions()) + SqlServerTypeMappingSource( + typeMappingSourceDependencies, + relationalTypeMappingSourceDependencies, + SqlServerSingletonOptions() + ) ) ) :> ICSharpMigrationOperationGenerator @@ -265,33 +225,27 @@ module FSharpMigrationOperationGeneratorTest = builder.AppendLine "open System" |> ignore - builder.AppendLine "open Microsoft.EntityFrameworkCore.Migrations" - |> ignore + builder.AppendLine "open Microsoft.EntityFrameworkCore.Migrations" |> ignore - builder.AppendLine "open NetTopologySuite.Geometries" - |> ignore + builder.AppendLine "open NetTopologySuite.Geometries" |> ignore builder.AppendLine "" |> ignore - builder.AppendLine "module OperationsFactory =" - |> ignore + builder.AppendLine "module OperationsFactory =" |> ignore builder.IncrementIndent() |> ignore builder.AppendLine "" |> ignore - builder.AppendLine "let Create(mb: MigrationBuilder) =" - |> ignore + builder.AppendLine "let Create(mb: MigrationBuilder) =" |> ignore let expected = IndentedStringBuilder() - expected.AppendLines(builder.ToString(), false) - |> ignore + expected.AppendLines(builder.ToString(), false) |> ignore expected.IncrementIndent() |> ignore expected.IncrementIndent() |> ignore - expected.AppendLines(expectedCode, false) - |> ignore + expected.AppendLines(expectedCode, false) |> ignore builder.IncrementIndent() |> ignore @@ -320,9 +274,9 @@ module FSharpMigrationOperationGeneratorTest = (assembly :> System.Reflection.Assembly).GetTypes() |> Seq.find (fun (m: System.Type) -> m.Name = "OperationsFactory") - let createMethod = (factoryType : System.Type).GetMethod("Create") + let createMethod = (factoryType: System.Type).GetMethod("Create") let mb = MigrationBuilder(activeProvider = null) - (createMethod : System.Reflection.MethodInfo).Invoke(null, [| mb |]) |> ignore + (createMethod: System.Reflection.MethodInfo).Invoke(null, [| mb |]) |> ignore let result = mb.Operations.Cast<'a>().Single() ``assert`` result @@ -358,8 +312,7 @@ module FSharpMigrationOperationGeneratorTest = } test "AddColumnOperation required args" { - let op = - AddColumnOperation(Name = "Id", Table = "Post", ClrType = typeof) + let op = AddColumnOperation(Name = "Id", Table = "Post", ClrType = typeof) let expected = seq { @@ -403,8 +356,7 @@ module FSharpMigrationOperationGeneratorTest = } test "CreateTableOperation optional args" { - let op = - CreateTableOperation(Name = "MyTable", Schema = "MySchema") + let op = CreateTableOperation(Name = "MyTable", Schema = "MySchema") op.Columns.Add <| AddColumnOperation(Name = "Id", Table = "MyTable", ClrType = typeof) diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs index c99f11f..770d498 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs @@ -34,11 +34,7 @@ open Microsoft.EntityFrameworkCore.Design.Internal open EntityFrameworkCore.FSharp type TestFSharpSnapshotGenerator - ( - dependencies, - mappingSource: IRelationalTypeMappingSource, - annotationCodeGenerator: IAnnotationCodeGenerator - ) = + (dependencies, mappingSource: IRelationalTypeMappingSource, annotationCodeGenerator: IAnnotationCodeGenerator) = inherit FSharpSnapshotGenerator(dependencies, mappingSource, annotationCodeGenerator) member this.TestGenerateEntityTypeAnnotations builderName entityType = @@ -63,9 +59,7 @@ type private RawEnum = | A = 0 | B = 1 -type MyContext() = - class - end +type MyContext() = class end module FSharpMigrationsGeneratorTest = @@ -103,8 +97,7 @@ module FSharpMigrationsGeneratorTest = "System.Threading.Thread.dll" "System.Threading.ThreadPool.dll" ] - let thisAssembly = - System.Reflection.Assembly.GetExecutingAssembly() + let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() let localNames = [ "FSharp.Core.dll" @@ -122,8 +115,7 @@ module FSharpMigrationsGeneratorTest = let runtimeDir = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() - let runtimeRefs = - runtimeNames |> List.map (fun r -> runtimeDir + r) + let runtimeRefs = runtimeNames |> List.map (fun r -> runtimeDir + r) let localRefs = let location = @@ -143,17 +135,19 @@ module FSharpMigrationsGeneratorTest = try let snapshotType = - (assembly :> System.Reflection.Assembly).GetType(modelSnapshotTypeName, true, false) + (assembly :> System.Reflection.Assembly) + .GetType(modelSnapshotTypeName, true, false) let contextTypeAttribute = - System.Reflection.CustomAttributeExtensions.GetCustomAttribute(snapshotType :> System.Reflection.MemberInfo) + System.Reflection.CustomAttributeExtensions.GetCustomAttribute( + snapshotType :> System.Reflection.MemberInfo + ) Expect.isNotNull contextTypeAttribute "Should not be null" Expect.equal contextTypeAttribute.ContextType.FullName typeof.FullName "Should be equal" Activator.CreateInstance(snapshotType) :?> ModelSnapshot - with - | exn -> + with exn -> let msg = sprintf "Could not build the following code {%s}:\n {%s}" modelSnapshotTypeName modelSnapshotCode @@ -203,18 +197,17 @@ module FSharpMigrationsGeneratorTest = TestFSharpSnapshotGenerator(codeHelper, sqlServerTypeMappingSource, annotationCodeGenerator) let coreAnnotations = - typeof.GetFields () + typeof.GetFields() |> Seq.filter (fun f -> f.FieldType = typeof) |> Seq.toList coreAnnotations - |> List.iter - (fun field -> - let annotationName = field.GetValue(null) |> string + |> List.iter (fun field -> + let annotationName = field.GetValue(null) |> string - Expect.isTrue - (CoreAnnotationNames.AllNames.Contains(annotationName)) - $"CoreAnnotations.AllNames doesn't contain {annotationName}") + Expect.isTrue + (CoreAnnotationNames.AllNames.Contains(annotationName)) + $"CoreAnnotations.AllNames doesn't contain {annotationName}") let rlNames = (typeof).GetFields() @@ -222,55 +215,47 @@ module FSharpMigrationsGeneratorTest = |> Seq.toList let allAnnotations = - (coreAnnotations @ rlNames) - |> Seq.filter (fun f -> f.Name <> "Prefix") + (coreAnnotations @ rlNames) |> Seq.filter (fun f -> f.Name <> "Prefix") allAnnotations - |> Seq.iter - (fun f -> - let annotationName = f.GetValue(null) |> string + |> Seq.iter (fun f -> + let annotationName = f.GetValue(null) |> string - if not (invalidAnnotations.Contains(annotationName)) then - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() + if not (invalidAnnotations.Contains(annotationName)) then + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() - let metadataItem = createMetadataItem modelBuilder + let metadataItem = createMetadataItem modelBuilder - let annotation = - if validAnnotations.ContainsKey(annotationName) then - fst validAnnotations.[annotationName] - else - null + let annotation = + if validAnnotations.ContainsKey(annotationName) then + fst validAnnotations.[annotationName] + else + null - metadataItem.SetAnnotation(annotationName, annotation) + metadataItem.SetAnnotation(annotationName, annotation) - modelBuilder.FinalizeModel(designTime = true, skipValidation = true) - |> ignore + modelBuilder.FinalizeModel(designTime = true, skipValidation = true) |> ignore - try - let actual = test generator metadataItem + try + let actual = test generator metadataItem - let expected = - if validAnnotations.ContainsKey(annotationName) then - snd validAnnotations.[annotationName] - else - generationDefault + let expected = + if validAnnotations.ContainsKey(annotationName) then + snd validAnnotations.[annotationName] + else + generationDefault - Expect.equal - (actual.Trim()) - (expected.Trim()) - $"Should be equal, but failed on {annotationName}" - with - | exn -> - let msg = - sprintf - "Annotation '%s' was not handled by the code generator: {%s}" - annotationName - exn.Message + Expect.equal (actual.Trim()) (expected.Trim()) $"Should be equal, but failed on {annotationName}" + with exn -> + let msg = + sprintf + "Annotation '%s' was not handled by the code generator: {%s}" + annotationName + exn.Message - Expect.isTrue false msg + Expect.isTrue false msg - ) + ) () @@ -289,7 +274,7 @@ module FSharpMigrationsGeneratorTest = type EntityWithEveryPrimitive = { Boolean: bool Byte: byte - ByteArray: byte [] + ByteArray: byte[] Char: char DateTime: DateTime DateTimeOffset: DateTimeOffset @@ -328,6 +313,7 @@ module FSharpMigrationsGeneratorTest = UInt32: uint UInt64: uint64 mutable privateSetter: int } + member this.PrivateSetter with get () = this.privateSetter and private set v = this.privateSetter <- v @@ -436,23 +422,16 @@ module FSharpMigrationsGeneratorTest = |> HashSet let _toTable = - _nl - + @"entityTypeBuilder.ToTable(""WithAnnotations"") |> ignore" - + _nl + _nl + @"entityTypeBuilder.ToTable(""WithAnnotations"") |> ignore" + _nl let forEntityType = [ (RelationalAnnotationNames.TableName, - (box "MyTable", - _nl - + @"entityTypeBuilder.ToTable(""MyTable"") |> ignore")) + (box "MyTable", _nl + @"entityTypeBuilder.ToTable(""MyTable"") |> ignore")) (RelationalAnnotationNames.Schema, (box "MySchema", - _nl - + @"entityTypeBuilder.ToTable(""WithAnnotations"", ""MySchema"") |> ignore")) + _nl + @"entityTypeBuilder.ToTable(""WithAnnotations"", ""MySchema"") |> ignore")) (CoreAnnotationNames.DiscriminatorProperty, - (box "Id", - _toTable - + @"entityTypeBuilder.HasDiscriminator(""Id"") |> ignore")) + (box "Id", _toTable + @"entityTypeBuilder.HasDiscriminator(""Id"") |> ignore")) (CoreAnnotationNames.DiscriminatorValue, (box "MyDiscriminatorValue", _toTable @@ -462,17 +441,11 @@ module FSharpMigrationsGeneratorTest = _toTable + @"entityTypeBuilder.HasAnnotation(""Relational:Comment"", ""My Comment"") |> ignore")) (RelationalAnnotationNames.ViewName, - (box "MyView", - _nl - + @"entityTypeBuilder.ToView(""MyView"") |> ignore")) + (box "MyView", _nl + @"entityTypeBuilder.ToView(""MyView"") |> ignore")) (RelationalAnnotationNames.FunctionName, - (box null, - _nl - + "entityTypeBuilder.ToFunction(null) |> ignore")) + (box null, _nl + "entityTypeBuilder.ToFunction(null) |> ignore")) (RelationalAnnotationNames.SqlQuery, - (box null, - _nl - + "entityTypeBuilder.ToSqlQuery(null) |> ignore")) ] + (box null, _nl + "entityTypeBuilder.ToSqlQuery(null) |> ignore")) ] |> dict missingAnnotationCheck @@ -565,8 +538,7 @@ module FSharpMigrationsGeneratorTest = RelationalAnnotationNames.StoreType ] |> HashSet - let columnMapping = - $"{_nl}.HasColumnType(\"default_int_mapping\")" + let columnMapping = $"{_nl}.HasColumnType(\"default_int_mapping\")" let columnMappingWithDefaultValue = $"{columnMapping}" @@ -580,15 +552,12 @@ module FSharpMigrationsGeneratorTest = (box false, $"{_nl}.IsUnicode(false){columnMappingWithDefaultValue}{_nl}|> ignore")) (CoreAnnotationNames.ValueConverter, (box (ValueConverter((fun v -> v |> int64), (fun v -> v |> int), null)), - _nl - + $".HasColumnType(\"default_long_mapping\"){_nl}|> ignore")) + _nl + $".HasColumnType(\"default_long_mapping\"){_nl}|> ignore")) (CoreAnnotationNames.ProviderClrType, (box typeof, $"{_nl}.HasColumnType(\"default_long_mapping\"){_nl}|> ignore")) (RelationalAnnotationNames.ColumnName, (box "MyColumn", - columnMappingWithDefaultValue - + _nl - + $".HasColumnName(\"MyColumn\") |> ignore")) + columnMappingWithDefaultValue + _nl + $".HasColumnName(\"MyColumn\") |> ignore")) (RelationalAnnotationNames.ColumnType, (box "int", _nl + $".HasColumnType(\"int\"){_nl}|> ignore")) (RelationalAnnotationNames.DefaultValueSql, @@ -602,23 +571,14 @@ module FSharpMigrationsGeneratorTest = + _nl + ".HasComputedColumnSql(\"some SQL\") |> ignore")) (RelationalAnnotationNames.DefaultValue, - (box "1", - columnMapping - + ".HasDefaultValue(\"1\") |> ignore")) + (box "1", columnMapping + ".HasDefaultValue(\"1\") |> ignore")) (RelationalAnnotationNames.DefaultValue, - (box 0, - columnMapping - + $"{_nl}.HasDefaultValue(0){_nl}|> ignore")) + (box 0, columnMapping + $"{_nl}.HasDefaultValue(0){_nl}|> ignore")) (RelationalAnnotationNames.IsFixedLength, - (box true, - columnMappingWithDefaultValue - + _nl - + ".IsFixedLength() |> ignore")) + (box true, columnMappingWithDefaultValue + _nl + ".IsFixedLength() |> ignore")) (RelationalAnnotationNames.Comment, (box "My Comment", - columnMappingWithDefaultValue - + _nl - + ".HasComment(\"My Comment\") |> ignore")) + columnMappingWithDefaultValue + _nl + ".HasComment(\"My Comment\") |> ignore")) (RelationalAnnotationNames.Collation, (box "Some Collation", $"{columnMappingWithDefaultValue}{_nl}.UseCollation(\"Some Collation\") |> ignore")) @@ -628,12 +588,7 @@ module FSharpMigrationsGeneratorTest = |> dict missingAnnotationCheck - (fun b -> - (b - .Entity() - .Property(fun e -> e.Id) - .Metadata - :> IMutableAnnotatable)) + (fun b -> (b.Entity().Property(fun e -> e.Id).Metadata :> IMutableAnnotatable)) notForProperty forProperty (columnMappingWithDefaultValue + $"{_nl}|> ignore") @@ -671,47 +626,36 @@ module FSharpMigrationsGeneratorTest = ) ) - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore - modelBuilder.Entity - (fun eb -> - eb - .HasDiscriminator("EnumDiscriminator") - .HasValue(RawEnum.A) - .HasValue(RawEnum.B) - |> ignore - - eb - .Property("EnumDiscriminator") - .HasConversion() - |> ignore) + modelBuilder.Entity(fun eb -> + eb + .HasDiscriminator("EnumDiscriminator") + .HasValue(RawEnum.A) + .HasValue(RawEnum.B) + |> ignore + + eb.Property("EnumDiscriminator").HasConversion() |> ignore) |> ignore - let model = - modelBuilder.FinalizeModel(designTime = true) + let model = modelBuilder.FinalizeModel(designTime = true) let modelSnapshotCode = generator.GenerateSnapshot("MyNamespace", typeof, "MySnapshot", model) let snapshotModel = - (compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot") - .Model + (compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot").Model Expect.equal - (snapshotModel - .FindEntityType(typeof) - .GetDiscriminatorValue()) + (snapshotModel.FindEntityType(typeof).GetDiscriminatorValue()) ((int RawEnum.A) :> obj) "Should be equal" Expect.equal - (snapshotModel - .FindEntityType(typeof) - .GetDiscriminatorValue()) + (snapshotModel.FindEntityType(typeof).GetDiscriminatorValue()) ((int RawEnum.B) :> obj) "Should be equal" } @@ -735,7 +679,7 @@ module FSharpMigrationsGeneratorTest = ) AddColumnOperation(Name = "C3", Table = "T1", ClrType = typeof) - let insertValues: obj [,] = Array2D.create 2 3 (1 :> obj) + let insertValues: obj[,] = Array2D.create 2 3 (1 :> obj) insertValues.[0, 1] <- null InsertDataOperation(Table = "T1", Columns = [| "Id"; "C2"; "C3" |], Values = insertValues) ], @@ -752,13 +696,11 @@ module FSharpMigrationsGeneratorTest = configureConventions = (fun c -> c.RemoveAllConventions()) ) - (modelBuilder : ModelBuilder).HasAnnotation("Some:EnumValue", RegexOptions.Multiline) + (modelBuilder: ModelBuilder) + .HasAnnotation("Some:EnumValue", RegexOptions.Multiline) |> ignore - modelBuilder.HasAnnotation( - RelationalAnnotationNames.DbFunctions, - Dictionary() - ) + modelBuilder.HasAnnotation(RelationalAnnotationNames.DbFunctions, Dictionary()) |> ignore modelBuilder.Entity( @@ -771,11 +713,9 @@ module FSharpMigrationsGeneratorTest = ) |> ignore - modelBuilder.HasAnnotation(CoreAnnotationNames.ProductVersion, null) - |> ignore + modelBuilder.HasAnnotation(CoreAnnotationNames.ProductVersion, null) |> ignore - let model = - modelBuilder.FinalizeModel(designTime = true) + let model = modelBuilder.FinalizeModel(designTime = true) let migrationMetadataCode = @@ -883,19 +823,18 @@ module FSharpMigrationsGeneratorTest = let assembly = build.BuildInMemory(references) let migrationType = - (assembly :> System.Reflection.Assembly).GetType("MyNamespace.MyMigration", true, false) + (assembly :> System.Reflection.Assembly) + .GetType("MyNamespace.MyMigration", true, false) let attribute = (migrationType :> System.Reflection.MemberInfo).GetCustomAttributes(false) - |> Seq.choose - (fun (t: obj) -> - match t with - | :? DbContextAttribute as a -> Some a - | _ -> None) + |> Seq.choose (fun (t: obj) -> + match t with + | :? DbContextAttribute as a -> Some a + | _ -> None) |> Seq.head - let migration = - Activator.CreateInstance(migrationType) :?> Migration + let migration = Activator.CreateInstance(migrationType) :?> Migration Expect.equal (attribute.ContextType.FullName) @@ -910,20 +849,18 @@ module FSharpMigrationsGeneratorTest = test "Snapshots compile" { let generator = createMigrationsCodeGenerator () - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore - modelBuilder.Entity - (fun x -> - x.Property(fun e -> e.Id) |> ignore + modelBuilder.Entity(fun x -> + x.Property(fun e -> e.Id) |> ignore - x - .Property("PropertyWithValueGenerator") - .HasValueGenerator() - |> ignore) + x + .Property("PropertyWithValueGenerator") + .HasValueGenerator() + |> ignore) |> ignore modelBuilder.HasDbFunction(myDbFunction) |> ignore @@ -933,8 +870,7 @@ module FSharpMigrationsGeneratorTest = let entityType = model.AddEntityType("Cheese") - let property1 = - entityType.AddProperty("Pickle", typeof) + let property1 = entityType.AddProperty("Pickle", typeof) property1.SetValueConverter( ValueConverter( @@ -944,8 +880,7 @@ module FSharpMigrationsGeneratorTest = ) ) - let property2 = - entityType.AddProperty("Ham", typeof) + let property2 = entityType.AddProperty("Ham", typeof) property2.SetValueConverter( ValueConverter( @@ -957,8 +892,7 @@ module FSharpMigrationsGeneratorTest = entityType.SetPrimaryKey(property2) |> ignore - let finalModel = - modelBuilder.FinalizeModel(designTime = true) + let finalModel = modelBuilder.FinalizeModel(designTime = true) let modelSnapshotCode = generator.GenerateSnapshot("MyNamespace", typeof, "MySnapshot", finalModel) @@ -1029,8 +963,7 @@ module FSharpMigrationsGeneratorTest = Expect.equal (modelSnapshotCode.Trim()) (expectedCode.Trim()) "" - let snapshot = - compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" + let snapshot = compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" Expect.equal (snapshot.Model.GetEntityTypes() |> Seq.length) 2 "Expect 2 entity types" } @@ -1038,262 +971,152 @@ module FSharpMigrationsGeneratorTest = test "Snapshot with default values are round tripped" { let generator = createMigrationsCodeGenerator () - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() - - modelBuilder.Entity - (fun eb -> - eb - .Property(fun e -> e.Boolean) - .HasDefaultValue(false) - |> ignore - - eb - .Property(fun e -> e.Byte) - .HasDefaultValue(Byte.MinValue) - |> ignore - - eb - .Property(fun e -> e.ByteArray) - .HasDefaultValue([| 0uy |]) - |> ignore - - eb.Property(fun e -> e.Char).HasDefaultValue('0') - |> ignore - - eb - .Property(fun e -> e.DateTime) - .HasDefaultValue(DateTime.MinValue) - |> ignore - - eb - .Property(fun e -> e.DateTimeOffset) - .HasDefaultValue(DateTimeOffset.MinValue) - |> ignore - - eb - .Property(fun e -> e.Decimal) - .HasDefaultValue(Decimal.MinValue) - |> ignore - - eb - .Property(fun e -> e.Double) - .HasDefaultValue(Double.MinValue) - |> ignore //double.NegativeInfinity - - eb - .Property(fun e -> e.Enum) - .HasDefaultValue(Enum1.Default) - |> ignore - - eb - .Property(fun e -> e.NullableEnum) - .HasDefaultValue(Enum1.Default) - .HasConversion() - |> ignore - - eb - .Property(fun e -> e.Guid) - .HasDefaultValue(Guid.NewGuid()) - |> ignore - - eb - .Property(fun e -> e.Int16) - .HasDefaultValue(Int16.MaxValue) - |> ignore - - eb - .Property(fun e -> e.Int32) - .HasDefaultValue(Int32.MaxValue) - |> ignore - - eb - .Property(fun e -> e.Int64) - .HasDefaultValue(Int64.MaxValue) - |> ignore - - eb - .Property(fun e -> e.Single) - .HasDefaultValue(Single.Epsilon) - |> ignore - - eb - .Property(fun e -> e.SByte) - .HasDefaultValue(SByte.MinValue) - |> ignore - - eb - .Property(fun e -> e.String) - .HasDefaultValue("'\"'@\r\\\n") - |> ignore - - eb - .Property(fun e -> e.TimeSpan) - .HasDefaultValue(TimeSpan.MaxValue) - |> ignore - - eb - .Property(fun e -> e.UInt16) - .HasDefaultValue(UInt16.MinValue) - |> ignore - - eb - .Property(fun e -> e.UInt32) - .HasDefaultValue(UInt32.MinValue) - |> ignore - - eb - .Property(fun e -> e.UInt64) - .HasDefaultValue(UInt64.MinValue) - |> ignore - - eb - .Property(fun e -> e.NullableBoolean) - .HasDefaultValue(true) - |> ignore - - eb - .Property(fun e -> e.NullableByte) - .HasDefaultValue(Byte.MaxValue) - |> ignore - - eb - .Property(fun e -> e.NullableChar) - .HasDefaultValue('\'') - |> ignore - - eb - .Property(fun e -> e.NullableDateTime) - .HasDefaultValue(DateTime.MaxValue) - |> ignore - - eb - .Property(fun e -> e.NullableDateTimeOffset) - .HasDefaultValue(DateTimeOffset.MaxValue) - |> ignore - - eb - .Property(fun e -> e.NullableDecimal) - .HasDefaultValue(Decimal.MaxValue) - |> ignore - - eb - .Property(fun e -> e.NullableDouble) - .HasDefaultValue(0.6822871999174) - |> ignore - - eb - .Property(fun e -> e.NullableEnum) - .HasDefaultValue(Enum1.One ||| Enum1.Two) - |> ignore - - eb - .Property(fun e -> e.NullableStringEnum) - .HasDefaultValue(Enum1.One) - .HasConversion() - |> ignore - - eb - .Property(fun e -> e.NullableGuid) - .HasDefaultValue(Guid()) - |> ignore - - eb - .Property(fun e -> e.NullableInt16) - .HasDefaultValue(Int16.MinValue) - |> ignore - - eb - .Property(fun e -> e.NullableInt32) - .HasDefaultValue(Int32.MinValue) - |> ignore - - eb - .Property(fun e -> e.NullableInt64) - .HasDefaultValue(Int64.MinValue) - |> ignore - - eb - .Property(fun e -> e.NullableSingle) - .HasDefaultValue(0.3333333) - |> ignore - - eb - .Property(fun e -> e.NullableSByte) - .HasDefaultValue(SByte.MinValue) - |> ignore - - eb - .Property(fun e -> e.NullableTimeSpan) - .HasDefaultValue(TimeSpan.MinValue.Add(TimeSpan())) - |> ignore - - eb - .Property(fun e -> e.NullableUInt16) - .HasDefaultValue(UInt16.MaxValue) - |> ignore - - eb - .Property(fun e -> e.NullableUInt32) - .HasDefaultValue(UInt32.MaxValue) - |> ignore - - eb - .Property(fun e -> e.NullableUInt64) - .HasDefaultValue(UInt64.MaxValue) - |> ignore - - eb.HasKey(fun e -> e.Boolean :> obj) |> ignore) + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + + modelBuilder.Entity(fun eb -> + eb.Property(fun e -> e.Boolean).HasDefaultValue(false) |> ignore + + eb.Property(fun e -> e.Byte).HasDefaultValue(Byte.MinValue) |> ignore + + eb.Property(fun e -> e.ByteArray).HasDefaultValue([| 0uy |]) |> ignore + + eb.Property(fun e -> e.Char).HasDefaultValue('0') |> ignore + + eb.Property(fun e -> e.DateTime).HasDefaultValue(DateTime.MinValue) |> ignore + + eb.Property(fun e -> e.DateTimeOffset).HasDefaultValue(DateTimeOffset.MinValue) + |> ignore + + eb.Property(fun e -> e.Decimal).HasDefaultValue(Decimal.MinValue) |> ignore + + eb.Property(fun e -> e.Double).HasDefaultValue(Double.MinValue) |> ignore //double.NegativeInfinity + + eb.Property(fun e -> e.Enum).HasDefaultValue(Enum1.Default) |> ignore + + eb + .Property(fun e -> e.NullableEnum) + .HasDefaultValue(Enum1.Default) + .HasConversion() + |> ignore + + eb.Property(fun e -> e.Guid).HasDefaultValue(Guid.NewGuid()) |> ignore + + eb.Property(fun e -> e.Int16).HasDefaultValue(Int16.MaxValue) |> ignore + + eb.Property(fun e -> e.Int32).HasDefaultValue(Int32.MaxValue) |> ignore + + eb.Property(fun e -> e.Int64).HasDefaultValue(Int64.MaxValue) |> ignore + + eb.Property(fun e -> e.Single).HasDefaultValue(Single.Epsilon) |> ignore + + eb.Property(fun e -> e.SByte).HasDefaultValue(SByte.MinValue) |> ignore + + eb.Property(fun e -> e.String).HasDefaultValue("'\"'@\r\\\n") |> ignore + + eb.Property(fun e -> e.TimeSpan).HasDefaultValue(TimeSpan.MaxValue) |> ignore + + eb.Property(fun e -> e.UInt16).HasDefaultValue(UInt16.MinValue) |> ignore + + eb.Property(fun e -> e.UInt32).HasDefaultValue(UInt32.MinValue) |> ignore + + eb.Property(fun e -> e.UInt64).HasDefaultValue(UInt64.MinValue) |> ignore + + eb.Property(fun e -> e.NullableBoolean).HasDefaultValue(true) |> ignore + + eb.Property(fun e -> e.NullableByte).HasDefaultValue(Byte.MaxValue) |> ignore + + eb.Property(fun e -> e.NullableChar).HasDefaultValue('\'') |> ignore + + eb.Property(fun e -> e.NullableDateTime).HasDefaultValue(DateTime.MaxValue) + |> ignore + + eb + .Property(fun e -> e.NullableDateTimeOffset) + .HasDefaultValue(DateTimeOffset.MaxValue) + |> ignore + + eb.Property(fun e -> e.NullableDecimal).HasDefaultValue(Decimal.MaxValue) + |> ignore + + eb.Property(fun e -> e.NullableDouble).HasDefaultValue(0.6822871999174) + |> ignore + + eb.Property(fun e -> e.NullableEnum).HasDefaultValue(Enum1.One ||| Enum1.Two) + |> ignore + + eb + .Property(fun e -> e.NullableStringEnum) + .HasDefaultValue(Enum1.One) + .HasConversion() + |> ignore + + eb.Property(fun e -> e.NullableGuid).HasDefaultValue(Guid()) |> ignore + + eb.Property(fun e -> e.NullableInt16).HasDefaultValue(Int16.MinValue) |> ignore + + eb.Property(fun e -> e.NullableInt32).HasDefaultValue(Int32.MinValue) |> ignore + + eb.Property(fun e -> e.NullableInt64).HasDefaultValue(Int64.MinValue) |> ignore + + eb.Property(fun e -> e.NullableSingle).HasDefaultValue(0.3333333) |> ignore + + eb.Property(fun e -> e.NullableSByte).HasDefaultValue(SByte.MinValue) |> ignore + + eb + .Property(fun e -> e.NullableTimeSpan) + .HasDefaultValue(TimeSpan.MinValue.Add(TimeSpan())) + |> ignore + + eb.Property(fun e -> e.NullableUInt16).HasDefaultValue(UInt16.MaxValue) + |> ignore + + eb.Property(fun e -> e.NullableUInt32).HasDefaultValue(UInt32.MaxValue) + |> ignore + + eb.Property(fun e -> e.NullableUInt64).HasDefaultValue(UInt64.MaxValue) + |> ignore + + eb.HasKey(fun e -> e.Boolean :> obj) |> ignore) |> ignore - let model = - modelBuilder.FinalizeModel(designTime = true) + let model = modelBuilder.FinalizeModel(designTime = true) let modelSnapshotCode = generator.GenerateSnapshot("MyNamespace", typeof, "MySnapshot", model) - let snapshot = - compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" + let snapshot = compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" - let entityType = - snapshot.Model.GetEntityTypes() |> Seq.head + let entityType = snapshot.Model.GetEntityTypes() |> Seq.head Expect.equal (entityType.DisplayName()) - (typeof.FullName - + " (Dictionary)") + (typeof.FullName + " (Dictionary)") "" - (modelBuilder.Model.GetEntityTypes() |> Seq.head) - .GetProperties() - |> Seq.iter - (fun property -> - let expected = property.GetDefaultValue() - - let defaultValue = - entityType - .FindProperty(property.Name) - .GetDefaultValue() - - let actual = - match expected |> Option.ofObj, defaultValue |> Option.ofObj with - | Some expected, Some actual' when expected.GetType().IsEnum -> - match actual' with - | :? String as a -> Enum.Parse(expected.GetType(), a) - | _ -> Enum.ToObject(expected.GetType(), actual') - | Some expected, Some actual' when actual'.GetType() <> expected.GetType() -> - Convert.ChangeType(actual', expected.GetType()) - | _ -> defaultValue - - if actual |> isNull |> not - && expected |> isNull |> not then - Expect.equal - actual - expected - $"""Comparison failed for {if actual.GetType() = typeof> then - $"Nullable<{(Nullable.GetUnderlyingType(actual.GetType()))}>" - else - property.ClrType.Name}""") + (modelBuilder.Model.GetEntityTypes() |> Seq.head).GetProperties() + |> Seq.iter (fun property -> + let expected = property.GetDefaultValue() + + let defaultValue = entityType.FindProperty(property.Name).GetDefaultValue() + + let actual = + match expected |> Option.ofObj, defaultValue |> Option.ofObj with + | Some expected, Some actual' when expected.GetType().IsEnum -> + match actual' with + | :? String as a -> Enum.Parse(expected.GetType(), a) + | _ -> Enum.ToObject(expected.GetType(), actual') + | Some expected, Some actual' when actual'.GetType() <> expected.GetType() -> + Convert.ChangeType(actual', expected.GetType()) + | _ -> defaultValue + + if actual |> isNull |> not && expected |> isNull |> not then + Expect.equal + actual + expected + $"""Comparison failed for {if actual.GetType() = typeof> then + $"Nullable<{(Nullable.GetUnderlyingType(actual.GetType()))}>" + else + property.ClrType.Name}""") } test "Namespaces imported for insert data" { @@ -1311,8 +1134,7 @@ module FSharpMigrationsGeneratorTest = [] ) - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() let model = modelBuilder.Model.FinalizeModel() @@ -1345,8 +1167,7 @@ module FSharpMigrationsGeneratorTest = [] ) - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() let model = modelBuilder.Model.FinalizeModel() @@ -1379,8 +1200,7 @@ module FSharpMigrationsGeneratorTest = [] ) - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() let model = modelBuilder.Model.FinalizeModel() @@ -1411,8 +1231,7 @@ module FSharpMigrationsGeneratorTest = [] ) - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() let model = modelBuilder.Model.FinalizeModel() diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs index 0b9352f..6f24657 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs @@ -71,16 +71,14 @@ module FSharpMigrationsScaffolderTest = let migrationAssembly = MigrationsAssembly( currentContext, - DbContextOptions<'context>() - .WithExtension(FakeRelationalOptionsExtension()), + DbContextOptions<'context>().WithExtension(FakeRelationalOptionsExtension()), idGenerator, FakeDiagnosticsLogger() ) let historyRepository = MockHistoryRepository() - let services = - RelationalTestHelpers.Instance.CreateContextServices() + let services = RelationalTestHelpers.Instance.CreateContextServices() let model = Model().FinalizeModel() @@ -155,11 +153,9 @@ module FSharpMigrationsScaffolderTest = [ test "ScaffoldMigration reuses model snapshot" { - let scaffolder = - createMigrationScaffolder () + let scaffolder = createMigrationScaffolder () - let migration = - scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") + let migration = scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") Expect.equal (nameof ContextWithSnapshotModelSnapshot) migration.SnapshotName "Should be equal" @@ -178,8 +174,7 @@ module FSharpMigrationsScaffolderTest = // } test "ScaffoldMigration can override namespace" { - let scaffolder = - createMigrationScaffolder () + let scaffolder = createMigrationScaffolder () let migration = scaffolder.ScaffoldMigration("EmptyMigration", null, "OverrideNamespace.OverrideSubNamespace") @@ -203,19 +198,15 @@ module FSharpMigrationsScaffolderTest = } test "ScaffoldMigration save works as expected" { - let projectDir = - Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) + let projectDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) Directory.CreateDirectory(projectDir) |> ignore - let scaffolder = - createMigrationScaffolder () + let scaffolder = createMigrationScaffolder () - let migration = - scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") + let migration = scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") - let saveResult = - scaffolder.Save(projectDir, migration, null, false) + let saveResult = scaffolder.Save(projectDir, migration, null, false) Expect.isTrue (File.Exists saveResult.MigrationFile) "MigrationFile should exist" Expect.isTrue (File.Exists saveResult.MetadataFile) "MetadataFile should exist" diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs index 2fb73ab..12e14c5 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs @@ -137,8 +137,7 @@ let TestFluentApiCall (modelBuilder: ModelBuilder) = let _testFluentApiCallMethodInfo = - let a = - Reflection.Assembly.GetExecutingAssembly() + let a = Reflection.Assembly.GetExecutingAssembly() let modu = a.GetType("EntityFrameworkCore.FSharp.Test.Scaffolding.Internal.FSharpDbContextGeneratorTest") @@ -157,8 +156,7 @@ type TestModelAnnotationProvider(dependencies) = yield! baseResult if database.["Test:TestModelAnnotation"] :? string then - let annotationValue = - database.["Test:TestModelAnnotation"] :?> string + let annotationValue = database.["Test:TestModelAnnotation"] :?> string yield (Annotation("Test:TestModelAnnotation", annotationValue)) :> IAnnotation } @@ -210,63 +208,63 @@ let FSharpDbContextGeneratorTest = testBase.Test buildModel options assertScaffold assertModel [] } - // test "Views work" { + // test "Views work" { - // let buildModel (m: ModelBuilder) = m.Entity("Vista").ToView("Vista") + // let buildModel (m: ModelBuilder) = m.Entity("Vista").ToView("Vista") - // let options = - // ModelCodeGenerationOptions(UseDataAnnotations = true) + // let options = + // ModelCodeGenerationOptions(UseDataAnnotations = true) - // let assertScaffold (code: ScaffoldedModel) = - // Expect.stringContains code.ContextFile.Code "entity.ToView(\"Vista\")" "Should contain view" + // let assertScaffold (code: ScaffoldedModel) = + // Expect.stringContains code.ContextFile.Code "entity.ToView(\"Vista\")" "Should contain view" - // let assertModel (model: IModel) = - // let entityType = - // model.FindEntityType("TestNamespace.Vista") + // let assertModel (model: IModel) = + // let entityType = + // model.FindEntityType("TestNamespace.Vista") - // Expect.isNotNull - // (entityType.FindAnnotation(RelationalAnnotationNames.ViewDefinitionSql)) - // "Should not be null" + // Expect.isNotNull + // (entityType.FindAnnotation(RelationalAnnotationNames.ViewDefinitionSql)) + // "Should not be null" - // Expect.equal (entityType.GetViewName()) "Vista" "Should be equal" - // Expect.isNull (entityType.GetViewSchema()) "Should be null" - // Expect.isNull (entityType.GetTableName()) "Should be null" - // Expect.isNull (entityType.GetSchema()) "Should be null" + // Expect.equal (entityType.GetViewName()) "Vista" "Should be equal" + // Expect.isNull (entityType.GetViewSchema()) "Should be null" + // Expect.isNull (entityType.GetTableName()) "Should be null" + // Expect.isNull (entityType.GetSchema()) "Should be null" - // let additionalSources = [ vistaSource ] + // let additionalSources = [ vistaSource ] - // testBase.Test buildModel options assertScaffold assertModel additionalSources + // testBase.Test buildModel options assertScaffold assertModel additionalSources - // } + // } - // test "Temporal Tables work" { + // test "Temporal Tables work" { - // let buildModel (m: ModelBuilder) = - // m.Entity( - // "Customer", - // fun e -> - // e.Property("Id") |> ignore - // e.Property("Name") |> ignore - // e.HasKey("Id") |> ignore + // let buildModel (m: ModelBuilder) = + // m.Entity( + // "Customer", + // fun e -> + // e.Property("Id") |> ignore + // e.Property("Name") |> ignore + // e.HasKey("Id") |> ignore - // e.ToTable(fun tb -> tb.IsTemporal() |> ignore) - // |> ignore - // ) + // e.ToTable(fun tb -> tb.IsTemporal() |> ignore) + // |> ignore + // ) - // let options = - // ModelCodeGenerationOptions(UseDataAnnotations = false) + // let options = + // ModelCodeGenerationOptions(UseDataAnnotations = false) - // let assertScaffold (code: ScaffoldedModel) = - // Expect.equal - // (normaliseLineEndings code.ContextFile.Code) - // (normaliseLineEndings temporalDbContext) - // "Should be equal" + // let assertScaffold (code: ScaffoldedModel) = + // Expect.equal + // (normaliseLineEndings code.ContextFile.Code) + // (normaliseLineEndings temporalDbContext) + // "Should be equal" - // let assertModel (model: IModel) = () + // let assertModel (model: IModel) = () - // let additionalSources = [ customerSource ] + // let additionalSources = [ customerSource ] - // testBase.Test buildModel options assertScaffold assertModel additionalSources + // testBase.Test buildModel options assertScaffold assertModel additionalSources - // } - ] + // } + ] diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs index 205fe5f..2ae87a3 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs @@ -19,8 +19,7 @@ let join separator (lines: string seq) = System.String.Join(separator, lines) let createGenerator options = let testAssembly = - (typeof) - .Assembly + (typeof).Assembly let reporter = TestOperationReporter() @@ -30,8 +29,7 @@ let createGenerator options = .AddSingleton() .AddSingleton() - let designTimeServices = - EFCoreFSharpServices.WithScaffoldOptions options + let designTimeServices = EFCoreFSharpServices.WithScaffoldOptions options designTimeServices.ConfigureDesignTimeServices(services) @@ -40,26 +38,15 @@ let createGenerator options = .GetRequiredService() let getModelBuilder () = - let modelBuilder = - RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() - modelBuilder - .Entity("BlogPost") - .Property("Id") - |> ignore + modelBuilder.Entity("BlogPost").Property("Id") |> ignore - modelBuilder - .Entity("BlogPost") - .Property("Title") - |> ignore + modelBuilder.Entity("BlogPost").Property("Title") |> ignore - modelBuilder.Entity("Comment").Property("Id") - |> ignore + modelBuilder.Entity("Comment").Property("Id") |> ignore - modelBuilder - .Entity("Comment") - .Property("BlogPostId") - |> ignore + modelBuilder.Entity("Comment").Property("BlogPostId") |> ignore modelBuilder .Entity("Comment") @@ -101,8 +88,7 @@ let FSharpModelGeneratorTests = } test "Write code works" { - let generator = - createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions false @@ -110,8 +96,7 @@ let FSharpModelGeneratorTests = let result = generator.GenerateModel((modelBuilder.FinalizeModel(designTime = true)), modelBuilderOptions) - let expectedContextFilePath = - Path.Combine("..", "TestContextDir", "TestContext.fs") + let expectedContextFilePath = Path.Combine("..", "TestContextDir", "TestContext.fs") Expect.equal result.ContextFile.Path expectedContextFilePath "Should be equal" Expect.isNotEmpty result.ContextFile.Code "Should not be empty" @@ -122,8 +107,7 @@ let FSharpModelGeneratorTests = } test "Record types created correctly" { - let generator = - createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions false @@ -162,8 +146,7 @@ let FSharpModelGeneratorTests = } test "Record types created correctly with annotations" { - let generator = - createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions true @@ -209,8 +192,7 @@ let FSharpModelGeneratorTests = } test "Class types created correctly" { - let generator = - createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions false @@ -270,8 +252,7 @@ let FSharpModelGeneratorTests = } test "Class types created correctly with annotations" { - let generator = - createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions true diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs index 042b1cc..887d9cc 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs @@ -19,8 +19,7 @@ open Microsoft.EntityFrameworkCore.Design.Internal type ModelCodeGeneratorTestBase() = let createServices () = - let testAssembly = - (typeof).Assembly + let testAssembly = (typeof).Assembly let reporter = TestOperationReporter() @@ -74,12 +73,10 @@ type ModelCodeGeneratorTestBase() = let runtimeDir = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() - let runtimeRefs = - runtimeNames |> List.map (fun r -> runtimeDir + r) + let runtimeRefs = runtimeNames |> List.map (fun r -> runtimeDir + r) let localRefs = - let thisAssembly = - System.Reflection.Assembly.GetExecutingAssembly() + let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() let location = thisAssembly.Location.Replace(thisAssembly.GetName().Name + ".dll", "") @@ -106,19 +103,20 @@ type ModelCodeGeneratorTestBase() = let modelBuilder = SqlServerTestHelpers.Instance.CreateConventionBuilder( - addServices = fun services -> - efCoreFSharpServices.ConfigureDesignTimeServices services - addModelServices services - services + addServices = + fun services -> + efCoreFSharpServices.ConfigureDesignTimeServices services + addModelServices services + services ) - (modelBuilder : ModelBuilder).Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) + (modelBuilder: ModelBuilder) + .Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore let _ = buildModel (modelBuilder) - let model = - modelBuilder.FinalizeModel() + let model = modelBuilder.FinalizeModel() let services = createServices () efCoreFSharpServices.ConfigureDesignTimeServices services @@ -143,9 +141,7 @@ type ModelCodeGeneratorTestBase() = let sources = scaffoldedModel.ContextFile.Code - :: (scaffoldedModel.AdditionalFiles - |> Seq.map (fun f -> f.Code) - |> Seq.toList) + :: (scaffoldedModel.AdditionalFiles |> Seq.map (fun f -> f.Code) |> Seq.toList) @ additionalSources |> List.rev @@ -156,6 +152,8 @@ type ModelCodeGeneratorTestBase() = let assembly = build.BuildInMemory references let context = - (assembly : System.Reflection.Assembly).CreateInstance("TestNamespace.TestDbContext") :?> DbContext + (assembly: System.Reflection.Assembly) + .CreateInstance("TestNamespace.TestDbContext") + :?> DbContext assertModel context.Model diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs index 22a2ab9..f6142c2 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs @@ -13,6 +13,7 @@ type BuildReference = { CopyLocal: bool References: MetadataReference seq Path: string } + static member ByName name copyLocal path = let references = DependencyContext.Default.CompileLibraries @@ -57,13 +58,12 @@ type BuildSource = Sources: string list } static let checker = FSharpChecker.Create() - static let compilerLock = obj() + static let compilerLock = obj () member this.BuildInMemory(references: string array) = let projectName = "TestProject" - let source = - String.Join(Environment.NewLine, this.Sources) + let source = String.Join(Environment.NewLine, this.Sources) let tmpDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) Directory.CreateDirectory(tmpDir) |> ignore @@ -83,15 +83,10 @@ type BuildSource = yield sourceFile |] let errors, exitCode = - lock compilerLock (fun () -> - checker.Compile(args) - |> Async.RunSynchronously - ) + lock compilerLock (fun () -> checker.Compile(args) |> Async.RunSynchronously) if exitCode <> 0 then - let messages = - errors - |> Seq.map (fun e -> e.Message + Environment.NewLine) + let messages = errors |> Seq.map (fun e -> e.Message + Environment.NewLine) invalidOp (String.Join(Environment.NewLine, messages)) @@ -99,6 +94,9 @@ type BuildSource = let assembly = Assembly.Load(assemblyBytes) // Clean up temp files - try Directory.Delete(tmpDir, true) with _ -> () + try + Directory.Delete(tmpDir, true) + with _ -> + () assembly diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs index 0db66d2..da6bf5e 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs @@ -185,7 +185,7 @@ type FakeDbCommand(?connection: FakeDbConnection, ?commandExecutor: FakeCommandE base.Dispose disposing -and FakeDbDataReader(?columnNames: string [], ?results: ResizeArray) = +and FakeDbDataReader(?columnNames: string[], ?results: ResizeArray) = inherit DbDataReader() let _columnNames = @@ -196,9 +196,9 @@ and FakeDbDataReader(?columnNames: string [], ?results: ResizeArray) = let _results = match results with | Some e -> e - | None -> ResizeArray() + | None -> ResizeArray() - let mutable _currentRow: obj [] = null + let mutable _currentRow: obj[] = null let mutable _rowIndex: int = 0 let mutable _readAsyncCount: int = 0 @@ -406,11 +406,7 @@ and [] FakeDbTransaction(connection: FakeDbConnection, ?isolat base.Dispose(disposing) and [] FakeDbConnection - ( - connectionString: string, - ?commandExecutor: FakeCommandExecutor, - ?state: ConnectionState - ) as this = + (connectionString: string, ?commandExecutor: FakeCommandExecutor, ?state: ConnectionState) as this = inherit DbConnection() let mutable connectionState: ConnectionState = @@ -498,8 +494,7 @@ and FakeRelationalConnection(options) = member this.DbConnections: IReadOnlyList = _dbConnections :> _ override this.CreateDbConnection() = - let connection = - new FakeDbConnection(base.ConnectionString) + let connection = new FakeDbConnection(base.ConnectionString) _dbConnections.Add(connection) connection :> _ @@ -568,8 +563,7 @@ and [] FakeRelationalOptionsExtension = serviceCollection - override this.Info = - System.NotImplementedException() |> raise + override this.Info = System.NotImplementedException() |> raise override this.Clone() = diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs b/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs index cc5d424..b9de144 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs @@ -37,11 +37,14 @@ type MockHistoryRepository() = member __.CreateAsync(cancellationToken: CancellationToken) = Task.CompletedTask - member __.get_LockReleaseBehavior() = Unchecked.defaultof + member __.get_LockReleaseBehavior() = + Unchecked.defaultof - member __.AcquireDatabaseLock() = Unchecked.defaultof + member __.AcquireDatabaseLock() = + Unchecked.defaultof - member __.AcquireDatabaseLockAsync(cancellationToken: CancellationToken) = Task.FromResult(Unchecked.defaultof) + member __.AcquireDatabaseLockAsync(cancellationToken: CancellationToken) = + Task.FromResult(Unchecked.defaultof) type MockProvider() = interface IDatabaseProvider with diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs b/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs index b0c44d3..80516e8 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs @@ -19,17 +19,13 @@ type RelationalTestHelpers private () = override this.UseProviderOptions optionsBuilder = - let e = - optionsBuilder.Options.FindExtension() + let e = optionsBuilder.Options.FindExtension() - let extension = - if isNull e then - FakeRelationalOptionsExtension() - else - e + let extension = if isNull e then FakeRelationalOptionsExtension() else e let fakeConn = new FakeDbConnection("Database=Fake") (optionsBuilder :> IDbContextOptionsBuilderInfrastructure) .AddOrUpdateExtension(extension.WithConnection(fakeConn)) + optionsBuilder diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestModificationCommandBatchFactory.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestModificationCommandBatchFactory.fs index 64f6858..ed2805f 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestModificationCommandBatchFactory.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestModificationCommandBatchFactory.fs @@ -3,12 +3,7 @@ open Microsoft.EntityFrameworkCore.Update type TestModificationCommandBatchFactory - ( - commandBuilderFactory, - sqlGenerationHelper, - updateSqlGenerator, - valueBufferFactoryFactory - ) = + (commandBuilderFactory, sqlGenerationHelper, updateSqlGenerator, valueBufferFactoryFactory) = let mutable createCount = 0 member this.CreateCount = createCount diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestProviderCodeGenerator.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestProviderCodeGenerator.fs index 11a0d16..f870031 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestProviderCodeGenerator.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestProviderCodeGenerator.fs @@ -9,9 +9,8 @@ open Microsoft.EntityFrameworkCore type TestProviderCodeGenerator(dependencies) = inherit ProviderCodeGenerator(dependencies) - let getRequiredRuntimeMethod (t: Type, name: string, parameters: Type []) = - let result = - t.GetTypeInfo().GetRuntimeMethod(name, parameters) + let getRequiredRuntimeMethod (t: Type, name: string, parameters: Type[]) = + let result = t.GetTypeInfo().GetRuntimeMethod(name, parameters) if isNull result then invalidOp $"Could not find method '{name}' on type '{t}'" @@ -22,18 +21,13 @@ type TestProviderCodeGenerator(dependencies) = let t = typeof let parameters = - [| typeof - typeof - typeof> |] + [| typeof; typeof; typeof> |] getRequiredRuntimeMethod (t, "UseTestProvider", parameters) static member UseTestProvider - ( - optionsBuilder: DbContextOptionsBuilder, - connectionString: string, - optionsAction: Action - ) = + (optionsBuilder: DbContextOptionsBuilder, connectionString: string, optionsAction: Action) + = raise (NotSupportedException()) override this.GenerateUseProvider(connectionString, providerOptions) = diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs index 52e7ed4..8ca7b42 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs @@ -11,7 +11,7 @@ open Microsoft.EntityFrameworkCore.Storage type internal IntArrayTypeMapping = inherit RelationalTypeMapping - new() = { inherit RelationalTypeMapping("some_int_array_mapping", (typeof)) } + new() = { inherit RelationalTypeMapping("some_int_array_mapping", (typeof)) } new(parameters) = { inherit RelationalTypeMapping(parameters) } @@ -50,11 +50,9 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = let _defaultBoolMapping = BoolTypeMapping("default_bool_mapping") :> RelationalTypeMapping - let _someIntMapping = - IntTypeMapping("some_int_mapping") :> RelationalTypeMapping + let _someIntMapping = IntTypeMapping("some_int_mapping") :> RelationalTypeMapping - let _intArray = - IntArrayTypeMapping() :> RelationalTypeMapping + let _intArray = IntArrayTypeMapping() :> RelationalTypeMapping let _defaultDecimalMapping = DecimalTypeMapping("default_decimal_mapping") :> RelationalTypeMapping @@ -93,7 +91,7 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = (typeof, _defaultDecimalMapping) (typeof, _defaultTimeSpanMapping) (typeof, _string) - (typeof, _intArray) ] + (typeof, _intArray) ] |> dict :?> IReadOnlyDictionary @@ -115,12 +113,10 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = match clrType with | t when t = typeof -> - let isAnsi = - mappingInfo.IsUnicode.GetValueOrDefault() + let isAnsi = mappingInfo.IsUnicode.GetValueOrDefault() let isFixedLength = - mappingInfo.IsFixedLength.HasValue - && mappingInfo.IsFixedLength.Value + mappingInfo.IsFixedLength.HasValue && mappingInfo.IsFixedLength.Value let baseName = match isAnsi, isFixedLength with @@ -140,11 +136,7 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = let name = if isStoreTypeNameNull then - let sizeStr = - if size.HasValue then - string size.Value - else - "max" + let sizeStr = if size.HasValue then string size.Value else "max" sprintf "%s(%s)" baseName sizeStr else @@ -158,25 +150,18 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = TestStringTypeMapping(name, dbType, (not isAnsi), size, isFixedLength) :> RelationalTypeMapping - | t when t = typeof -> + | t when t = typeof -> if mappingInfo.IsRowVersion.GetValueOrDefault() then _rowversion else let size = - if mappingInfo.Size.HasValue then - mappingInfo.Size - else if mappingInfo.IsKeyOrIndex then - Nullable(900) - else - Nullable() + if mappingInfo.Size.HasValue then mappingInfo.Size + else if mappingInfo.IsKeyOrIndex then Nullable(900) + else Nullable() let name = if isNull storeTypeName then - let sizeStr = - if size.HasValue then - string size.Value - else - "max" + let sizeStr = if size.HasValue then string size.Value else "max" sprintf "just_binary(%s)" sizeStr else @@ -200,13 +185,13 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = mapping | _ -> - let successFromName, mappingFromName = - _simpleNameMappings.TryGetValue storeTypeName + let successFromName, mappingFromName = _simpleNameMappings.TryGetValue storeTypeName - if (not isStoreTypeNameNull) - && (clrType = null - || mappingFromName.ClrType = clrType) - && successFromName then + if + (not isStoreTypeNameNull) + && (clrType = null || mappingFromName.ClrType = clrType) + && successFromName + then mappingFromName else null diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs index 6a0421f..40ee457 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs @@ -12,15 +12,13 @@ open Microsoft.EntityFrameworkCore.Metadata type Implementation = { Type: Type; Implementation: obj } type ImplementationType = - { Type: Type - ImplementationType: Type } + { Type: Type; ImplementationType: Type } module TestServiceFactory = open Microsoft.Extensions.DependencyInjection open System.Collections.Generic - let private factories = - ConcurrentDictionary() + let private factories = ConcurrentDictionary() let private wellKnownExceptions = [ { Type = typeof @@ -30,12 +28,13 @@ module TestServiceFactory = let private tryGetEnumerableType (t: Type) = - let typeInfo = - System.Reflection.IntrospectionExtensions.GetTypeInfo t + let typeInfo = System.Reflection.IntrospectionExtensions.GetTypeInfo t - if not (typeInfo.IsGenericTypeDefinition) - && typeInfo.IsGenericType - && t.GetGenericTypeDefinition() = typeof> then + if + not (typeInfo.IsGenericTypeDefinition) + && typeInfo.IsGenericType + && t.GetGenericTypeDefinition() = typeof> + then typeInfo.GenericTypeArguments.[0] |> Some else None @@ -86,55 +85,44 @@ module TestServiceFactory = |> Seq.tryHead match implementation with - | Some i -> - serviceCollection.AddSingleton(serviceType, i) - |> ignore + | Some i -> serviceCollection.AddSingleton(serviceType, i) |> ignore | None -> let types = getImplementationTypes serviceType types - |> Seq.iter - (fun t -> - let implementation = - specialCases - |> Seq.filter (fun s -> s.Type = serviceType) - |> Seq.map (fun s -> s.Implementation) + |> Seq.iter (fun t -> + let implementation = + specialCases + |> Seq.filter (fun s -> s.Type = serviceType) + |> Seq.map (fun s -> s.Implementation) + |> Seq.tryHead + + match implementation with + | Some i -> serviceCollection.AddSingleton(serviceType, i) |> ignore + | None -> + serviceCollection.AddSingleton(t.Type, t.ImplementationType) |> ignore + + let constructors = t.ImplementationType.GetConstructors() + + let maxParamLength = + constructors |> Seq.map (fun c -> c.GetParameters().Length) |> Seq.max + + let constructor = + constructors + |> Seq.filter (fun c -> (c.GetParameters().Length) = maxParamLength) |> Seq.tryHead - match implementation with - | Some i -> - serviceCollection.AddSingleton(serviceType, i) - |> ignore + match constructor with | None -> - serviceCollection.AddSingleton(t.Type, t.ImplementationType) - |> ignore - - let constructors = t.ImplementationType.GetConstructors() - - let maxParamLength = - constructors - |> Seq.map (fun c -> c.GetParameters().Length) - |> Seq.max - - let constructor = - constructors - |> Seq.filter (fun c -> (c.GetParameters().Length) = maxParamLength) - |> Seq.tryHead - - match constructor with - | None -> - let msg = - sprintf - "Cannot use 'TestServiceFactory' for '%s': no public constructor." - (t.ImplementationType.Name) - - invalidOp msg - | Some c -> - c.GetParameters() - |> Seq.iter - (fun p -> - addType serviceCollection p.ParameterType specialCases - |> ignore)) + let msg = + sprintf + "Cannot use 'TestServiceFactory' for '%s': no public constructor." + (t.ImplementationType.Name) + + invalidOp msg + | Some c -> + c.GetParameters() + |> Seq.iter (fun p -> addType serviceCollection p.ParameterType specialCases |> ignore)) serviceCollection @@ -147,6 +135,4 @@ module TestServiceFactory = |> ServiceCollectionContainerBuilderExtensions.BuildServiceProvider :> IServiceProvider - factories - .GetOrAdd(typeof<'a>, (fun t -> serviceprovider)) - .GetService<'a>() + factories.GetOrAdd(typeof<'a>, (fun t -> serviceprovider)).GetService<'a>() diff --git a/tests/EFCore.FSharp.Tests/Translations/IsNullTranslationTests.fs b/tests/EFCore.FSharp.Tests/Translations/IsNullTranslationTests.fs index 183ff8a..d844f77 100644 --- a/tests/EFCore.FSharp.Tests/Translations/IsNullTranslationTests.fs +++ b/tests/EFCore.FSharp.Tests/Translations/IsNullTranslationTests.fs @@ -50,8 +50,7 @@ let blogWithoutContent = Content = null } let saveBlogs ctx = - [ blogWithContent; blogWithoutContent ] - |> List.iter (addEntity ctx) + [ blogWithContent; blogWithoutContent ] |> List.iter (addEntity ctx) saveChanges ctx @@ -133,11 +132,7 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = - ctx - .Blogs - .Where(fun x -> not (isNull x.Content)) - .FirstOrDefault() + let blog = ctx.Blogs.Where(fun x -> not (isNull x.Content)).FirstOrDefault() Expect.equal blog blogWithContent "Record in context should match" } @@ -147,11 +142,7 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = - ctx - .Blogs - .Where(fun x -> isNull x.Content) - .FirstOrDefault() + let blog = ctx.Blogs.Where(fun x -> isNull x.Content).FirstOrDefault() Expect.equal blog blogWithoutContent "Record in context should match" } @@ -160,11 +151,7 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = - ctx - .Blogs - .Where(fun x -> x.Content = "Some text") - .FirstOrDefault() + let blog = ctx.Blogs.Where(fun x -> x.Content = "Some text").FirstOrDefault() Expect.equal blog blogWithContent "Record in context should match" } ] diff --git a/tests/EFCore.FSharp.Tests/Translations/OptionTranslationTests.fs b/tests/EFCore.FSharp.Tests/Translations/OptionTranslationTests.fs index 1be10b9..7249834 100644 --- a/tests/EFCore.FSharp.Tests/Translations/OptionTranslationTests.fs +++ b/tests/EFCore.FSharp.Tests/Translations/OptionTranslationTests.fs @@ -49,8 +49,7 @@ let blogWithoutContent = Content = None } let saveBlogs ctx = - [ blogWithContent; blogWithoutContent ] - |> List.iter (addEntity ctx) + [ blogWithContent; blogWithoutContent ] |> List.iter (addEntity ctx) saveChanges ctx @@ -117,11 +116,7 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = - ctx - .Blogs - .Where(fun x -> x.Content.IsSome) - .FirstOrDefault() + let blog = ctx.Blogs.Where(fun x -> x.Content.IsSome).FirstOrDefault() Expect.equal blog blogWithContent "Record in context should match" } @@ -131,11 +126,7 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = - ctx - .Blogs - .Where(fun x -> x.Content.IsNone) - .FirstOrDefault() + let blog = ctx.Blogs.Where(fun x -> x.Content.IsNone).FirstOrDefault() Expect.equal blog blogWithoutContent "Record in context should match" } @@ -144,11 +135,7 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = - ctx - .Blogs - .Where(fun x -> x.Content.Value = "Some text") - .FirstOrDefault() + let blog = ctx.Blogs.Where(fun x -> x.Content.Value = "Some text").FirstOrDefault() Expect.equal blog blogWithContent "Record in context should match" } ] diff --git a/tests/EFCore.FSharp.Tests/Translations/SingleCaseUnionTranslationTests.fs b/tests/EFCore.FSharp.Tests/Translations/SingleCaseUnionTranslationTests.fs index c9f7180..7d448ff 100644 --- a/tests/EFCore.FSharp.Tests/Translations/SingleCaseUnionTranslationTests.fs +++ b/tests/EFCore.FSharp.Tests/Translations/SingleCaseUnionTranslationTests.fs @@ -96,11 +96,7 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = - ctx - .Blogs - .Where(fun b -> b.Votes = PositiveInteger 10) - .FirstOrDefault() + let blog = ctx.Blogs.Where(fun b -> b.Votes = PositiveInteger 10).FirstOrDefault() Expect.equal blog blogWithVotes "Record in context should match" } ] diff --git a/tests/EFCore.FSharp.Tests/Utilities/StringBufferTests.fs b/tests/EFCore.FSharp.Tests/Utilities/StringBufferTests.fs index d213794..3994687 100644 --- a/tests/EFCore.FSharp.Tests/Utilities/StringBufferTests.fs +++ b/tests/EFCore.FSharp.Tests/Utilities/StringBufferTests.fs @@ -10,21 +10,21 @@ let StringBufferTests = "StringBuffer tests" [ test "Indent works correctly" { - let expected = - (seq { - "let square x =" - " x * x" - "" - } - |> join System.Environment.NewLine) - - let actual = - stringBuilder { - "let square x =" - indent { "x * x" } - } - - Expect.equal actual expected "Should match" + let expected = + (seq { + "let square x =" + " x * x" + "" + } + |> join System.Environment.NewLine) + + let actual = + stringBuilder { + "let square x =" + indent { "x * x" } + } + + Expect.equal actual expected "Should match" } test "Nested indents work correctly" { diff --git a/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs b/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs index de989d2..29d6a23 100644 --- a/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs +++ b/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs @@ -11,11 +11,11 @@ let ValueConvertersTest = testList "ValueConvertersTest" [ test "string -> string option" { - let c = Conversion.toOption - Expect.equal (c.Compile().Invoke(null)) None "Should be equal" + let c = Conversion.toOption + Expect.equal (c.Compile().Invoke(null)) None "Should be equal" - let g = "test" - Expect.equal (c.Compile().Invoke(g)) (Some g) "Should be equal" + let g = "test" + Expect.equal (c.Compile().Invoke(g)) (Some g) "Should be equal" } test "string option -> string" { @@ -49,8 +49,7 @@ let ValueConvertersTest = } test "string -> string SingleCaseUnion" { - let c = - Conversion.toSingleCaseUnion + let c = Conversion.toSingleCaseUnion let g = "test" Expect.equal (c.Compile().Invoke(g)) (SingleCaseUnion g) "Should be equal" @@ -58,16 +57,14 @@ let ValueConvertersTest = test "string SingleCaseUnion -> string" { - let c = - Conversion.fromFromSingleCase + let c = Conversion.fromFromSingleCase let g = "test" Expect.equal (c.Compile().Invoke(SingleCaseUnion g)) g "Should be equal" } test "Can create SingleCaseUnionConverter" { - let oc = - SingleCaseUnionConverter() + let oc = SingleCaseUnionConverter() Expect.isNotNull (box oc) "Should not be null" } ] From 88fb7b259b5db52ad3223bbd72a2c87d8ba387ca Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 11:05:37 +0700 Subject: [PATCH 10/19] Pin fantomas settings in .editorconfig and fix .NET SDK download URL - Add explicit fantomas formatting settings to .editorconfig to prevent mass reformatting on future fantomas upgrades - Update .NET SDK download link to https://dotnet.microsoft.com/en-us/download --- .editorconfig | 10 ++++++++++ README.md | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index 304fc05..6b67808 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,6 +17,16 @@ end_of_line = lf charset = utf-8 trim_trailing_whitespace = true +# Fantomas settings (pinned to fantomas 6 defaults to prevent future mass reformatting) +[*.{fs,fsi,fsx}] +max_line_length = 120 +fsharp_max_if_then_else_short_width = 60 +fsharp_max_infix_operator_expression = 80 +fsharp_max_record_width = 40 +fsharp_max_array_or_list_width = 80 +fsharp_max_value_binding_width = 80 +fsharp_max_function_binding_width = 40 + [paket.*] trim_trailing_whitespace = true indent_size = 2 diff --git a/README.md b/README.md index d83c6af..0dced13 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ This can then be referenced as usual. Make sure the following **requirements** are installed on your system: -- [dotnet SDK](https://www.microsoft.com/net/download/core) 10.0 or higher +- [dotnet SDK](https://dotnet.microsoft.com/en-us/download) 10.0 or higher or From 64d60b63466c027d6ef531a260045dd2b6c6b5ed Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 11:09:22 +0700 Subject: [PATCH 11/19] Update devcontainer and VS Code configs for .NET 10 - Dockerfile: debian buster -> bookworm, update lib dependencies - install-dotnets.sh: remove hardcoded .NET 5.0, rely on global.json - devcontainer.json: extensions -> customizations.vscode.extensions - Remove deprecated FSharp.fsacRuntime setting from VS Code configs --- .devcontainer/Dockerfile | 14 +++++++------- .devcontainer/devcontainer.json | 20 ++++++++++++-------- .devcontainer/install-dotnets.sh | 13 +------------ .devcontainer/settings.vscode.json | 3 +-- .vscode/settings.json | 1 - 5 files changed, 21 insertions(+), 30 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 7d75080..8345f2c 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,16 +1,16 @@ -FROM debian:buster-slim +FROM debian:bookworm-slim RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ \ - # .NET Core dependencies + # .NET dependencies libc6 \ - libgcc1 \ + libgcc-s1 \ libgssapi-krb5-2 \ - libicu63 \ - libssl1.1 \ + libicu72 \ + libssl3 \ libstdc++6 \ zlib1g \ curl \ @@ -21,10 +21,10 @@ RUN apt-get update \ ENV \ - # Enable detection of running in a container DOTNET_RUNNING_IN_CONTAINER=true \ DOTNET_INSTALL_DIR=/usr/share/dotnet/ \ - DOTNET_ROOT=/usr/share/dotnet/ + DOTNET_ROOT=/usr/share/dotnet/ \ + DOTNET_NOLOGO=1 COPY ./.devcontainer/install-dotnets.sh global.json* . diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d15d754..24fe179 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,11 +6,15 @@ "forwardPorts": [ 0 ], - "extensions": [ - "ionide.ionide-fsharp", - "ms-dotnettools.csharp", - "editorconfig.editorconfig", - "ionide.ionide-paket", - "ionide.ionide-fake" - ] -} \ No newline at end of file + "customizations": { + "vscode": { + "extensions": [ + "ionide.ionide-fsharp", + "ms-dotnettools.csharp", + "editorconfig.editorconfig", + "ionide.ionide-paket", + "ionide.ionide-fake" + ] + } + } +} diff --git a/.devcontainer/install-dotnets.sh b/.devcontainer/install-dotnets.sh index ed590bf..b6d87b8 100644 --- a/.devcontainer/install-dotnets.sh +++ b/.devcontainer/install-dotnets.sh @@ -1,6 +1,6 @@ #!/bin/bash -# downloads installer script https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script +# downloads installer script https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script curl -SL --output dotnet-install.sh https://dot.net/v1/dotnet-install.sh @@ -10,14 +10,3 @@ if test -f "$FILE"; then echo "installing dotnet via $FILE" /bin/bash dotnet-install.sh --verbose --jsonfile $FILE fi - - -# Add additional versions if required -DOTNET_VERSIONS=( - # 'latest' - '5.0.100' -) -for version in ${DOTNET_VERSIONS[@]}; do - echo "installing dotnet $version" - /bin/bash dotnet-install.sh --verbose --version $version -done diff --git a/.devcontainer/settings.vscode.json b/.devcontainer/settings.vscode.json index f708a66..d009c87 100644 --- a/.devcontainer/settings.vscode.json +++ b/.devcontainer/settings.vscode.json @@ -1,7 +1,6 @@ { - "FSharp.fsacRuntime":"netcore", "FSharp.enableAnalyzers": true, "FSharp.analyzersPath": [ "./packages/analyzers" ] -} +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 3630b48..d009c87 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,4 @@ { - "FSharp.fsacRuntime":"netcore", "FSharp.enableAnalyzers": true, "FSharp.analyzersPath": [ "./packages/analyzers" From 68652cfc6d5773d0dfcaa540f47c3ae0f7f69c80 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 11:20:51 +0700 Subject: [PATCH 12/19] Relax FSharp.Core dependency and update NuGet build TFM - FSharp.Core: exact 9.0.100 -> >= 9.0.100 (fixes NU1608 warning when consumers use a newer FSharp.Core from their SDK) - Rename build/net5.0 -> build/net10.0 in NuGet package --- paket.dependencies | 4 ++-- src/EFCore.FSharp/build/{net5.0 => net10.0}/EFCoreFSharp.fs | 0 .../{net5.0 => net10.0}/EntityFrameworkCore.FSharp.props | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename src/EFCore.FSharp/build/{net5.0 => net10.0}/EFCoreFSharp.fs (100%) rename src/EFCore.FSharp/build/{net5.0 => net10.0}/EntityFrameworkCore.FSharp.props (100%) diff --git a/paket.dependencies b/paket.dependencies index db63b99..ecfade6 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -3,7 +3,7 @@ group Src source https://api.nuget.org/v3/index.json storage: none - nuget FSharp.Core 9.0.100 + nuget FSharp.Core >= 9.0.100 nuget Microsoft.SourceLink.GitHub 1.0.0 copy_local: true nuget Microsoft.EntityFrameworkCore.Design ~> 10.0.0 @@ -14,7 +14,7 @@ group Tests nuget System.Collections.Immutable >= 10.0.0 - nuget FSharp.Core 9.0.100 + nuget FSharp.Core >= 9.0.100 nuget Microsoft.SourceLink.GitHub 1.0.0 copy_local: true nuget Expecto 9.0.2 nuget YoloDev.Expecto.TestSdk 0.12.10 diff --git a/src/EFCore.FSharp/build/net5.0/EFCoreFSharp.fs b/src/EFCore.FSharp/build/net10.0/EFCoreFSharp.fs similarity index 100% rename from src/EFCore.FSharp/build/net5.0/EFCoreFSharp.fs rename to src/EFCore.FSharp/build/net10.0/EFCoreFSharp.fs diff --git a/src/EFCore.FSharp/build/net5.0/EntityFrameworkCore.FSharp.props b/src/EFCore.FSharp/build/net10.0/EntityFrameworkCore.FSharp.props similarity index 100% rename from src/EFCore.FSharp/build/net5.0/EntityFrameworkCore.FSharp.props rename to src/EFCore.FSharp/build/net10.0/EntityFrameworkCore.FSharp.props From e62e1143fd3feb3383aa7e9ad076bbfc5d0b64b6 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 11:49:08 +0700 Subject: [PATCH 13/19] Fix issues found during PR review - Fix hardcoded net6.0 TFM in docsTool/Program.fs (should be net10.0) - Move CSharpInterop project to paket (was using hardcoded preview EF Core version) - Update AssemblyInfo.fs files from 6.0.x to 10.0.0 - Replace deprecated PackageLicenseUrl with PackageLicenseExpression (MIT) - Replace failwith "todo" stubs with proper no-op implementations in FakeDiagnosticsLogger - Remove commented-out TryAddProviderSpecificServices dead code - Format docsTool/templates/types.fs with fantomas --- Directory.Build.props | 2 +- docsTool/Program.fs | 2 +- docsTool/templates/types.fs | 151 +++++++----------- src/EFCore.FSharp/AssemblyInfo.fs | 22 +-- src/EFCore.FSharp/EFCore.FSharp.fsproj | 1 - .../EFCore.FSharp.Tests.CSharpInterop.csproj | 13 +- .../paket.references | 2 + tests/EFCore.FSharp.Tests/AssemblyInfo.fs | 22 +-- .../TestUtilities/FakeDiagnosticsLogger.fs | 10 +- .../FakeProvider/FakeDbConnection.fs | 1 - 10 files changed, 93 insertions(+), 133 deletions(-) create mode 100644 tests/EFCore.FSharp.Tests.CSharpInterop/paket.references diff --git a/Directory.Build.props b/Directory.Build.props index 2f4b3a0..bbf37a7 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,7 +3,7 @@ f#, fsharp https://github.com/efcore/EFCore.FSharp - https://github.com/efcore/EFCore.FSharp/blob/master/LICENSE.md + MIT false git efcore diff --git a/docsTool/Program.fs b/docsTool/Program.fs index e0ad952..53ecf3c 100644 --- a/docsTool/Program.fs +++ b/docsTool/Program.fs @@ -217,7 +217,7 @@ module GenerateDocs = (fun opts -> { opts with OutputPath = Some cfg.PublishPath.FullName - Framework = Some "net6.0" }) + Framework = Some "net10.0" }) p) let generateAPI (cfg: Configuration) = diff --git a/docsTool/templates/types.fs b/docsTool/templates/types.fs index c8d5df9..b858022 100644 --- a/docsTool/templates/types.fs +++ b/docsTool/templates/types.fs @@ -15,149 +15,110 @@ let generateTypeDocs (model: TypeInfo) (props) = let byCategory = members |> List.groupBy (fun m -> m.Category) - |> List.sortBy - (fun (k, v) -> - if String.IsNullOrEmpty(k) then - "ZZZ" - else - k) - |> List.mapi - (fun i (k, v) -> - { Index = i - GroupKey = k - Members = - v - |> List.sortBy - (fun m -> - if m.Kind = MemberKind.StaticParameter then - "" - else - m.Name) - Name = - if String.IsNullOrEmpty(k) then - "Other type members" - else - k }) + |> List.sortBy (fun (k, v) -> if String.IsNullOrEmpty(k) then "ZZZ" else k) + |> List.mapi (fun i (k, v) -> + { Index = i + GroupKey = k + Members = + v + |> List.sortBy (fun m -> if m.Kind = MemberKind.StaticParameter then "" else m.Name) + Name = if String.IsNullOrEmpty(k) then "Other type members" else k }) [ yield h1 [] [ str model.Type.Name ] yield - p [] [ - yield! renderObsoleteMessage model.Type - yield! renderNamespace model.Namespace - if model.HasParentModule then - yield br [] + p + [] + [ yield! renderObsoleteMessage model.Type + yield! renderNamespace model.Namespace + if model.HasParentModule then + yield br [] - yield - span [] [ - str "Parent Module: " + yield + span + [] + [ str "Parent Module: " - a [ Href(sprintf "%s.html" model.ParentModule.Value.UrlName) ] [ - str model.ParentModule.Value.Name - ] - ] + a + [ Href(sprintf "%s.html" model.ParentModule.Value.UrlName) ] + [ str model.ParentModule.Value.Name ] ] - if ``type``.Attributes |> Seq.isEmpty |> not then - yield br [] + if ``type``.Attributes |> Seq.isEmpty |> not then + yield br [] - yield - span [] [ - yield str "Attributes: " + yield + span + [] + [ yield str "Attributes: " - yield br [] - - for attr in ``type``.Attributes do - yield str (attr.Format()) yield br [] - ] - ] + + for attr in ``type``.Attributes do + yield str (attr.Format()) + yield br [] ] ] yield - div [ Class "xmldoc" ] [ - for sec in comment.Sections do - if byCategory - |> Seq.exists (fun m -> m.GroupKey = sec.Key) - |> not then - if sec.Key <> "" then - yield h2 [] [ str sec.Key ] + div + [ Class "xmldoc" ] + [ for sec in comment.Sections do + if byCategory |> Seq.exists (fun m -> m.GroupKey = sec.Key) |> not then + if sec.Key <> "" then + yield h2 [] [ str sec.Key ] - yield RawText sec.Value - ] + yield RawText sec.Value ] if byCategory |> Seq.length > 1 then yield h2 [] [ str "Table of contents" ] yield - ul [] [ - for g in byCategory do - yield - li [] [ - a [ Href(sprintf "#section%d" g.Index) ] [ - str g.Name - ] - ] - ] + ul + [] + [ for g in byCategory do + yield li [] [ a [ Href(sprintf "#section%d" g.Index) ] [ str g.Name ] ] ] for g in byCategory do if byCategory |> Seq.length > 1 then yield - h2 [] [ - str g.Name - - a [ Name(sprintf "section%d" g.Index) ] [ - str " " - ] - ] - - match comment.Sections - |> Seq.tryFind (fun kvp -> kvp.Key = g.GroupKey) - with - | Some info -> - yield - div [ Class "xmldoc" ] [ - str info.Value - ] + h2 + [] + [ str g.Name + + a [ Name(sprintf "section%d" g.Index) ] [ str " " ] ] + + match comment.Sections |> Seq.tryFind (fun kvp -> kvp.Key = g.GroupKey) with + | Some info -> yield div [ Class "xmldoc" ] [ str info.Value ] | None -> yield nothing yield! - partMembers - "Union Cases" - "Union Case" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.UnionCase)) + partMembers "Union Cases" "Union Case" (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.UnionCase)) yield! partMembers "Record Fields" "Record Field" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.RecordField)) + (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.RecordField)) yield! partMembers "Static parameters" "Static parameters" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.StaticParameter)) + (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.StaticParameter)) yield! partMembers "Contructors" "Constructor" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.Constructor)) + (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.Constructor)) yield! partMembers "Instance members" "Instance member" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.InstanceMember)) + (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.InstanceMember)) yield! partMembers "Static members" "Static member" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.StaticMember)) ] + (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.StaticMember)) ] diff --git a/src/EFCore.FSharp/AssemblyInfo.fs b/src/EFCore.FSharp/AssemblyInfo.fs index a0e4658..3cb6822 100644 --- a/src/EFCore.FSharp/AssemblyInfo.fs +++ b/src/EFCore.FSharp/AssemblyInfo.fs @@ -1,16 +1,16 @@ -// Auto-Generated by FAKE; do not edit +// Auto-Generated by FAKE; do not edit namespace System open System.Reflection [] [] -[] -[] -[] -[] +[] +[] +[] +[] [] -[] +[] do () module internal AssemblyVersionInformation = @@ -21,19 +21,19 @@ module internal AssemblyVersionInformation = let AssemblyProduct = "EFCore.FSharp" [] - let AssemblyVersion = "6.0.7" + let AssemblyVersion = "10.0.0" [] - let AssemblyMetadata_ReleaseDate = "2022-06-26T00:00:00.0000000+01:00" + let AssemblyMetadata_ReleaseDate = "2026-04-05T00:00:00.0000000+00:00" [] - let AssemblyFileVersion = "6.0.7" + let AssemblyFileVersion = "10.0.0" [] - let AssemblyInformationalVersion = "6.0.7" + let AssemblyInformationalVersion = "10.0.0" [] let AssemblyMetadata_ReleaseChannel = "release" [] - let AssemblyMetadata_GitHash = "bd06b49bb7290ad9a1242b35b07609a0299fdc04" + let AssemblyMetadata_GitHash = "68652cf" diff --git a/src/EFCore.FSharp/EFCore.FSharp.fsproj b/src/EFCore.FSharp/EFCore.FSharp.fsproj index bc2533c..66cbbc9 100644 --- a/src/EFCore.FSharp/EFCore.FSharp.fsproj +++ b/src/EFCore.FSharp/EFCore.FSharp.fsproj @@ -6,7 +6,6 @@ EntityFrameworkCore.FSharp Simon Reynolds, Brice Lambson et al. Adds F# design-time support to EF Core - https://github.com/efcore/EFCore.FSharp/blob/master/LICENSE.md https://github.com/efcore/EFCore.FSharp Entity Framework Core;entity-framework-core;ef;efcore;fsharp https://github.com/efcore/EFCore.FSharp.git diff --git a/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj b/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj index 0640181..ae55975 100644 --- a/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj +++ b/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj @@ -1,8 +1,7 @@ + - - net10.0 - - - - - + + net10.0 + + + \ No newline at end of file diff --git a/tests/EFCore.FSharp.Tests.CSharpInterop/paket.references b/tests/EFCore.FSharp.Tests.CSharpInterop/paket.references new file mode 100644 index 0000000..f61e6bc --- /dev/null +++ b/tests/EFCore.FSharp.Tests.CSharpInterop/paket.references @@ -0,0 +1,2 @@ +group Tests +Microsoft.EntityFrameworkCore.Relational diff --git a/tests/EFCore.FSharp.Tests/AssemblyInfo.fs b/tests/EFCore.FSharp.Tests/AssemblyInfo.fs index 8573ff2..5a7cb7c 100644 --- a/tests/EFCore.FSharp.Tests/AssemblyInfo.fs +++ b/tests/EFCore.FSharp.Tests/AssemblyInfo.fs @@ -1,16 +1,16 @@ -// Auto-Generated by FAKE; do not edit +// Auto-Generated by FAKE; do not edit namespace System open System.Reflection [] [] -[] -[] -[] -[] +[] +[] +[] +[] [] -[] +[] do () module internal AssemblyVersionInformation = @@ -21,19 +21,19 @@ module internal AssemblyVersionInformation = let AssemblyProduct = "EFCore.FSharp" [] - let AssemblyVersion = "6.0.5" + let AssemblyVersion = "10.0.0" [] - let AssemblyMetadata_ReleaseDate = "2021-11-30T00:00:00.0000000+00:00" + let AssemblyMetadata_ReleaseDate = "2026-04-05T00:00:00.0000000+00:00" [] - let AssemblyFileVersion = "6.0.5" + let AssemblyFileVersion = "10.0.0" [] - let AssemblyInformationalVersion = "6.0.5" + let AssemblyInformationalVersion = "10.0.0" [] let AssemblyMetadata_ReleaseChannel = "release" [] - let AssemblyMetadata_GitHash = "9b0e92f0fe99052d899a2c5bc55a5f8b61416127" + let AssemblyMetadata_GitHash = "68652cf" diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs b/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs index d98469e..f9037cb 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs @@ -26,11 +26,11 @@ type FakeDiagnosticsLogger<'a when 'a :> LoggerCategory<'a> and 'a: (new: unit - member this.ShouldLogSensitiveData() : bool = false - member this.DbContextLogger = failwith "todo" + member this.DbContextLogger = Unchecked.defaultof<_> member this.DispatchEventData(definition, eventData, diagnosticSourceEnabled, simpleLogEnabled) = - failwith "todo" + Unchecked.defaultof<_> - member this.NeedsEventData(definition, diagnosticSourceEnabled, simpleLogEnabled) = failwith "todo" - member this.NeedsEventData(definition, interceptor, diagnosticSourceEnabled, simpleLogEnabled) = failwith "todo" - member this.ShouldLog(definition) = failwith "todo" + member this.NeedsEventData(definition, diagnosticSourceEnabled, simpleLogEnabled) = false + member this.NeedsEventData(definition, interceptor, diagnosticSourceEnabled, simpleLogEnabled) = false + member this.ShouldLog(definition) = true diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs index da6bf5e..2a866f1 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs @@ -556,7 +556,6 @@ and [] FakeRelationalOptionsExtension = .TryAdd() .TryAdd() .TryAdd() - //.TryAddProviderSpecificServices(Action(serviceMap)) builder.TryAddCoreServices() |> ignore From d6d211839c29e64467929445f651dae19c6f058b Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 11:49:37 +0700 Subject: [PATCH 14/19] Update CHANGELOG with complete list of 10.0.0 changes --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a9c41e..d5f963e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Adapted to EF Core 10 breaking changes (removed/renamed APIs, new interface members, constructor changes) - Updated CI workflow to .NET 10 with latest GitHub Actions - Added C# interop project for TestRelationalTypeMappingSource (F# cannot handle covariant return types) +- Updated devcontainer to Debian bookworm and .NET 10 +- Relaxed FSharp.Core dependency constraint (>= 9.0.100 instead of exact) +- Replaced deprecated PackageLicenseUrl with PackageLicenseExpression (MIT) +- Updated documentation (README, Getting Started, docsSrc) for .NET 10 ## [6.0.7] - 2022-06-26 From ff9b71b5ec59d4ef22ce5589cbc7d0b3314f0271 Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 12:08:06 +0700 Subject: [PATCH 15/19] Add CSharpInterop project to solution file --- EFCore.FSharp.sln | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/EFCore.FSharp.sln b/EFCore.FSharp.sln index b756a19..f7356f1 100644 --- a/EFCore.FSharp.sln +++ b/EFCore.FSharp.sln @@ -15,6 +15,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "docsTool", "docsTool\docsTo EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "build", "build\build.fsproj", "{40D2259D-991D-44C4-B45D-C88CE0710C23}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCore.FSharp.Tests.CSharpInterop", "tests\EFCore.FSharp.Tests.CSharpInterop\EFCore.FSharp.Tests.CSharpInterop.csproj", "{20918426-CC33-430A-AD54-9497F22ADBED}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -24,9 +26,6 @@ Global Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Debug|Any CPU.Build.0 = Debug|Any CPU @@ -76,9 +75,25 @@ Global {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|x64.Build.0 = Release|Any CPU {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|x86.ActiveCfg = Release|Any CPU {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|x86.Build.0 = Release|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|x64.ActiveCfg = Debug|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|x64.Build.0 = Debug|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|x86.ActiveCfg = Debug|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|x86.Build.0 = Debug|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Release|Any CPU.Build.0 = Release|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Release|x64.ActiveCfg = Release|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Release|x64.Build.0 = Release|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Release|x86.ActiveCfg = Release|Any CPU + {20918426-CC33-430A-AD54-9497F22ADBED}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {5D30E174-2538-47AC-8443-318C8C5DC2C9} = {C397A34C-84F1-49E7-AEBC-2F9F2B196216} {1CA2E092-2320-451D-A4F0-9ED7C7C528CA} = {ACBEE43C-7A88-4FB1-9B06-DB064D22B29F} + {20918426-CC33-430A-AD54-9497F22ADBED} = {ACBEE43C-7A88-4FB1-9B06-DB064D22B29F} EndGlobalSection EndGlobal From b047032e5bc35b09913fe23f9dc81544af6ca75a Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Sun, 5 Apr 2026 21:20:33 +0700 Subject: [PATCH 16/19] Mark CSharpInterop as non-test project to fix CI --- .../EFCore.FSharp.Tests.CSharpInterop.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj b/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj index ae55975..6d89ce8 100644 --- a/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj +++ b/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj @@ -2,6 +2,7 @@ net10.0 + false \ No newline at end of file From 82dadf266fc4584e742fc49d2d240608b7c6389d Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Mon, 6 Apr 2026 21:15:18 +0700 Subject: [PATCH 17/19] Revert fantomas 6 formatting, downgrade to fantomas-tool 4.5.6 Reverts mass-reformatting introduced by fantomas 6.3.15 upgrade. Formatting changes should be reviewed separately from functional .NET 10 migration changes as requested by reviewers. --- .config/dotnet-tools.json | 4 +- .editorconfig | 10 - build/build.fs | 369 ++++++---- docsTool/templates/types.fs | 151 +++-- src/EFCore.FSharp/DbContextHelpers.fs | 54 +- src/EFCore.FSharp/EFCoreFSharpServices.fs | 3 +- .../Extensions/ModelBuilderExtensions.fs | 38 +- src/EFCore.FSharp/Internal/FSharpHelper.fs | 229 +++++-- src/EFCore.FSharp/Internal/FSharpUtilities.fs | 35 +- .../FSharpMigrationOperationGenerator.fs | 116 +++- .../Design/FSharpMigrationsGenerator.fs | 19 +- .../Design/FSharpMigrationsScaffolder.fs | 23 +- .../Design/FSharpSnapshotGenerator.fs | 357 ++++++---- .../Internal/FSharpMigrationsModelDiffer.fs | 31 +- .../Scaffolding/FSharpDbContextGenerator.fs | 265 +++++--- .../Scaffolding/FSharpEntityTypeGenerator.fs | 132 ++-- .../Internal/FSharpModelGenerator.fs | 16 +- .../Translations/IsNullTranslation.fs | 1 - src/EFCore.FSharp/Translations/Translation.fs | 3 +- .../Utilities/EntityFrameworkExtensions.fs | 21 +- src/EFCore.FSharp/Utilities/Multigraph.fs | 42 +- .../Utilities/SharedTypeExtensions.fs | 81 ++- src/EFCore.FSharp/Utilities/StringBuffer.fs | 17 +- .../ValueConverters/Converters.fs | 42 +- .../DbContextHelperTests.fs | 80 ++- .../Internal/FSharpUtilitiesTest.fs | 40 +- .../FSharpMigrationOperationGeneratorTest.fs | 138 ++-- .../Design/FSharpMigrationsGeneratorTest.fs | 639 +++++++++++------- .../Design/FSharpMigrationsScaffolderTest.fs | 27 +- .../Internal/FSharpDbContextGeneratorTest.fs | 90 +-- .../Internal/FSharpModelGeneratorTests.fs | 45 +- .../Internal/ModelCodeGeneratorTestBase.fs | 13 +- .../TestUtilities/BuildReference.fs | 18 +- .../FakeProvider/FakeDbConnection.fs | 18 +- .../TestUtilities/RelationalTestHelpers.fs | 11 +- .../TestModificationCommandBatchFactory.fs | 7 +- .../TestProviderCodeGenerator.fs | 16 +- .../TestRelationalTypeMappingSource.fs | 51 +- .../TestUtilities/TestServiceFactory.fs | 94 +-- .../Translations/IsNullTranslationTests.fs | 21 +- .../Translations/OptionTranslationTests.fs | 21 +- .../SingleCaseUnionTranslationTests.fs | 6 +- .../Utilities/StringBufferTests.fs | 30 +- .../ValueConverters/ValueConvertersTest.fs | 17 +- 44 files changed, 2260 insertions(+), 1181 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 3acf436..3e2d77d 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -32,8 +32,8 @@ "fsharp-analyzers" ] }, - "fantomas": { - "version": "6.3.15", + "fantomas-tool": { + "version": "4.5.6", "commands": [ "fantomas" ] diff --git a/.editorconfig b/.editorconfig index 6b67808..304fc05 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,16 +17,6 @@ end_of_line = lf charset = utf-8 trim_trailing_whitespace = true -# Fantomas settings (pinned to fantomas 6 defaults to prevent future mass reformatting) -[*.{fs,fsi,fsx}] -max_line_length = 120 -fsharp_max_if_then_else_short_width = 60 -fsharp_max_infix_operator_expression = 80 -fsharp_max_record_width = 40 -fsharp_max_array_or_list_width = 80 -fsharp_max_value_binding_width = 80 -fsharp_max_function_binding_width = 40 - [paket.*] trim_trailing_whitespace = true indent_size = 2 diff --git a/build/build.fs b/build/build.fs index e31603e..8081c00 100644 --- a/build/build.fs +++ b/build/build.fs @@ -14,11 +14,12 @@ let environVarAsBoolOrDefault varName defaultValue = let truthyConsts = [ "1"; "Y"; "YES"; "T"; "TRUE" ] try - let envvar = (Environment.environVar varName).ToUpper() + let envvar = + (Environment.environVar varName).ToUpper() truthyConsts |> List.exists ((=) envvar) - with _ -> - defaultValue + with + | _ -> defaultValue //----------------------------------------------------------------------------- // Metadata and Configuration @@ -26,22 +27,35 @@ let environVarAsBoolOrDefault varName defaultValue = let productName = "EFCore.FSharp" -let sln = __SOURCE_DIRECTORY__ ".." "EFCore.FSharp.sln" +let sln = + __SOURCE_DIRECTORY__ + ".." + "EFCore.FSharp.sln" let srcCodeGlob = !!(__SOURCE_DIRECTORY__ ".." "src/**/*.fs") ++ (__SOURCE_DIRECTORY__ ".." "src/**/*.fsx") - -- (__SOURCE_DIRECTORY__ ".." "src/**/obj/**/*.fs") + -- (__SOURCE_DIRECTORY__ + ".." + "src/**/obj/**/*.fs") let testsCodeGlob = !!(__SOURCE_DIRECTORY__ ".." "tests/**/*.fs") ++ (__SOURCE_DIRECTORY__ ".." "tests/**/*.fsx") - -- (__SOURCE_DIRECTORY__ ".." "tests/**/obj/**/*.fs") + -- (__SOURCE_DIRECTORY__ + ".." + "tests/**/obj/**/*.fs") -let srcGlob = __SOURCE_DIRECTORY__ ".." "src/**/*.??proj" +let srcGlob = + __SOURCE_DIRECTORY__ + ".." + "src/**/*.??proj" -let testsGlob = __SOURCE_DIRECTORY__ ".." "tests/**/*.??proj" +let testsGlob = + __SOURCE_DIRECTORY__ + ".." + "tests/**/*.??proj" let srcAndTest = !!srcGlob ++ testsGlob @@ -50,27 +64,36 @@ let distGlob = distDir "*.nupkg" let coverageThresholdPercent = 55 -let coverageReportDir = __SOURCE_DIRECTORY__ ".." "docs" "coverage" +let coverageReportDir = + __SOURCE_DIRECTORY__ + ".." + "docs" + "coverage" let docsDir = __SOURCE_DIRECTORY__ ".." "docs" -let docsSrcDir = __SOURCE_DIRECTORY__ ".." "docsSrc" +let docsSrcDir = + __SOURCE_DIRECTORY__ ".." "docsSrc" -let docsToolDir = __SOURCE_DIRECTORY__ ".." "docsTool" +let docsToolDir = + __SOURCE_DIRECTORY__ ".." "docsTool" let gitOwner = "efcore" let gitRepoName = "EFCore.FSharp" -let gitHubRepoUrl = sprintf "https://github.com/%s/%s" gitOwner gitRepoName +let gitHubRepoUrl = + sprintf "https://github.com/%s/%s" gitOwner gitRepoName let releaseBranch = "master" let tagFromVersionNumber versionNumber = sprintf "v%s" versionNumber -let changelogFilename = __SOURCE_DIRECTORY__ ".." "CHANGELOG.md" +let changelogFilename = + __SOURCE_DIRECTORY__ ".." "CHANGELOG.md" -let changelog = Fake.Core.Changelog.load changelogFilename +let changelog = + Fake.Core.Changelog.load changelogFilename let mutable latestEntry = if Seq.isEmpty changelog.Entries then @@ -83,26 +106,36 @@ let mutable changelogBackupFilename = "" let publishUrl = "https://www.nuget.org" -let docsSiteBaseUrl = sprintf "https://%s.github.io/%s" gitOwner gitRepoName +let docsSiteBaseUrl = + sprintf "https://%s.github.io/%s" gitOwner gitRepoName -let disableCodeCoverage = environVarAsBoolOrDefault "DISABLE_COVERAGE" false +let disableCodeCoverage = + environVarAsBoolOrDefault "DISABLE_COVERAGE" false -let githubToken = Environment.environVarOrNone "GITHUB_TOKEN" +let githubToken = + Environment.environVarOrNone "GITHUB_TOKEN" -let nugetToken = Environment.environVarOrNone "NUGET_TOKEN" +let nugetToken = + Environment.environVarOrNone "NUGET_TOKEN" //----------------------------------------------------------------------------- // Helpers //----------------------------------------------------------------------------- let isRelease (targets: Target list) = - targets |> Seq.map (fun t -> t.Name) |> Seq.exists ((=) "Release") + targets + |> Seq.map (fun t -> t.Name) + |> Seq.exists ((=) "Release") let invokeAsync f = async { f () } let configuration (targets: Target list) = - let defaultVal = if isRelease targets then "Release" else "Debug" + let defaultVal = + if isRelease targets then + "Release" + else + "Debug" match Environment.environVarOrDefault "CONFIGURATION" defaultVal with | "Debug" -> DotNet.BuildConfiguration.Debug @@ -121,8 +154,8 @@ let rec retryIfInCI times fn = if times > 1 then try fn () - with _ -> - retryIfInCI (times - 1) fn + with + | _ -> retryIfInCI (times - 1) fn else fn () | _ -> fn () @@ -141,7 +174,7 @@ module Changelog = | Changelog.Change.Fixed s | Changelog.Change.Removed s | Changelog.Change.Security s - | Changelog.Change.Custom(_, s) -> String.IsNullOrWhiteSpace s.CleanedText + | Changelog.Change.Custom (_, s) -> String.IsNullOrWhiteSpace s.CleanedText let isChangelogEmpty () = let isEmpty = @@ -166,9 +199,10 @@ module Changelog = // Changelog entries come already sorted, most-recent first, by the Changelog module let prevEntry = changelog.Entries - |> List.skipWhile (fun entry -> - entry.SemVer.PreRelease.IsSome - && versionTuple entry.SemVer = versionTuple newVersion) + |> List.skipWhile + (fun entry -> + entry.SemVer.PreRelease.IsSome + && versionTuple entry.SemVer = versionTuple newVersion) |> List.tryHead let linkTarget = @@ -195,7 +229,7 @@ module Changelog = | Some desc -> sprintf "%s\n\n%s" (desc.Trim()) linkReference { latestEntry with - Description = Some description } + Description = Some description } .ToString() let getVersionNumber envVarName ctx = @@ -208,7 +242,10 @@ module Changelog = if SemVer.isValid verArg then verArg - elif verArg.StartsWith("v") && SemVer.isValid verArg.[1..] then + elif + verArg.StartsWith("v") + && SemVer.isValid verArg.[1..] + then let target = ctx.Context.FinalTarget Trace.traceImportantfn @@ -243,7 +280,8 @@ module dotnet = let run cmdParam args = DotNet.exec cmdParam "run" args let tool optionConfig command args = - DotNet.exec optionConfig (sprintf "%s" command) args |> failOnBadExitAndPrint + DotNet.exec optionConfig (sprintf "%s" command) args + |> failOnBadExitAndPrint let reportgenerator optionConfig args = tool optionConfig "reportgenerator" args @@ -274,7 +312,8 @@ open DocsTool.CLIArgs module DocsTool = open Argu - let buildparser = ArgumentParser.Create(programName = "docstool") + let buildparser = + ArgumentParser.Create(programName = "docstool") let buildCLI () = [ BuildArgs.SiteBaseUrl docsSiteBaseUrl @@ -290,11 +329,12 @@ module DocsTool = dotnet.run (fun args -> { args with - WorkingDirectory = docsToolDir }) + WorkingDirectory = docsToolDir }) (sprintf " -- build %s" (buildCLI ())) |> failOnBadExitAndPrint - let watchparser = ArgumentParser.Create(programName = "docstool") + let watchparser = + ArgumentParser.Create(programName = "docstool") let watchCLI () = [ WatchArgs.ProjectGlob srcGlob @@ -308,7 +348,7 @@ module DocsTool = dotnet.watch (fun args -> { args with - WorkingDirectory = docsToolDir }) + WorkingDirectory = docsToolDir }) "run" (sprintf "-- watch %s" (watchCLI ())) |> failOnBadExitAndPrint @@ -323,25 +363,36 @@ let allReleaseChecks () = let clean _ = - [ "bin"; "temp"; distDir; coverageReportDir ] |> Shell.cleanDirs + [ "bin" + "temp" + distDir + coverageReportDir ] + |> Shell.cleanDirs !!srcGlob ++ testsGlob - |> Seq.collect (fun p -> [ "bin"; "obj" ] |> Seq.map (fun sp -> IO.Path.GetDirectoryName p sp)) + |> Seq.collect + (fun p -> + [ "bin"; "obj" ] + |> Seq.map (fun sp -> IO.Path.GetDirectoryName p sp)) |> Shell.cleanDirs - [ "paket-files/paket.restore.cached" ] |> Seq.iter Shell.rm + [ "paket-files/paket.restore.cached" ] + |> Seq.iter Shell.rm let dotnetRestore _ = [ sln ] - |> Seq.map (fun dir -> - fun () -> - let args = [] |> String.concat " " - - DotNet.restore - (fun c -> - { c with - Common = c.Common |> DotNet.Options.withCustomParams (Some(args)) }) - dir) + |> Seq.map + (fun dir -> + fun () -> + let args = [] |> String.concat " " + + DotNet.restore + (fun c -> + { c with + Common = + c.Common + |> DotNet.Options.withCustomParams (Some(args)) }) + dir) |> Seq.iter (retryIfInCI 10) let updateChangelog ctx = @@ -350,52 +401,61 @@ let updateChangelog ctx = | None -> None, [] | Some u -> u.Description, u.Changes - let verStr = ctx |> Changelog.getVersionNumber "RELEASE_VERSION" + let verStr = + ctx + |> Changelog.getVersionNumber "RELEASE_VERSION" let newVersion = SemVer.parse verStr changelog.Entries |> List.tryFind (fun entry -> entry.SemVer = newVersion) - |> Option.iter (fun entry -> - Trace.traceErrorfn - "Version %s already exists in %s, released on %s" - verStr - changelogFilename - (if entry.Date.IsSome then - entry.Date.Value.ToString("yyyy-MM-dd") - else - "(no date specified)") - - failwith "Can't release with a duplicate version number") + |> Option.iter + (fun entry -> + Trace.traceErrorfn + "Version %s already exists in %s, released on %s" + verStr + changelogFilename + (if entry.Date.IsSome then + entry.Date.Value.ToString("yyyy-MM-dd") + else + "(no date specified)") + + failwith "Can't release with a duplicate version number") changelog.Entries |> List.tryFind (fun entry -> entry.SemVer > newVersion) - |> Option.iter (fun entry -> - Trace.traceErrorfn - "You're trying to release version %s, but a later version %s already exists, released on %s" - verStr - entry.SemVer.AsString - (if entry.Date.IsSome then - entry.Date.Value.ToString("yyyy-MM-dd") - else - "(no date specified)") - - failwith "Can't release with a version number older than an existing release") + |> Option.iter + (fun entry -> + Trace.traceErrorfn + "You're trying to release version %s, but a later version %s already exists, released on %s" + verStr + entry.SemVer.AsString + (if entry.Date.IsSome then + entry.Date.Value.ToString("yyyy-MM-dd") + else + "(no date specified)") + + failwith "Can't release with a version number older than an existing release") let versionTuple version = (version.Major, version.Minor, version.Patch) let prereleaseEntries = changelog.Entries - |> List.filter (fun entry -> - entry.SemVer.PreRelease.IsSome - && versionTuple entry.SemVer = versionTuple newVersion) + |> List.filter + (fun entry -> + entry.SemVer.PreRelease.IsSome + && versionTuple entry.SemVer = versionTuple newVersion) let prereleaseChanges = prereleaseEntries - |> List.collect (fun entry -> entry.Changes |> List.filter (not << Changelog.isEmptyChange)) + |> List.collect + (fun entry -> + entry.Changes + |> List.filter (not << Changelog.isEmptyChange)) - let assemblyVersion, nugetVersion = Changelog.parseVersions newVersion.AsString + let assemblyVersion, nugetVersion = + Changelog.parseVersions newVersion.AsString linkReferenceForLatestEntry <- Changelog.mkLinkReference newVersion changelog @@ -417,7 +477,8 @@ let updateChangelog ctx = // Save changelog to temporary file before making any edits changelogBackupFilename <- System.IO.Path.GetTempFileName() - changelogFilename |> Shell.copyFile changelogBackupFilename + changelogFilename + |> Shell.copyFile changelogBackupFilename Target.activateFinal "DeleteChangelogBackupFile" @@ -429,7 +490,10 @@ let updateChangelog ctx = let linkReferenceForUnreleased = sprintf "[Unreleased]: %s/compare/%s...%s" gitHubRepoUrl (tagFromVersionNumber newVersion.AsString) "HEAD" - let tailLines = File.read changelogFilename |> List.ofSeq |> List.rev + let tailLines = + File.read changelogFilename + |> List.ofSeq + |> List.rev let isRef (line: string) = System.Text.RegularExpressions.Regex.IsMatch(line, @"^\[.+?\]:\s?[a-z]+://.*$") @@ -442,19 +506,27 @@ let updateChangelog ctx = let newLinkReferenceTargets = match linkReferenceTargets with - | [] -> [ linkReferenceForUnreleased; linkReferenceForLatestEntry ] + | [] -> + [ linkReferenceForUnreleased + linkReferenceForLatestEntry ] | first :: rest when first |> String.startsWith "[Unreleased]:" -> - linkReferenceForUnreleased :: linkReferenceForLatestEntry :: rest - | first :: rest -> linkReferenceForUnreleased :: linkReferenceForLatestEntry :: first :: rest + linkReferenceForUnreleased + :: linkReferenceForLatestEntry :: rest + | first :: rest -> + linkReferenceForUnreleased + :: linkReferenceForLatestEntry :: first :: rest let blankLineCount = - tailLines |> Seq.takeWhile String.isNullOrWhiteSpace |> Seq.length + tailLines + |> Seq.takeWhile String.isNullOrWhiteSpace + |> Seq.length let linkRefCount = linkReferenceTargets |> List.length let skipCount = blankLineCount + linkRefCount let updatedLines = - List.rev (tailLines |> List.skip skipCount) @ newLinkReferenceTargets + List.rev (tailLines |> List.skip skipCount) + @ newLinkReferenceTargets File.write false changelogFilename updatedLines @@ -463,7 +535,8 @@ let updateChangelog ctx = let revertChangelog _ = if String.isNotNullOrEmpty changelogBackupFilename then - changelogBackupFilename |> Shell.copyFile changelogFilename + changelogBackupFilename + |> Shell.copyFile changelogFilename let deleteChangelogBackupFile _ = if String.isNotNullOrEmpty changelogBackupFilename then @@ -471,13 +544,14 @@ let deleteChangelogBackupFile _ = let dotnetBuild ctx = let args = - [ sprintf "/p:PackageVersion=%s" latestEntry.NuGetVersion; "--no-restore" ] + [ sprintf "/p:PackageVersion=%s" latestEntry.NuGetVersion + "--no-restore" ] DotNet.build (fun c -> { c with - Configuration = configuration (ctx.Context.AllExecutingTargets) - Common = c.Common |> DotNet.Options.withAdditionalArgs args + Configuration = configuration (ctx.Context.AllExecutingTargets) + Common = c.Common |> DotNet.Options.withAdditionalArgs args }) sln @@ -487,19 +561,26 @@ let fsharpAnalyzers _ = ArgumentParser.Create(programName = "fsharp-analyzers") !!srcGlob - |> Seq.iter (fun proj -> - let args = - [ FSharpAnalyzers.Analyzers_Path(__SOURCE_DIRECTORY__ ".." "packages/analyzers") - FSharpAnalyzers.Arguments.Project proj - FSharpAnalyzers.Arguments.Fail_On_Warnings [ "BDH0002" ] - FSharpAnalyzers.Verbose ] - |> argParser.PrintCommandLineArgumentsFlat - - dotnet.fsharpAnalyzer id args) + |> Seq.iter + (fun proj -> + let args = + [ FSharpAnalyzers.Analyzers_Path( + __SOURCE_DIRECTORY__ + ".." + "packages/analyzers" + ) + FSharpAnalyzers.Arguments.Project proj + FSharpAnalyzers.Arguments.Fail_On_Warnings [ "BDH0002" ] + FSharpAnalyzers.Verbose ] + |> argParser.PrintCommandLineArgumentsFlat + + dotnet.fsharpAnalyzer id args) let dotnetTest ctx = let excludeCoverage = - !!testsGlob |> Seq.map IO.Path.GetFileNameWithoutExtension |> String.concat "|" + !!testsGlob + |> Seq.map IO.Path.GetFileNameWithoutExtension + |> String.concat "|" let args = [ "--no-build" @@ -512,14 +593,18 @@ let dotnetTest ctx = (fun c -> { c with - Configuration = configuration (ctx.Context.AllExecutingTargets) - Common = c.Common |> DotNet.Options.withAdditionalArgs args }) + Configuration = configuration (ctx.Context.AllExecutingTargets) + Common = c.Common |> DotNet.Options.withAdditionalArgs args }) sln let generateCoverageReport _ = - let coverageReports = !! "tests/**/coverage*.xml" |> String.concat ";" + let coverageReports = + !! "tests/**/coverage*.xml" |> String.concat ";" - let sourceDirs = !!srcGlob |> Seq.map Path.getDirectory |> String.concat ";" + let sourceDirs = + !!srcGlob + |> Seq.map Path.getDirectory + |> String.concat ";" let independentArgs = [ sprintf "-reports:\"%s\"" coverageReports @@ -535,19 +620,29 @@ let generateCoverageReport _ = let watchTests _ = !!testsGlob - |> Seq.map (fun proj -> - fun () -> - dotnet.watch - (fun opt -> opt |> DotNet.Options.withWorkingDirectory (IO.Path.GetDirectoryName proj)) - "test" - "" - |> ignore) - |> Seq.iter (invokeAsync >> Async.Catch >> Async.Ignore >> Async.Start) + |> Seq.map + (fun proj -> + fun () -> + dotnet.watch + (fun opt -> + opt + |> DotNet.Options.withWorkingDirectory (IO.Path.GetDirectoryName proj)) + "test" + "" + |> ignore) + |> Seq.iter ( + invokeAsync + >> Async.Catch + >> Async.Ignore + >> Async.Start + ) printfn "Press Ctrl+C (or Ctrl+Break) to stop..." let cancelEvent = - Console.CancelKeyPress |> Async.AwaitEvent |> Async.RunSynchronously + Console.CancelKeyPress + |> Async.AwaitEvent + |> Async.RunSynchronously cancelEvent.Cancel <- true @@ -576,22 +671,33 @@ let generateAssemblyInfo _ = AssemblyInfo.Metadata("GitHash", Git.Information.getCurrentSHA1 (null)) ] let getProjectDetails (projectPath: string) = - let projectName = IO.Path.GetFileNameWithoutExtension(projectPath) + let projectName = + IO.Path.GetFileNameWithoutExtension(projectPath) (projectPath, projectName, IO.Path.GetDirectoryName(projectPath), (getAssemblyInfoAttributes projectName)) srcAndTest |> Seq.map getProjectDetails - |> Seq.iter (fun (projFileName, _, folderName, attributes) -> - match projFileName with - | Fsproj -> AssemblyInfoFile.createFSharp (folderName "AssemblyInfo.fs") attributes - | Csproj -> AssemblyInfoFile.createCSharp ((folderName "Properties") "AssemblyInfo.cs") attributes - | Vbproj -> AssemblyInfoFile.createVisualBasic ((folderName "My Project") "AssemblyInfo.vb") attributes) + |> Seq.iter + (fun (projFileName, _, folderName, attributes) -> + match projFileName with + | Fsproj -> AssemblyInfoFile.createFSharp (folderName "AssemblyInfo.fs") attributes + | Csproj -> + AssemblyInfoFile.createCSharp + ((folderName "Properties") + "AssemblyInfo.cs") + attributes + | Vbproj -> + AssemblyInfoFile.createVisualBasic + ((folderName "My Project") + "AssemblyInfo.vb") + attributes) let dotnetPack ctx = // Get release notes with properly-linked version number let releaseNotes = - latestEntry |> Changelog.mkReleaseNotes linkReferenceForLatestEntry + latestEntry + |> Changelog.mkReleaseNotes linkReferenceForLatestEntry let args = [ sprintf "/p:PackageVersion=%s" latestEntry.NuGetVersion @@ -600,9 +706,9 @@ let dotnetPack ctx = DotNet.pack (fun c -> { c with - Configuration = configuration (ctx.Context.AllExecutingTargets) - OutputPath = Some distDir - Common = c.Common |> DotNet.Options.withAdditionalArgs args }) + Configuration = configuration (ctx.Context.AllExecutingTargets) + OutputPath = Some distDir + Common = c.Common |> DotNet.Options.withAdditionalArgs args }) sln let sourceLinkTest _ = @@ -612,16 +718,16 @@ let sourceLinkTest _ = let publishToNuget _ = allReleaseChecks () - Paket.push (fun c -> - { c with - ToolType = ToolType.CreateLocalTool() - PublishUrl = publishUrl - WorkingDir = "dist" - ApiKey = - match nugetToken with - | Some s -> s - | _ -> c.ApiKey } // assume paket-config was set properly - ) + Paket.push + (fun c -> + { c with + ToolType = ToolType.CreateLocalTool() + PublishUrl = publishUrl + WorkingDir = "dist" + ApiKey = + match nugetToken with + | Some s -> s + | _ -> c.ApiKey }) // If build fails after this point, we've pushed a release out with this version of CHANGELOG.md so we should keep it around Target.deactivateBuildFailure "RevertChangelog" @@ -632,12 +738,14 @@ let gitRelease _ = Git.Staging.stageFile "" "CHANGELOG.md" |> ignore - !! "src/**/AssemblyInfo.fs" |> Seq.iter (Git.Staging.stageFile "" >> ignore) + !! "src/**/AssemblyInfo.fs" + |> Seq.iter (Git.Staging.stageFile "" >> ignore) Git.Commit.exec "" (sprintf "Bump version to %s\n\n%s" latestEntry.NuGetVersion releaseNotesGitCommitFormat) Git.Branches.push "" - let tag = tagFromVersionNumber latestEntry.NuGetVersion + let tag = + tagFromVersionNumber latestEntry.NuGetVersion Git.Branches.tag "" tag Git.Branches.pushTag "" "origin" tag @@ -655,7 +763,8 @@ let githubRelease _ = let files = !!distGlob // Get release notes with properly-linked version number let releaseNotes = - latestEntry |> Changelog.mkReleaseNotes linkReferenceForLatestEntry + latestEntry + |> Changelog.mkReleaseNotes linkReferenceForLatestEntry GitHub.createClientWithToken token |> GitHub.draftNewRelease diff --git a/docsTool/templates/types.fs b/docsTool/templates/types.fs index b858022..c8d5df9 100644 --- a/docsTool/templates/types.fs +++ b/docsTool/templates/types.fs @@ -15,110 +15,149 @@ let generateTypeDocs (model: TypeInfo) (props) = let byCategory = members |> List.groupBy (fun m -> m.Category) - |> List.sortBy (fun (k, v) -> if String.IsNullOrEmpty(k) then "ZZZ" else k) - |> List.mapi (fun i (k, v) -> - { Index = i - GroupKey = k - Members = - v - |> List.sortBy (fun m -> if m.Kind = MemberKind.StaticParameter then "" else m.Name) - Name = if String.IsNullOrEmpty(k) then "Other type members" else k }) + |> List.sortBy + (fun (k, v) -> + if String.IsNullOrEmpty(k) then + "ZZZ" + else + k) + |> List.mapi + (fun i (k, v) -> + { Index = i + GroupKey = k + Members = + v + |> List.sortBy + (fun m -> + if m.Kind = MemberKind.StaticParameter then + "" + else + m.Name) + Name = + if String.IsNullOrEmpty(k) then + "Other type members" + else + k }) [ yield h1 [] [ str model.Type.Name ] yield - p - [] - [ yield! renderObsoleteMessage model.Type - yield! renderNamespace model.Namespace - if model.HasParentModule then - yield br [] + p [] [ + yield! renderObsoleteMessage model.Type + yield! renderNamespace model.Namespace + if model.HasParentModule then + yield br [] - yield - span - [] - [ str "Parent Module: " + yield + span [] [ + str "Parent Module: " - a - [ Href(sprintf "%s.html" model.ParentModule.Value.UrlName) ] - [ str model.ParentModule.Value.Name ] ] + a [ Href(sprintf "%s.html" model.ParentModule.Value.UrlName) ] [ + str model.ParentModule.Value.Name + ] + ] - if ``type``.Attributes |> Seq.isEmpty |> not then - yield br [] + if ``type``.Attributes |> Seq.isEmpty |> not then + yield br [] - yield - span - [] - [ yield str "Attributes: " + yield + span [] [ + yield str "Attributes: " - yield br [] + yield br [] - for attr in ``type``.Attributes do - yield str (attr.Format()) - yield br [] ] ] + for attr in ``type``.Attributes do + yield str (attr.Format()) + yield br [] + ] + ] yield - div - [ Class "xmldoc" ] - [ for sec in comment.Sections do - if byCategory |> Seq.exists (fun m -> m.GroupKey = sec.Key) |> not then - if sec.Key <> "" then - yield h2 [] [ str sec.Key ] + div [ Class "xmldoc" ] [ + for sec in comment.Sections do + if byCategory + |> Seq.exists (fun m -> m.GroupKey = sec.Key) + |> not then + if sec.Key <> "" then + yield h2 [] [ str sec.Key ] - yield RawText sec.Value ] + yield RawText sec.Value + ] if byCategory |> Seq.length > 1 then yield h2 [] [ str "Table of contents" ] yield - ul - [] - [ for g in byCategory do - yield li [] [ a [ Href(sprintf "#section%d" g.Index) ] [ str g.Name ] ] ] + ul [] [ + for g in byCategory do + yield + li [] [ + a [ Href(sprintf "#section%d" g.Index) ] [ + str g.Name + ] + ] + ] for g in byCategory do if byCategory |> Seq.length > 1 then yield - h2 - [] - [ str g.Name - - a [ Name(sprintf "section%d" g.Index) ] [ str " " ] ] - - match comment.Sections |> Seq.tryFind (fun kvp -> kvp.Key = g.GroupKey) with - | Some info -> yield div [ Class "xmldoc" ] [ str info.Value ] + h2 [] [ + str g.Name + + a [ Name(sprintf "section%d" g.Index) ] [ + str " " + ] + ] + + match comment.Sections + |> Seq.tryFind (fun kvp -> kvp.Key = g.GroupKey) + with + | Some info -> + yield + div [ Class "xmldoc" ] [ + str info.Value + ] | None -> yield nothing yield! - partMembers "Union Cases" "Union Case" (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.UnionCase)) + partMembers + "Union Cases" + "Union Case" + (g.Members + |> Seq.filter (fun m -> m.Kind = MemberKind.UnionCase)) yield! partMembers "Record Fields" "Record Field" - (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.RecordField)) + (g.Members + |> Seq.filter (fun m -> m.Kind = MemberKind.RecordField)) yield! partMembers "Static parameters" "Static parameters" - (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.StaticParameter)) + (g.Members + |> Seq.filter (fun m -> m.Kind = MemberKind.StaticParameter)) yield! partMembers "Contructors" "Constructor" - (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.Constructor)) + (g.Members + |> Seq.filter (fun m -> m.Kind = MemberKind.Constructor)) yield! partMembers "Instance members" "Instance member" - (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.InstanceMember)) + (g.Members + |> Seq.filter (fun m -> m.Kind = MemberKind.InstanceMember)) yield! partMembers "Static members" "Static member" - (g.Members |> Seq.filter (fun m -> m.Kind = MemberKind.StaticMember)) ] + (g.Members + |> Seq.filter (fun m -> m.Kind = MemberKind.StaticMember)) ] diff --git a/src/EFCore.FSharp/DbContextHelpers.fs b/src/EFCore.FSharp/DbContextHelpers.fs index fc6489f..53f3576 100644 --- a/src/EFCore.FSharp/DbContextHelpers.fs +++ b/src/EFCore.FSharp/DbContextHelpers.fs @@ -8,13 +8,16 @@ open System.Threading.Tasks let private awaitValueTask (x: ValueTask<_>) = Async.AwaitTask(x.AsTask()) type KeyType = - | Composite of obj[] + | Composite of obj [] | Single of obj let private transform (a: obj) = match a with - | :? seq as s -> Array.ofSeq s |> Array.map (fun i -> box i) |> Composite + | :? seq as s -> + Array.ofSeq s + |> Array.map (fun i -> box i) + |> Composite | _ -> Single a let findEntity<'a when 'a: not struct> (ctx: DbContext) (key: obj) : 'a = @@ -26,7 +29,10 @@ let findEntity<'a when 'a: not struct> (ctx: DbContext) (key: obj) : 'a = let tryFindEntity<'a when 'a: not struct> (ctx: DbContext) (key: obj) : 'a option = let result = findEntity<'a> ctx key - if isNull (box result) then None else Some result + if isNull (box result) then + None + else + Some result let findEntityAsync<'a when 'a: not struct> (ctx: DbContext) (key: obj) : Async<'a> = let f = @@ -45,7 +51,11 @@ let tryFindEntityAsync<'a when 'a: not struct> (ctx: DbContext) (key: obj) : Asy async { let! result = findEntityAsync<'a> ctx key - let result' = if isNull (box result) then None else Some result + let result' = + if isNull (box result) then + None + else + Some result return result' } @@ -55,14 +65,20 @@ let tryFindEntityTaskAsync<'a when 'a: not struct> (ctx: DbContext) (key: obj) : result .AsTask() - .ContinueWith(fun (t: Task<'a>) -> if isNull (box t.Result) then None else Some t.Result) + .ContinueWith(fun (t: Task<'a>) -> + if isNull (box t.Result) then + None + else + Some t.Result) /// Helper method for saving an updated record type let updateEntity (ctx: DbContext) (key: 'a -> 'b) (entity: 'a when 'a: not struct) = let currentEntity = findEntity<'a> ctx (key entity) - ctx.Entry(currentEntity).CurrentValues.SetValues(entity :> obj) + ctx + .Entry(currentEntity) + .CurrentValues.SetValues(entity :> obj) entity @@ -70,7 +86,8 @@ let updateEntityAsync (ctx: DbContext) (key: 'a -> 'b) (entity: 'a when 'a: not async { return updateEntity ctx key entity } let updateEntityRange (ctx: DbContext) (key: 'a -> 'b) (entities: 'a seq when 'a: not struct) = - entities |> Seq.map (fun e -> updateEntity ctx key e) + entities + |> Seq.map (fun e -> updateEntity ctx key e) let updateEntityRangeAsync (ctx: DbContext) (key: 'a -> 'b) (entities: 'a seq when 'a: not struct) = async { return updateEntityRange ctx key entities } @@ -108,7 +125,11 @@ let addEntityRange' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = c let addEntityRange (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = addEntityRange' ctx entities |> ignore let addEntityRangeAsync' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = - async { return! ctx.Set<'a>().AddRangeAsync(entities) |> Async.AwaitTask } + async { + return! + ctx.Set<'a>().AddRangeAsync(entities) + |> Async.AwaitTask + } let addEntityRangeAsync (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = addEntityRangeAsync' ctx entities |> Async.Ignore @@ -149,19 +170,23 @@ let tryFirstTaskAsync dbset = let tryFirst (dbset: #IQueryable<_>) = - dbset.FirstOrDefault() |> FSharpUtilities.OptionOfNullableObj + dbset.FirstOrDefault() + |> FSharpUtilities.OptionOfNullableObj let tryFilterFirstAsync predicate (dbSet: #IQueryable<_>) = async { let pred = FSharpUtilities.exprToLinq predicate - let! ret = dbSet.FirstOrDefaultAsync(predicate = pred) |> Async.AwaitTask + let! ret = + dbSet.FirstOrDefaultAsync(predicate = pred) + |> Async.AwaitTask return FSharpUtilities.OptionOfNullableObj ret } let tryFilterFirstTaskAsync predicate (dbSet: #IQueryable<_>) = - tryFilterFirstAsync predicate dbSet |> Async.StartAsTask + tryFilterFirstAsync predicate dbSet + |> Async.StartAsTask let tryFilterFirst predicate (dbSet: #IQueryable<_>) = let pred = FSharpUtilities.exprToLinq predicate @@ -175,7 +200,9 @@ type IQueryable<'T> with member this.TryFirstAsync expr = async { - let! ret = this.FirstOrDefaultAsync(predicate = expr) |> Async.AwaitTask + let! ret = + this.FirstOrDefaultAsync(predicate = expr) + |> Async.AwaitTask return FSharpUtilities.OptionOfNullableObj ret } @@ -184,4 +211,5 @@ type IQueryable<'T> with this.TryFirstAsync(expr) |> Async.StartAsTask member this.TryFirst expr = - this.FirstOrDefault(predicate = expr) |> FSharpUtilities.OptionOfNullableObj + this.FirstOrDefault(predicate = expr) + |> FSharpUtilities.OptionOfNullableObj diff --git a/src/EFCore.FSharp/EFCoreFSharpServices.fs b/src/EFCore.FSharp/EFCoreFSharpServices.fs index 4578823..cd8c267 100644 --- a/src/EFCore.FSharp/EFCoreFSharpServices.fs +++ b/src/EFCore.FSharp/EFCoreFSharpServices.fs @@ -17,7 +17,8 @@ type EFCoreFSharpServices(scaffoldOptions: ScaffoldOptions) = new() = EFCoreFSharpServices(ScaffoldOptions.Default) - static member Default = EFCoreFSharpServices() :> IDesignTimeServices + static member Default = + EFCoreFSharpServices() :> IDesignTimeServices static member WithScaffoldOptions scaffoldOptions = EFCoreFSharpServices scaffoldOptions :> IDesignTimeServices diff --git a/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs b/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs index 34496b4..c811413 100644 --- a/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs +++ b/src/EFCore.FSharp/Extensions/ModelBuilderExtensions.fs @@ -21,10 +21,17 @@ module Extensions = member this.UseValueConverterForType(``type``: Type, converter: ValueConverter) = this.Model.GetEntityTypes() - |> Seq.iter (fun e -> - e.ClrType.GetProperties() - |> Seq.filter (fun p -> p.PropertyType = ``type``) - |> Seq.iter (fun p -> this.Entity(e.Name).Property(p.Name).HasConversion(converter) |> ignore)) + |> Seq.iter + (fun e -> + e.ClrType.GetProperties() + |> Seq.filter (fun p -> p.PropertyType = ``type``) + |> Seq.iter + (fun p -> + this + .Entity(e.Name) + .Property(p.Name) + .HasConversion(converter) + |> ignore)) this @@ -33,9 +40,11 @@ module Extensions = let makeOptionConverter t = let underlyingType = SharedTypeExtensions.unwrapOptionType t - let converterType = genericOptionConverterType.MakeGenericType(underlyingType) + let converterType = + genericOptionConverterType.MakeGenericType(underlyingType) - let converter = converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter + let converter = + converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter converter @@ -55,18 +64,23 @@ module Extensions = member this.RegisterSingleUnionCases() = let makeSingleUnionCaseConverter tUnion = - let underlyingType = SharedTypeExtensions.unwrapSingleCaseUnion tUnion + let underlyingType = + SharedTypeExtensions.unwrapSingleCaseUnion tUnion let converterType = genericSingleCaseUnionConverterType.MakeGenericType(underlyingType, tUnion) - let converter = converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter + let converter = + converterType.GetConstructor([||]).Invoke([||]) :?> ValueConverter converter let converterDetails = this.Model.GetEntityTypes() - |> Seq.filter (fun p -> not <| SharedTypeExtensions.isSingleCaseUnion p.ClrType) + |> Seq.filter + (fun p -> + not + <| SharedTypeExtensions.isSingleCaseUnion p.ClrType) |> Seq.collect (fun e -> e.ClrType.GetProperties()) |> Seq.filter (fun p -> SharedTypeExtensions.isSingleCaseUnion p.PropertyType) |> Seq.map (fun p -> (p, (makeSingleUnionCaseConverter p.PropertyType))) @@ -93,7 +107,8 @@ module Extensions = type DbContextOptionsBuilder with member this.UseFSharpTypes() = let extension = - let found = this.Options.FindExtension() + let found = + this.Options.FindExtension() if notNull found then found @@ -101,6 +116,7 @@ module Extensions = fSharpTypeOptionsExtensionInstance - (this :> IDbContextOptionsBuilderInfrastructure).AddOrUpdateExtension(extension) + (this :> IDbContextOptionsBuilderInfrastructure) + .AddOrUpdateExtension(extension) this diff --git a/src/EFCore.FSharp/Internal/FSharpHelper.fs b/src/EFCore.FSharp/Internal/FSharpHelper.fs index 04f11de..03f148b 100644 --- a/src/EFCore.FSharp/Internal/FSharpHelper.fs +++ b/src/EFCore.FSharp/Internal/FSharpHelper.fs @@ -147,9 +147,9 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = | true, value -> value | _ -> if t |> isNullableType then - sprintf "Nullable<%s>" (this.ReferenceFullName (t |> unwrapNullableType) useFullName) + sprintf "Nullable<%s>" (this.ReferenceFullName(t |> unwrapNullableType) useFullName) elif t |> isOptionType then - sprintf "%s option" (this.ReferenceFullName (t |> unwrapOptionType) useFullName) + sprintf "%s option" (this.ReferenceFullName(t |> unwrapOptionType) useFullName) else let builder = StringBuilder() @@ -159,7 +159,9 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = builder.Append(name) |> string if t.IsArray then - builder.Append(this.ReferenceFullName (t.GetElementType()) false).Append("[") + builder + .Append(this.ReferenceFullName(t.GetElementType()) false) + .Append("[") |> ignore match t.GetArrayRank() with @@ -168,7 +170,9 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = builder |> string elif t.IsNested then - builder.Append(this.ReferenceFullName (t.DeclaringType) false).Append(".") + builder + .Append(this.ReferenceFullName(t.DeclaringType) false) + .Append(".") |> ignore returnName () @@ -176,7 +180,10 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = returnName () member private this.ensureDecimalPlaces(number: string) = - if number.IndexOf('.') >= 0 then number else number + ".0" + if number.IndexOf('.') >= 0 then + number + else + number + ".0" member private this.literalString(value: string) = "\"" @@ -191,21 +198,27 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member private this.literalByte(value: byte) = sprintf "(byte %d)" value - member private this.literalByteArray(values: byte[]) = + member private this.literalByteArray(values: byte []) = let v = values |> Seq.map this.literalByte sprintf "[| %s |]" (String.Join("; ", v)) - member private this.literalStringArray(values: string[]) = + member private this.literalStringArray(values: string []) = let v = values |> Seq.map this.literalString sprintf "[| %s |]" (String.Join("; ", v)) member private this.literalArray(values: Array) = - let v = values.Cast() |> Seq.map this.unknownLiteral + let v = + values.Cast() |> Seq.map this.unknownLiteral sprintf "[| %s |]" (String.Join("; ", v)) member private this.literalChar(value: char) = - "\'" + (if value = '\'' then "\\'" else value.ToString()) + "\'" + "\'" + + (if value = '\'' then + "\\'" + else + value.ToString()) + + "\'" member private this.literalDateTime(value: DateTime) = sprintf @@ -235,7 +248,8 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member private this.literalDecimal(value: decimal) = sprintf "%fm" value member private this.literalDouble(value: double) = - (value.ToString("R", CultureInfo.InvariantCulture)) |> this.ensureDecimalPlaces + (value.ToString("R", CultureInfo.InvariantCulture)) + |> this.ensureDecimalPlaces member private this.literalFloat32(value: float32) = sprintf "(float32 %f)" value @@ -264,7 +278,9 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let values' = if isObjType then - values |> Seq.map this.unknownLiteral |> Seq.map literalAsObj + values + |> Seq.map this.unknownLiteral + |> Seq.map literalAsObj else values |> Seq.map this.unknownLiteral @@ -279,19 +295,23 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = } - member private this.literalArray2D(values: obj[,]) = + member private this.literalArray2D(values: obj [,]) = let rowCount = Array2D.length1 values - 1 let valuesCount = Array2D.length2 values - 1 let rowContents = - [ 0..rowCount ] - |> Seq.map (fun i -> - let row' = values.[i, 0..valuesCount] + [ 0 .. rowCount ] + |> Seq.map + (fun i -> + let row' = values.[i, 0..valuesCount] - let entries = row' |> Seq.map this.unknownLiteral |> Seq.map literalAsObj + let entries = + row' + |> Seq.map this.unknownLiteral + |> Seq.map literalAsObj - sprintf "[ %s ]" (String.Join("; ", entries))) + sprintf "[ %s ]" (String.Join("; ", entries))) sprintf "array2D [ %s ]" (String.Join("; ", rowContents)) @@ -310,13 +330,14 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let results = exps - |> Seq.map (fun e -> - sb.Append(separator) |> ignore + |> Seq.map + (fun e -> + sb.Append(separator) |> ignore - let result = this.handleExpression e simple sb + let result = this.handleExpression e simple sb - separator <- ", " - result) + separator <- ", " + result) results |> Seq.forall (fun r -> r = true) @@ -335,13 +356,16 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = | ExpressionType.Convert -> sb.Append("(") |> ignore - let result = this.handleExpression (expression :?> UnaryExpression).Operand false sb + let result = + this.handleExpression (expression :?> UnaryExpression).Operand false sb - sb.Append($" :?> {this.ReferenceFullName expression.Type true})") |> ignore + sb.Append($" :?> {this.ReferenceFullName expression.Type true})") + |> ignore result | ExpressionType.New -> - sb.Append(this.ReferenceFullName expression.Type true) |> ignore + sb.Append(this.ReferenceFullName expression.Type true) + |> ignore this.handleArguments ((expression :?> NewExpression).Arguments) sb @@ -351,7 +375,8 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let callExpr = expression :?> MethodCallExpression if callExpr.Method.IsStatic then - sb.Append(this.ReferenceFullName callExpr.Method.DeclaringType true) |> ignore + sb.Append(this.ReferenceFullName callExpr.Method.DeclaringType true) + |> ignore else if (not (this.handleExpression callExpr.Object false sb)) then exitEarly <- true @@ -363,7 +388,8 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = this.handleArguments callExpr.Arguments sb | ExpressionType.Constant -> - let value = (expression :?> ConstantExpression).Value + let value = + (expression :?> ConstantExpression).Value let valueToWrite = if simple && (value.GetType() |> isNumeric) then @@ -379,7 +405,8 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let memberExpression = expression :?> MemberExpression let appendAndReturn () = - sb.Append($".{memberExpression.Member.Name}") |> ignore + sb.Append($".{memberExpression.Member.Name}") + |> ignore true @@ -388,14 +415,16 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = |> ignore appendAndReturn () - elif this.handleExpression memberExpression.Expression false sb |> not then + elif this.handleExpression memberExpression.Expression false sb + |> not then false else appendAndReturn () | ExpressionType.Add -> let binaryExpression = expression :?> BinaryExpression - if this.handleExpression binaryExpression.Left false sb |> not then + if this.handleExpression binaryExpression.Left false sb + |> not then false else sb.Append(" + ") |> ignore @@ -421,19 +450,22 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let allValues = flags |> this.getFlags |> HashSet allValues - |> Seq.iter (fun a -> - let decomposedValues = this.getFlags a + |> Seq.iter + (fun a -> + let decomposedValues = this.getFlags a - if decomposedValues.Length > 1 then - decomposedValues - |> Seq.filter (fun v -> not (obj.Equals(v, a))) - |> allValues.ExceptWith) + if decomposedValues.Length > 1 then + decomposedValues + |> Seq.filter (fun v -> not (obj.Equals(v, a))) + |> allValues.ExceptWith) let folder previous current = if String.IsNullOrEmpty previous then this.getSimpleEnumValue t (Enum.GetName(t, current)) else - previous + " | " + this.getSimpleEnumValue t (Enum.GetName(t, current)) + previous + + " | " + + this.getSimpleEnumValue t (Enum.GetName(t, current)) allValues |> Seq.fold folder "" @@ -484,13 +516,18 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member private this.isIdentifierStartCharacter ch = if ch < 'a' then - if ch < 'A' then false else ch <= 'Z' || ch = '_' + if ch < 'A' then + false + else + ch <= 'Z' || ch = '_' elif ch <= 'z' then true elif ch <= '\u007F' then false else - ch |> CharUnicodeInfo.GetUnicodeCategory |> this.isLetterChar + ch + |> CharUnicodeInfo.GetUnicodeCategory + |> this.isLetterChar member private this.handleScope (scope: ICollection) (sb: StringBuilder) = if scope |> Seq.isEmpty then @@ -515,14 +552,16 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = for i = partStart to (name.Length - 1) do if name.[i] |> this.isIdentifierPartCharacter |> not then if partStart <> i then - sb.Append(name.Substring(partStart, (i - partStart))) |> ignore + sb.Append(name.Substring(partStart, (i - partStart))) + |> ignore partStart <- i + 1 if partStart <> name.Length then sb.Append(name.Substring(partStart)) |> ignore - if sb.Length = 0 || sb.[0] |> this.isIdentifierStartCharacter |> not then + if sb.Length = 0 + || sb.[0] |> this.isIdentifierStartCharacter |> not then sb.Insert(0, "_") |> ignore let identifier = sb |> this.handleScope scope @@ -533,8 +572,12 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = identifier member private this.buildFragment - (fragment: MethodCallCodeFragment, typeQualified, instanceIdentifier, (indent: int)) - = + ( + fragment: MethodCallCodeFragment, + typeQualified, + instanceIdentifier, + (indent: int) + ) = let builder = IndentedStringBuilder() let mutable current = fragment @@ -546,11 +589,9 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = | _ -> sb.Append(this.unknownLiteral arg) if typeQualified then - if - isNull instanceIdentifier - || isNull fragment.MethodInfo - || notNull fragment.ChainedCall - then + if isNull instanceIdentifier + || isNull fragment.MethodInfo + || notNull fragment.ChainedCall then raise (ArgumentException DesignStrings.CannotGenerateTypeQualifiedMethodCall) builder.Append $"%s{fragment.DeclaringType}.%s{fragment.Method}(%s{instanceIdentifier}" @@ -569,13 +610,16 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = builder.AppendLine().IncrementIndent() |> ignore while notNull current do - builder.Append(sprintf ".%s(" current.Method) |> ignore + builder.Append(sprintf ".%s(" current.Method) + |> ignore for i in [ 0 .. current.Arguments.Count - 1 ] do if i <> 0 then builder.Append(", ") |> ignore - builder |> processArg current.Arguments.[i] |> ignore + builder + |> processArg current.Arguments.[i] + |> ignore builder.Append(")") |> ignore @@ -605,7 +649,8 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = builder.IncrementIndent() |> ignore for l in lines do - builder.AppendLines(l + " |> ignore", false) |> ignore + builder.AppendLines(l + " |> ignore", false) + |> ignore builder.Append(")") |> string @@ -637,7 +682,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = | :? UInt64 as e -> this.literalUInt64 e | :? UInt16 as e -> this.literalUInt16 e | :? BigInteger as e -> this.literalBigInteger e - | :? (string[]) as e -> this.literalStringArray e + | :? (string []) as e -> this.literalStringArray e | :? Array as e -> this.literalArray e | :? Type as t -> this.ReferenceFullName t false | :? NestedClosureCodeFragment as n -> this.buildNestedFragment (n, 0) @@ -645,27 +690,33 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = let literalType = value.GetType() - let mapping = relationalTypeMappingSource.FindMapping literalType + let mapping = + relationalTypeMappingSource.FindMapping literalType if isNull mapping then let t = value.GetType() let type' = - if t |> isNullableType then t |> unwrapNullableType - elif t |> isOptionType then t |> unwrapOptionType - else t + if t |> isNullableType then + t |> unwrapNullableType + elif t |> isOptionType then + t |> unwrapOptionType + else + t invalidOp (type' |> DesignStrings.UnknownLiteral) else let builder = IndentedStringBuilder() let expression = mapping.GenerateCodeLiteral(value) - let handled = this.handleExpression expression false builder + let handled = + this.handleExpression expression false builder if handled then builder.ToString() else - let args = ((expression.ToString()), (displayName literalType false false)) + let args = + ((expression.ToString()), (displayName literalType false false)) args |> DesignStrings.LiteralExpressionNotSupported @@ -693,7 +744,10 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = sprintf "(fun %s -> (%s) :> obj)" fragment.Parameter props member this.Fragment(fragment: AttributeCodeFragment) = - let args = fragment.Arguments |> Seq.map this.unknownLiteral |> join ", " + let args = + fragment.Arguments + |> Seq.map this.unknownLiteral + |> join ", " let namedArgs = fragment.NamedArguments @@ -701,7 +755,9 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = |> join ", " let allArgs = - [ args; namedArgs ] |> List.filter (String.IsNullOrEmpty >> not) |> join ", " + [ args; namedArgs ] + |> List.filter (String.IsNullOrEmpty >> not) + |> join ", " if String.IsNullOrEmpty allArgs then sprintf "[<%s>]" (this.ReferenceFullName fragment.Type false) @@ -715,8 +771,12 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = this.IdentifierWithScope name scope member this.Identifier - (name: string, value: 'T, scope: IDictionary, capitalize: Nullable) - : string = + ( + name: string, + value: 'T, + scope: IDictionary, + capitalize: Nullable + ) : string = let identifier = if isNull (scope :> obj) then this.IdentifierWithScope name [||] @@ -738,7 +798,9 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = lambdaIdentifier let props = - properties |> Seq.map (fun p -> lambdaIdentifier' + "." + p) |> join ", " + properties + |> Seq.map (fun p -> lambdaIdentifier' + "." + p) + |> join ", " sprintf "(fun %s -> (%s) :> obj)" lambdaIdentifier' props @@ -754,11 +816,13 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = lambdaIdentifier let props = - properties |> Seq.map (fun p -> lambdaIdentifier' + "." + p.Name) |> join ", " + properties + |> Seq.map (fun p -> lambdaIdentifier' + "." + p.Name) + |> join ", " sprintf "(fun %s -> (%s) :> obj)" lambdaIdentifier' props - member this.Literal(values: obj[,]) : string = this.literalArray2D values + member this.Literal(values: obj [,]) : string = this.literalArray2D values member this.Literal(value: Nullable<'T>) : string = this.unknownLiteral value @@ -811,7 +875,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.Literal(value: UInt64) = this.literalUInt64 value - member this.Literal(values: 'T[], vertical: bool) : string = + member this.Literal(values: 'T [], vertical: bool) : string = let isObjType = typeof<'T> = typeof this.literalList (values |> Seq.cast |> ResizeArray) vertical isObjType @@ -829,7 +893,7 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.Literal(t: Type, fullName: Nullable) = this.ReferenceFullName t (fullName.GetValueOrDefault()) - member this.Namespace([] name: string[]) : string = + member this.Namespace([] name: string []) : string = let join (ns': string array) = String.Join(".", ns') let ns = @@ -840,7 +904,10 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = |> Array.filter (String.IsNullOrEmpty >> not) |> join - if String.IsNullOrEmpty ns then "_" else ns + if String.IsNullOrEmpty ns then + "_" + else + ns member this.Reference(t: Type, fullName) : string = this.ReferenceFullName t (fullName.GetValueOrDefault()) @@ -848,8 +915,12 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.UnknownLiteral(value: obj) : string = this.unknownLiteral value member this.XmlComment(comment: string, indent: int) : string = - let lines = comment.Split([| '\n' |], StringSplitOptions.None) - lines |> Seq.map (fun l -> sprintf "/// %s" (l.TrimEnd())) |> join "\n" + let lines = + comment.Split([| '\n' |], StringSplitOptions.None) + + lines + |> Seq.map (fun l -> sprintf "/// %s" (l.TrimEnd())) + |> join "\n" member this.Arguments(values: System.Collections.Generic.IEnumerable) : string = values |> Seq.map this.unknownLiteral |> join ", " @@ -857,11 +928,21 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.GetRequiredUsings(``type``: Type) : System.Collections.Generic.IEnumerable = Seq.empty member this.Statement - (node, collectedNamespaces, unsafeAccessors, constantReplacements, memberAccessReplacements) - : string = + ( + node, + collectedNamespaces, + unsafeAccessors, + constantReplacements, + memberAccessReplacements + ) : string = raise (NotSupportedException "F# expression statements are not supported") member this.Expression - (node, collectedNamespaces, unsafeAccessors, constantReplacements, memberAccessReplacements) - : string = + ( + node, + collectedNamespaces, + unsafeAccessors, + constantReplacements, + memberAccessReplacements + ) : string = raise (NotSupportedException "F# expression generation is not supported") diff --git a/src/EFCore.FSharp/Internal/FSharpUtilities.fs b/src/EFCore.FSharp/Internal/FSharpUtilities.fs index 031a60f..ea6eac2 100644 --- a/src/EFCore.FSharp/Internal/FSharpUtilities.fs +++ b/src/EFCore.FSharp/Internal/FSharpUtilities.fs @@ -17,7 +17,7 @@ module FSharpUtilities = let private _primitiveTypeNames = [ (typeof, "bool") (typeof, "byte") - (typeof, "byte[]") + (typeof, "byte[]") (typeof, "sbyte") (typeof, "char") (typeof, "Int16") @@ -41,7 +41,10 @@ module FSharpUtilities = |> dict let private escapeString (str: string) = - str.Replace("\\", "\\\\").Replace("\"", "\\\"").Replace("\t", "\\t") + str + .Replace("\\", "\\\\") + .Replace("\"", "\\\"") + .Replace("\t", "\\t") let private escapeVerbatimString (str: string) = str.Replace("\"", "\"\"") @@ -49,7 +52,10 @@ module FSharpUtilities = "new byte[] {" + String.Join(", ", value) + "}" let private generateLiteralStringArray (value: string array) = - "[| " + (value |> Array.fold (fun c n -> c + "\"" + n + "\"; ") "") + "|]" + "[| " + + (value + |> Array.fold (fun c n -> c + "\"" + n + "\"; ") "") + + "|]" let private generateLiteralBool (value: bool) = if value then "true" else "false" @@ -222,11 +228,12 @@ module FSharpUtilities = let args = t.GenericTypeArguments - |> Array.map (fun t' -> - if isNull t' then - failwithf "%s has a null arg" t.Name - else - t' |> getTypeName) + |> Array.map + (fun t' -> + if isNull t' then + failwithf "%s has a null arg" t.Name + else + t' |> getTypeName) |> join ", " match _fsharpTypeNames.TryGetValue genericTypeDefName with @@ -260,15 +267,21 @@ module FSharpUtilities = let generate (methodCallCodeFragment: MethodCallCodeFragment) = let parameters = - methodCallCodeFragment.Arguments |> Seq.map generateLiteral |> join ", " + methodCallCodeFragment.Arguments + |> Seq.map generateLiteral + |> join ", " sprintf ".%s(%s)" methodCallCodeFragment.Method parameters let OptionOfNullableObj v : 'a option = - (v: 'a) |> box |> Option.ofObj |> Option.map (fun x -> x :?> 'a) + (v: 'a) + |> box + |> Option.ofObj + |> Option.map (fun x -> x :?> 'a) let exprToLinq (expr: Expr<'a -> 'b>) = - let linq = LeafExpressionConverter.QuotationToExpression expr + let linq = + LeafExpressionConverter.QuotationToExpression expr let call = linq :?> MethodCallExpression let lambda = call.Arguments.[0] :?> LambdaExpression diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs index 582a70e..0fcfe0c 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationOperationGenerator.fs @@ -15,8 +15,14 @@ open EntityFrameworkCore.FSharp type FSharpMigrationOperationGenerator(code: ICSharpHelper) = - let toOnedimensionalArray firstDimension (a: obj[,]) = - Array.init a.Length (fun i -> if firstDimension then a.[i, 0] else a.[0, i]) + let toOnedimensionalArray firstDimension (a: obj [,]) = + Array.init + a.Length + (fun i -> + if firstDimension then + a.[i, 0] + else + a.[0, i]) let sanitiseName name = if FSharpUtilities.isKeyword name then @@ -49,7 +55,8 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if nullableParameter.HasValue then let value = nullableParameter |> code.UnknownLiteral - $",%s{sanitiseName name} = Nullable(%s{value})" |> Some + $",%s{sanitiseName name} = Nullable(%s{value})" + |> Some else None @@ -60,12 +67,18 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = |> Seq.map (fun a -> $".Annotation(%s{code.Literal a.Name}, %s{code.UnknownLiteral a.Value})") if lines |> Seq.isEmpty then - if includeIgnore then ") |> ignore" else ")" + if includeIgnore then + ") |> ignore" + else + ")" elif lines |> Seq.length = 1 then let line = lines |> Seq.head - if includeIgnore then $"){line} |> ignore" else $"){line}" + if includeIgnore then + $"){line} |> ignore" + else + $"){line}" else let last = lines |> Seq.last @@ -73,7 +86,12 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = let tail = lines |> Seq.tail - |> Seq.map (fun l -> if includeIgnore && l = last then l + " |> ignore" else l) + |> Seq.map + (fun l -> + if includeIgnore && l = last then + l + " |> ignore" + else + l) stringBuilder { ")" + (lines |> Seq.head) @@ -96,7 +114,9 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = let last = lines |> Seq.last let tail = - lines |> Seq.tail |> Seq.map (fun l -> if l = last then l + " |> ignore" else l) + lines + |> Seq.tail + |> Seq.map (fun l -> if l = last then l + " |> ignore" else l) stringBuilder { lines |> Seq.head @@ -214,7 +234,8 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if isOptionType op.ClrType then $").SetValueConverter(OptionConverter<%s{op.ClrType |> unwrapOptionType |> code.Reference}> ()" - let hasNoOldAnnotations = op.OldColumn.GetAnnotations() |> Seq.isEmpty + let hasNoOldAnnotations = + op.OldColumn.GetAnnotations() |> Seq.isEmpty annotations hasNoOldAnnotations (op.GetAnnotations()) @@ -230,7 +251,8 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = indent { - let hasNoOldAnnotations = op.OldDatabase.GetAnnotations() |> Seq.isEmpty + let hasNoOldAnnotations = + op.OldDatabase.GetAnnotations() |> Seq.isEmpty annotations hasNoOldAnnotations (op.GetAnnotations()) @@ -255,7 +277,8 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = writeNullableParameterIfValue "oldMaxValue " op.OldSequence.MaxValue writeParameterIfTrue op.OldSequence.IsCyclic "oldCyclic" "true" - let hasNoOldAnnotations = op.OldSequence.GetAnnotations() |> Seq.isEmpty + let hasNoOldAnnotations = + op.OldSequence.GetAnnotations() |> Seq.isEmpty annotations hasNoOldAnnotations (op.GetAnnotations()) @@ -272,7 +295,8 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = writeName op.Name writeSchema op.Schema - let hasNoOldAnnotations = op.OldTable.GetAnnotations() |> Seq.isEmpty + let hasNoOldAnnotations = + op.OldTable.GetAnnotations() |> Seq.isEmpty annotations hasNoOldAnnotations (op.GetAnnotations()) @@ -375,7 +399,11 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = ",columns = (fun table -> " "{|" - indent { op.Columns |> Seq.filter notNull |> Seq.map writeColumn } + indent { + op.Columns + |> Seq.filter notNull + |> Seq.map writeColumn + } "|})" } @@ -383,7 +411,10 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = let writeUniqueConstraint (uc: AddUniqueConstraintOperation) = let constraints = - uc.Columns |> Seq.map (fun c -> map.[c]) |> Seq.toList |> code.Lambda + uc.Columns + |> Seq.map (fun c -> map.[c]) + |> Seq.toList + |> code.Lambda stringBuilder { $"table.UniqueConstraint({code.Literal uc.Name}, {constraints}" @@ -404,12 +435,16 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = "table.ForeignKey(" let constraints = - fk.Columns |> Seq.map (fun c -> map.[c]) |> Seq.toList |> code.Lambda + fk.Columns + |> Seq.map (fun c -> map.[c]) + |> Seq.toList + |> code.Lambda indent { writeName fk.Name - if fk.Columns.Length = 1 || isNull fk.PrincipalColumns then + if fk.Columns.Length = 1 + || isNull fk.PrincipalColumns then $",column = {constraints}" else $",columns = {constraints}" @@ -447,16 +482,22 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = let pkName = op.PrimaryKey.Name |> code.Literal let pkColumns = - op.PrimaryKey.Columns |> Seq.map (fun c -> map.[c]) |> Seq.toList |> code.Lambda + op.PrimaryKey.Columns + |> Seq.map (fun c -> map.[c]) + |> Seq.toList + |> code.Lambda $"table.PrimaryKey(%s{pkName}, %s{pkColumns}" annotations true (op.PrimaryKey.GetAnnotations()) - op.UniqueConstraints |> Seq.map writeUniqueConstraint + op.UniqueConstraints + |> Seq.map writeUniqueConstraint - op.CheckConstraints |> Seq.map writeCheckConstraint + op.CheckConstraints + |> Seq.map writeCheckConstraint - op.ForeignKeys |> Seq.map writeForeignKeyConstraint + op.ForeignKeys + |> Seq.map writeForeignKeyConstraint } ")" @@ -666,7 +707,11 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if length0 = 1 && length1 = 1 then sprintf "value = %s :> obj" (op.Values.[0, 0] |> code.UnknownLiteral) elif length0 = 1 then - sprintf "values = %s" (op.Values |> toOnedimensionalArray false |> code.Literal) + sprintf + "values = %s" + (op.Values + |> toOnedimensionalArray false + |> code.Literal) elif length1 = 1 then let arr = op.Values |> toOnedimensionalArray true let lines = code.Literal(arr, true) @@ -702,9 +747,15 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if length0 = 1 && length1 = 1 then yield sprintf "keyValue = %s" (op.KeyValues.[0, 0] |> code.UnknownLiteral) elif length0 = 1 then - yield sprintf "keyValues = %s" (op.KeyValues |> toOnedimensionalArray false |> code.Literal) + yield + sprintf + "keyValues = %s" + (op.KeyValues + |> toOnedimensionalArray false + |> code.Literal) elif length1 = 1 then - let arr = op.KeyValues |> toOnedimensionalArray true + let arr = + op.KeyValues |> toOnedimensionalArray true let lines = code.Literal(arr, true) yield sprintf "keyValues = %s" lines @@ -737,9 +788,15 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if length0 = 1 && length1 = 1 then yield sprintf "keyValue = %s" (op.KeyValues.[0, 0] |> code.UnknownLiteral) elif length0 = 1 then - yield sprintf "keyValues = %s" (op.KeyValues |> toOnedimensionalArray false |> code.Literal) + yield + sprintf + "keyValues = %s" + (op.KeyValues + |> toOnedimensionalArray false + |> code.Literal) elif length1 = 1 then - let arr = op.KeyValues |> toOnedimensionalArray true + let arr = + op.KeyValues |> toOnedimensionalArray true let lines = code.Literal(arr, true) yield sprintf "keyValues = %s" lines @@ -757,7 +814,12 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = if length0 = 1 && length1 = 1 then yield sprintf "value = %s" (op.Values.[0, 0] |> code.UnknownLiteral) elif length0 = 1 then - yield sprintf "values = %s" (op.Values |> toOnedimensionalArray false |> code.Literal) + yield + sprintf + "values = %s" + (op.Values + |> toOnedimensionalArray false + |> code.Literal) elif length1 = 1 then let arr = op.Values |> toOnedimensionalArray true let lines = code.Literal(arr, true) @@ -831,7 +893,9 @@ type FSharpMigrationOperationGenerator(code: ICSharpHelper) = | :? UpdateDataOperation as op' -> op' |> generateUpdateDataOperation | :? AddCheckConstraintOperation as op' -> op' |> generateAddCheckConstraintOperation | :? DropCheckConstraintOperation as op' -> op' |> generateDropCheckConstraintOperation - | _ -> op |> invalidOp ((op.GetType()) |> DesignStrings.UnknownOperation) // The failure case + | _ -> + op + |> invalidOp ((op.GetType()) |> DesignStrings.UnknownOperation) // The failure case builderName + result diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs index 1f18f19..2e0cdce 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsGenerator.fs @@ -26,9 +26,11 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies: FSharpMigration let code = fSharpDependencies.FSharpHelper - let generator = fSharpDependencies.FSharpMigrationOperationGenerator + let generator = + fSharpDependencies.FSharpMigrationOperationGenerator - let snapshot = fSharpDependencies.FSharpSnapshotGenerator + let snapshot = + fSharpDependencies.FSharpSnapshotGenerator // Due to api shape we're currently forced to work around the fact EF expects 2 files per migration let mutable tempUpOperations = list.Empty @@ -44,7 +46,9 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies: FSharpMigration "Microsoft.EntityFrameworkCore.Migrations" "Microsoft.EntityFrameworkCore.Storage.ValueConversion" - if contextType.Namespace |> String.IsNullOrEmpty |> not then + if contextType.Namespace + |> String.IsNullOrEmpty + |> not then contextType.Namespace } |> Seq.toList @@ -58,12 +62,15 @@ type FSharpMigrationsGenerator(dependencies, fSharpDependencies: FSharpMigration (downOperations) (model) = - let allOperations = (upOperations |> Seq.append downOperations) + let allOperations = + (upOperations |> Seq.append downOperations) - let operationNamespaces = this.GetNamespaces allOperations |> Seq.toList + let operationNamespaces = + this.GetNamespaces allOperations |> Seq.toList let namespaces = - (getDefaultNamespaces contextType @ operationNamespaces) + (getDefaultNamespaces contextType + @ operationNamespaces) |> sortNamespaces |> Seq.distinct diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs index e88b8a9..391ec72 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpMigrationsScaffolder.fs @@ -11,7 +11,9 @@ type FSharpMigrationsScaffolder(dependencies) = // Copy of (modulo custom code changes) https://github.com/aspnet/EntityFrameworkCore/blob/d8b7ebbfabff3d2e8560c24b1ff14d1f4244ca6a/src/EFCore.Design/Migrations/Design/MigrationsScaffolder.cs#L365 override this.Save(projectDir, migration: ScaffoldedMigration, outputDir, dryRun) = - let lastMigrationFileName = migration.PreviousMigrationId + migration.FileExtension + let lastMigrationFileName = + migration.PreviousMigrationId + + migration.FileExtension let migrationDirectory = if outputDir |> notNull then @@ -23,18 +25,26 @@ type FSharpMigrationsScaffolder(dependencies) = Path.Combine(migrationDirectory, migration.MigrationId + migration.FileExtension) let migrationMetadataFile = - Path.Combine(migrationDirectory, migration.MigrationId + ".Designer" + migration.FileExtension) + Path.Combine( + migrationDirectory, + migration.MigrationId + + ".Designer" + + migration.FileExtension + ) - let modelSnapshotFileName = migration.SnapshotName + migration.FileExtension + let modelSnapshotFileName = + migration.SnapshotName + migration.FileExtension let modelSnapshotDirectory = this.GetDirectory(projectDir, modelSnapshotFileName, migration.SnapshotSubnamespace) - let modelSnapshotFile = Path.Combine(modelSnapshotDirectory, modelSnapshotFileName) + let modelSnapshotFile = + Path.Combine(modelSnapshotDirectory, modelSnapshotFileName) dependencies.OperationReporter.WriteVerbose(DesignStrings.WritingMigration(migrationFile)) - Directory.CreateDirectory(migrationDirectory) |> ignore + Directory.CreateDirectory(migrationDirectory) + |> ignore (* Custom code This is all we need to support an F# compatible file structure @@ -51,7 +61,8 @@ type FSharpMigrationsScaffolder(dependencies) = dependencies.OperationReporter.WriteVerbose(DesignStrings.WritingSnapshot(modelSnapshotFile)) - Directory.CreateDirectory(modelSnapshotDirectory) |> ignore + Directory.CreateDirectory(modelSnapshotDirectory) + |> ignore if not dryRun then File.WriteAllText(modelSnapshotFile, (migration.SnapshotCode: string), Encoding.UTF8) diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs index 6310d8c..8e80590 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs @@ -16,8 +16,11 @@ open Microsoft.EntityFrameworkCore.Storage open EntityFrameworkCore.FSharp type FSharpSnapshotGenerator - (code: ICSharpHelper, mappingSource: IRelationalTypeMappingSource, annotationCodeGenerator: IAnnotationCodeGenerator) - = + ( + code: ICSharpHelper, + mappingSource: IRelationalTypeMappingSource, + annotationCodeGenerator: IAnnotationCodeGenerator + ) = let mutable _typeQualifiedCalls: string option = None @@ -33,9 +36,12 @@ type FSharpSnapshotGenerator if typeMapping |> isNull then let mapping = mappingSource.FindMapping(p) - if mapping |> isNull then None - elif mapping.Converter |> isNull then None - else mapping.Converter |> Some + if mapping |> isNull then + None + elif mapping.Converter |> isNull then + None + else + mapping.Converter |> Some elif typeMapping.Converter |> isNull then None else @@ -59,31 +65,32 @@ type FSharpSnapshotGenerator let typeQualifiedCalls = ResizeArray() fluentApiCalls - |> Seq.iter (fun call -> - if - notNull call.MethodInfo - && call.MethodInfo.IsStatic - && (isNull call.MethodInfo.DeclaringType - || call.MethodInfo.DeclaringType.Assembly - <> typeof.Assembly) - then - typeQualifiedCalls.Add call - else - chainedCall <- - match chainedCall with - | None -> Some call - | Some c -> Some(c.Chain(call))) + |> Seq.iter + (fun call -> + if notNull call.MethodInfo + && call.MethodInfo.IsStatic + && (isNull call.MethodInfo.DeclaringType + || call.MethodInfo.DeclaringType.Assembly + <> typeof.Assembly) then + typeQualifiedCalls.Add call + else + chainedCall <- + match chainedCall with + | None -> Some call + | Some c -> Some(c.Chain(call))) // Append remaining raw annotations which did not get generated as Fluent API calls annotations.Values |> Seq.sortBy (fun a -> a.Name) - |> Seq.iter (fun a -> - let call = MethodCallCodeFragment(hasAnnotationMethodInfo, a.Name, a.Value) + |> Seq.iter + (fun a -> + let call = + MethodCallCodeFragment(hasAnnotationMethodInfo, a.Name, a.Value) - chainedCall <- - match chainedCall with - | None -> Some call - | Some c -> Some(c.Chain(call))) + chainedCall <- + match chainedCall with + | None -> Some call + | Some c -> Some(c.Chain(call))) let chainedCalls = @@ -94,23 +101,29 @@ type FSharpSnapshotGenerator else stringBuilder { - if leadingNewLine then - "" + if leadingNewLine then "" - (code.Fragment(c, builderName, false)) + " |> ignore" + (code.Fragment(c, builderName, false)) + + " |> ignore" } - | None -> if inChainedCall then "|> ignore" else "" + | None -> + if inChainedCall then + "|> ignore" + else + "" let buildTypeQualifiedCall call = - code.Fragment(call, builderName, typeQualified = true) + " |> ignore" + code.Fragment(call, builderName, typeQualified = true) + + " |> ignore" let typeQualifiedCalls = if typeQualifiedCalls.Count > 0 then stringBuilder { "" - typeQualifiedCalls |> Seq.map buildTypeQualifiedCall + typeQualifiedCalls + |> Seq.map buildTypeQualifiedCall } |> Some else @@ -128,13 +141,17 @@ type FSharpSnapshotGenerator | true, defaultValue -> let valueConverter = if defaultValue <> (box DBNull.Value) then - let valueConverter = property.GetValueConverter() |> Option.ofObj + let valueConverter = + property.GetValueConverter() |> Option.ofObj let typeMap = - if property.FindTypeMapping() |> Option.ofObj |> Option.isSome then + if property.FindTypeMapping() + |> Option.ofObj + |> Option.isSome then property.FindTypeMapping() |> Option.ofObj else - (mappingSource.FindMapping(property) :> CoreTypeMapping) |> Option.ofObj + (mappingSource.FindMapping(property) :> CoreTypeMapping) + |> Option.ofObj match valueConverter, typeMap with | Some v, _ -> v |> Option.ofObj @@ -151,7 +168,8 @@ type FSharpSnapshotGenerator code.UnknownLiteral(value) - $".HasDefaultValue({appendValueConverter})" |> Some + $".HasDefaultValue({appendValueConverter})" + |> Some | _ -> None @@ -161,7 +179,9 @@ type FSharpSnapshotGenerator |> annotationsToDictionary let columnType (p: IProperty) = - let columnType = p.GetColumnType() ?= mappingSource.GetMapping(p).StoreType + let columnType = + p.GetColumnType() + ?= mappingSource.GetMapping(p).StoreType code.Literal columnType @@ -176,18 +196,20 @@ type FSharpSnapshotGenerator let generateFluentApiForPrecisionAndScale = property.GetPrecision() |> Option.ofNullable - |> Option.map (fun i -> - let scale = - if property.GetScale().HasValue then - $", {code.UnknownLiteral(property.GetScale().Value)}" - else - "" + |> Option.map + (fun i -> + let scale = + if property.GetScale().HasValue then + $", {code.UnknownLiteral(property.GetScale().Value)}" + else + "" - annotations.Remove(CoreAnnotationNames.Precision) |> ignore + annotations.Remove(CoreAnnotationNames.Precision) + |> ignore - $".HasPrecision({code.UnknownLiteral i}{scale})" + $".HasPrecision({code.UnknownLiteral i}{scale})" - ) + ) let generateFluentApiForUnicode = property.IsUnicode() @@ -235,7 +257,8 @@ type FSharpSnapshotGenerator | None -> p.ClrType let isPropertyRequired = - let isNullable = (isOptionType clrType || isNullableType clrType) + let isNullable = + (isOptionType clrType || isNullableType clrType) (p.IsPrimaryKey()) || (not isNullable) @@ -289,13 +312,20 @@ type FSharpSnapshotGenerator let keyBuilderName = let props = - key.Properties |> Seq.map (fun p -> (p.Name |> code.Literal)) |> join ", " + key.Properties + |> Seq.map (fun p -> (p.Name |> code.Literal)) + |> join ", " - let methodName = if isPrimary then "HasKey" else "HasAlternateKey" + let methodName = + if isPrimary then + "HasKey" + else + "HasAlternateKey" sprintf "%s.%s(%s)" entityTypeBuilderName methodName props - let keyAnnotations = generateKeyAnnotations keyBuilderName key + let keyAnnotations = + generateKeyAnnotations keyBuilderName key stringBuilder { "" @@ -317,11 +347,15 @@ type FSharpSnapshotGenerator let otherKeys = if isNull pk || pk.DeclaringEntityType.IsOwned() then keys - |> Seq.filter (fun k -> - k <> pk - && (k.GetReferencingForeignKeys() |> Seq.isEmpty - || k.GetAnnotations() - |> Seq.exists (fun a -> a.Name <> RelationalAnnotationNames.UniqueConstraintMappings))) + |> Seq.filter + (fun k -> + k <> pk + && (k.GetReferencingForeignKeys() |> Seq.isEmpty + || k.GetAnnotations() + |> Seq.exists + (fun a -> + a.Name + <> RelationalAnnotationNames.UniqueConstraintMappings))) |> Seq.map (fun k -> generateKey entityTypeBuilderName k false) else Seq.empty @@ -342,22 +376,30 @@ type FSharpSnapshotGenerator let indexParams = if isNull idx.Name then - String.Join(", ", (idx.Properties |> Seq.map (fun p -> p.Name |> code.Literal))) + String.Join( + ", ", + (idx.Properties + |> Seq.map (fun p -> p.Name |> code.Literal)) + ) else sprintf "[| %s |], %s" - (String.Join("; ", (idx.Properties |> Seq.map (fun p -> p.Name |> code.Literal)))) + (String.Join( + "; ", + (idx.Properties + |> Seq.map (fun p -> p.Name |> code.Literal)) + )) (code.Literal idx.Name) - let indexBuilderName = sprintf "%s.HasIndex(%s)" entityTypeBuilderName indexParams + let indexBuilderName = + sprintf "%s.HasIndex(%s)" entityTypeBuilderName indexParams stringBuilder { "" indexBuilderName indent { - if idx.IsUnique then - ".IsUnique()" + if idx.IsUnique then ".IsUnique()" generateIndexAnnotations indexBuilderName idx } @@ -384,7 +426,8 @@ type FSharpSnapshotGenerator "" | _ -> "" - let propsToWrite = props |> Seq.map writeProperty |> join "; " + let propsToWrite = + props |> Seq.map writeProperty |> join "; " $"{{| {propsToWrite} |}}" @@ -404,20 +447,21 @@ type FSharpSnapshotGenerator "" let schema = - if - String.IsNullOrEmpty(sequence.Schema) |> not - && sequence.Model.GetDefaultSchema() <> sequence.Schema - then + if String.IsNullOrEmpty(sequence.Schema) |> not + && sequence.Model.GetDefaultSchema() + <> sequence.Schema then $", {code.Literal sequence.Schema}" else "" let lines = seq { - if sequence.StartValue <> (Sequence.DefaultStartValue |> int64) then + if sequence.StartValue + <> (Sequence.DefaultStartValue |> int64) then $".StartsAt({code.Literal sequence.StartValue})" - if sequence.IncrementBy <> Sequence.DefaultIncrementBy then + if sequence.IncrementBy + <> Sequence.DefaultIncrementBy then $".IncrementsBy({code.Literal sequence.IncrementBy})" if sequence.MinValue <> Sequence.DefaultMinValue then @@ -476,10 +520,13 @@ type FSharpSnapshotGenerator else defaultValue () - let annotationList = entityType.GetAnnotations() |> Seq.toList + let annotationList = + entityType.GetAnnotations() |> Seq.toList let findInList (a: IAnnotation list) name = - a |> List.tryFind (fun an -> an.Name = name) |> Option.toObj + a + |> List.tryFind (fun an -> an.Name = name) + |> Option.toObj let discriminatorPropertyAnnotation = findInList annotationList CoreAnnotationNames.DiscriminatorProperty @@ -506,55 +553,77 @@ type FSharpSnapshotGenerator - let tableNameAnnotation = tryGetAnnotationByName RelationalAnnotationNames.TableName + let tableNameAnnotation = + tryGetAnnotationByName RelationalAnnotationNames.TableName - if annotationAndValueNotNull tableNameAnnotation || (isNull entityType.BaseType) then + if annotationAndValueNotNull tableNameAnnotation + || (isNull entityType.BaseType) then - let tableName = getAnnotationValue tableNameAnnotation entityType.GetTableName + let tableName = + getAnnotationValue tableNameAnnotation entityType.GetTableName if notNull tableName || notNull tableNameAnnotation then - sb.AppendLine("").Append(entityTypeBuilderName).Append(".ToTable(") |> ignore + sb + .AppendLine("") + .Append(entityTypeBuilderName) + .Append(".ToTable(") + |> ignore - let schemaAnnotation = tryGetAnnotationByName RelationalAnnotationNames.Schema + let schemaAnnotation = + tryGetAnnotationByName RelationalAnnotationNames.Schema - let schema = getAnnotationValue schemaAnnotation entityType.GetSchema + let schema = + getAnnotationValue schemaAnnotation entityType.GetSchema - if isNull tableName && (isNull schemaAnnotation || isNull schema) then - sb.Append(sprintf "(string %s)" (code.UnknownLiteral tableName)) |> ignore + if isNull tableName + && (isNull schemaAnnotation || isNull schema) then + sb.Append(sprintf "(string %s)" (code.UnknownLiteral tableName)) + |> ignore else sb.Append(code.UnknownLiteral tableName) |> ignore if notNull tableNameAnnotation then - annotations.Remove(tableNameAnnotation.Name) |> ignore + annotations.Remove(tableNameAnnotation.Name) + |> ignore let isExcludedAnnotation = tryGetAnnotationByName RelationalAnnotationNames.IsTableExcludedFromMigrations - if notNull schema || (notNull schemaAnnotation && notNull tableName) then - if - isNull schema - && (notNull isExcludedAnnotation - && (isExcludedAnnotation.Value :?> Nullable).GetValueOrDefault() <> true) - then - sb.Append(sprintf ", (string %s)" (code.UnknownLiteral schema)) |> ignore + if notNull schema + || (notNull schemaAnnotation && notNull tableName) then + if isNull schema + && (notNull isExcludedAnnotation + && (isExcludedAnnotation.Value :?> Nullable) + .GetValueOrDefault() + <> true) then + sb.Append(sprintf ", (string %s)" (code.UnknownLiteral schema)) + |> ignore elif notNull schema then - sb.Append(sprintf ", %s" (code.UnknownLiteral schema)) |> ignore + sb.Append(sprintf ", %s" (code.UnknownLiteral schema)) + |> ignore if notNull isExcludedAnnotation then - if (isExcludedAnnotation.Value :?> Nullable).GetValueOrDefault() then - sb.Append ", (fun t -> t.ExcludeFromMigrations())" |> ignore + if (isExcludedAnnotation.Value :?> Nullable) + .GetValueOrDefault() then + sb.Append ", (fun t -> t.ExcludeFromMigrations())" + |> ignore - annotations.Remove(isExcludedAnnotation.Name) |> ignore + annotations.Remove(isExcludedAnnotation.Name) + |> ignore sb.Append ") |> ignore" |> ignore - annotations.Remove(RelationalAnnotationNames.Schema) |> ignore + annotations.Remove(RelationalAnnotationNames.Schema) + |> ignore - let viewNameAnnotation = tryGetAnnotationByName RelationalAnnotationNames.ViewName + let viewNameAnnotation = + tryGetAnnotationByName RelationalAnnotationNames.ViewName - if (annotationAndValueNotNull viewNameAnnotation || isNull entityType.BaseType) then - let viewName = getAnnotationValue viewNameAnnotation entityType.GetViewName + if (annotationAndValueNotNull viewNameAnnotation + || isNull entityType.BaseType) then + let viewName = + getAnnotationValue viewNameAnnotation entityType.GetViewName if notNull viewName then sb @@ -563,7 +632,8 @@ type FSharpSnapshotGenerator |> ignore if notNull viewNameAnnotation then - annotations.Remove(viewNameAnnotation.Name) |> ignore + annotations.Remove(viewNameAnnotation.Name) + |> ignore let viewSchemaAnnotation = tryGetAnnotationByName RelationalAnnotationNames.ViewSchema @@ -571,24 +641,32 @@ type FSharpSnapshotGenerator if annotationAndValueNotNull viewSchemaAnnotation then let viewSchemaAnnotationValue = viewSchemaAnnotation.Value :?> string - sb.Append(", ").Append(code.UnknownLiteral viewSchemaAnnotationValue) |> ignore + sb + .Append(", ") + .Append(code.UnknownLiteral viewSchemaAnnotationValue) + |> ignore - annotations.Remove(viewSchemaAnnotation.Name) |> ignore + annotations.Remove(viewSchemaAnnotation.Name) + |> ignore sb.Append ") |> ignore" |> ignore - annotations.Remove(RelationalAnnotationNames.ViewSchema) |> ignore + annotations.Remove(RelationalAnnotationNames.ViewSchema) + |> ignore - annotations.Remove(RelationalAnnotationNames.ViewDefinitionSql) |> ignore + annotations.Remove(RelationalAnnotationNames.ViewDefinitionSql) + |> ignore let functionNameAnnotation = tryGetAnnotationByName RelationalAnnotationNames.FunctionName - if annotationAndValueNotNull functionNameAnnotation || isNull entityType.BaseType then + if annotationAndValueNotNull functionNameAnnotation + || isNull entityType.BaseType then let functionName = getAnnotationValue functionNameAnnotation entityType.GetFunctionName - if notNull functionName || notNull functionNameAnnotation then + if notNull functionName + || notNull functionNameAnnotation then sb .AppendLine("") .Append(entityTypeBuilderName) @@ -598,12 +676,16 @@ type FSharpSnapshotGenerator |> ignore if notNull functionNameAnnotation then - annotations.Remove(functionNameAnnotation.Name) |> ignore + annotations.Remove(functionNameAnnotation.Name) + |> ignore - let sqlQueryAnnotation = tryGetAnnotationByName RelationalAnnotationNames.SqlQuery + let sqlQueryAnnotation = + tryGetAnnotationByName RelationalAnnotationNames.SqlQuery - if annotationAndValueNotNull sqlQueryAnnotation || isNull entityType.BaseType then - let sqlQuery = getAnnotationValue sqlQueryAnnotation entityType.GetSqlQuery + if annotationAndValueNotNull sqlQueryAnnotation + || isNull entityType.BaseType then + let sqlQuery = + getAnnotationValue sqlQueryAnnotation entityType.GetSqlQuery if notNull sqlQuery || notNull sqlQueryAnnotation then sb @@ -615,11 +697,15 @@ type FSharpSnapshotGenerator |> ignore if notNull sqlQueryAnnotation then - annotations.Remove(sqlQueryAnnotation.Name) |> ignore + annotations.Remove(sqlQueryAnnotation.Name) + |> ignore if hasDiscriminator then - sb.AppendLine("").Append(entityTypeBuilderName).Append(".HasDiscriminator") + sb + .AppendLine("") + .Append(entityTypeBuilderName) + .Append(".HasDiscriminator") |> ignore if annotationAndValueNotNull discriminatorPropertyAnnotation then @@ -628,7 +714,9 @@ type FSharpSnapshotGenerator let propertyClrType = match discriminatorProperty |> findValueConverter with - | Some c -> c.ProviderClrType |> makeNullable discriminatorProperty.IsNullable + | Some c -> + c.ProviderClrType + |> makeNullable discriminatorProperty.IsNullable | None -> discriminatorProperty.ClrType sb @@ -642,9 +730,13 @@ type FSharpSnapshotGenerator sb.Append "()" |> ignore if annotationAndValueNotNull discriminatorMappingCompleteAnnotation then - let value = discriminatorMappingCompleteAnnotation.Value + let value = + discriminatorMappingCompleteAnnotation.Value - sb.Append(".IsComplete(").Append(code.UnknownLiteral(value)).Append(")") + sb + .Append(".IsComplete(") + .Append(code.UnknownLiteral(value)) + .Append(")") |> ignore if annotationAndValueNotNull discriminatorValueAnnotation then @@ -660,7 +752,11 @@ type FSharpSnapshotGenerator else defaultValue - sb.Append(".HasValue(").Append(code.UnknownLiteral(value)).Append(")") |> ignore + sb + .Append(".HasValue(") + .Append(code.UnknownLiteral(value)) + .Append(")") + |> ignore sb.Append " |> ignore" |> ignore @@ -681,7 +777,9 @@ type FSharpSnapshotGenerator member private this.generateForeignKey entityTypeBuilderName (fk: IForeignKey) = let literalPropNames (properties: seq) = - properties |> Seq.map (fun p -> p.Name |> code.Literal) |> join ", " + properties + |> Seq.map (fun p -> p.Name |> code.Literal) + |> join ", " let definition = if not fk.IsOwnership then @@ -714,7 +812,8 @@ type FSharpSnapshotGenerator lines.Add $".WithOne({ptd})" lines.Add $".HasForeignKey({code.Literal fk.DeclaringEntityType.Name}, {literalPropNames fk.Properties})" - if fk.PrincipalKey <> fk.PrincipalEntityType.FindPrimaryKey() then + if fk.PrincipalKey + <> fk.PrincipalEntityType.FindPrimaryKey() then lines.Add $".HasPrincipalKey({code.Literal fk.PrincipalEntityType.Name}, {literalPropNames fk.PrincipalKey.Properties})" @@ -725,7 +824,8 @@ type FSharpSnapshotGenerator lines.Add $".HasForeignKey({literalPropNames fk.Properties})" - if fk.PrincipalKey <> fk.PrincipalEntityType.FindPrimaryKey() then + if fk.PrincipalKey + <> fk.PrincipalEntityType.FindPrimaryKey() then lines.Add $".HasPrincipalKey({literalPropNames fk.PrincipalKey.Properties})" if not fk.IsOwnership then @@ -845,7 +945,11 @@ type FSharpSnapshotGenerator | true, (true, _) -> counter <- counter + 1 | _ -> () - "b" + if counter = 0 then "" else counter.ToString() + "b" + + if counter = 0 then + "" + else + counter.ToString() else "b" @@ -890,7 +994,10 @@ type FSharpSnapshotGenerator let navigations = entityType.GetDeclaredNavigations() - |> Seq.filter (fun n -> (not n.IsOnDependent) && (not n.ForeignKey.IsOwnership)) + |> Seq.filter + (fun n -> + (not n.IsOnDependent) + && (not n.ForeignKey.IsOwnership)) stringBuilder { $"{builderName}.Entity({code.Literal entityType.Name}, (fun b ->" @@ -900,19 +1007,27 @@ type FSharpSnapshotGenerator member private this.generateEntityTypes builderName (entities: IEntityType seq) = - let entitiesToWrite = entities |> Seq.filter (findOwnership >> isNull) + let entitiesToWrite = + entities |> Seq.filter (findOwnership >> isNull) let relationships = entitiesToWrite - |> Seq.filter (fun e -> - (e |> getDeclaredForeignKeys |> Seq.isEmpty |> not) - || (e |> getDeclaredReferencingForeignKeys |> Seq.exists (fun fk -> fk.IsOwnership))) + |> Seq.filter + (fun e -> + (e |> getDeclaredForeignKeys |> Seq.isEmpty |> not) + || (e + |> getDeclaredReferencingForeignKeys + |> Seq.exists (fun fk -> fk.IsOwnership))) let navigations = entitiesToWrite - |> Seq.filter (fun e -> - e.GetDeclaredNavigations() - |> Seq.exists (fun n -> (not n.IsOnDependent) && (not n.ForeignKey.IsOwnership))) + |> Seq.filter + (fun e -> + e.GetDeclaredNavigations() + |> Seq.exists + (fun n -> + (not n.IsOnDependent) + && (not n.ForeignKey.IsOwnership))) stringBuilder { diff --git a/src/EFCore.FSharp/Migrations/Internal/FSharpMigrationsModelDiffer.fs b/src/EFCore.FSharp/Migrations/Internal/FSharpMigrationsModelDiffer.fs index 993335e..e06fdab 100644 --- a/src/EFCore.FSharp/Migrations/Internal/FSharpMigrationsModelDiffer.fs +++ b/src/EFCore.FSharp/Migrations/Internal/FSharpMigrationsModelDiffer.fs @@ -8,9 +8,15 @@ open EntityFrameworkCore.FSharp.SharedTypeExtensions open Microsoft.EntityFrameworkCore.Metadata.Internal type FSharpMigrationsModelDiffer - (typeMappingSource, migrationsAnnotations, changeDetector, updateAdapterFactory, commandBatchPreparerDependencies) = - inherit - MigrationsModelDiffer( + ( + typeMappingSource, + migrationsAnnotations, + changeDetector, + updateAdapterFactory, + commandBatchPreparerDependencies + ) = + inherit MigrationsModelDiffer + ( typeMappingSource, migrationsAnnotations, changeDetector, @@ -22,17 +28,23 @@ type FSharpMigrationsModelDiffer let clrType = p.ClrType let isPrimaryKey = p.IsPrimaryKey() - let isNullable = (isOptionType clrType || isNullableType clrType) + let isNullable = + (isOptionType clrType || isNullableType clrType) isNullable && not isPrimaryKey override _.Diff - (source: IColumn, target: IColumn, diffContext: MigrationsModelDiffer.DiffContext) - : MigrationOperation seq = + ( + source: IColumn, + target: IColumn, + diffContext: MigrationsModelDiffer.DiffContext + ) : MigrationOperation seq = - let sourceTypeProperty = (source.PropertyMappings |> Seq.head).Property + let sourceTypeProperty = + (source.PropertyMappings |> Seq.head).Property - let targetTypeProperty = (target.PropertyMappings |> Seq.head).Property + let targetTypeProperty = + (target.PropertyMappings |> Seq.head).Property (source :?> Column).IsNullable <- isNullableType sourceTypeProperty (target :?> Column).IsNullable <- isNullableType targetTypeProperty @@ -46,7 +58,8 @@ type FSharpMigrationsModelDiffer [] ``inline``: bool ) : MigrationOperation seq = - let sourceTypeProperty = (source.PropertyMappings |> Seq.head).Property + let sourceTypeProperty = + (source.PropertyMappings |> Seq.head).Property (source :?> Column).IsNullable <- isNullableType sourceTypeProperty diff --git a/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs index 29874dd..87d4210 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpDbContextGenerator.fs @@ -38,11 +38,12 @@ type FSharpDbContextGenerator = annotationCodeGenerator.GenerateFluentApiCalls(annotatable, annotations) - |> Seq.iter (fun fluentApiCall -> - lines.Add(code.Fragment(fluentApiCall)) + |> Seq.iter + (fun fluentApiCall -> + lines.Add(code.Fragment(fluentApiCall)) - if notNull fluentApiCall.Namespace then - namespaces.Add fluentApiCall.Namespace |> ignore) + if notNull fluentApiCall.Namespace then + namespaces.Add fluentApiCall.Namespace |> ignore) lines.AddRange( annotations.Values @@ -74,7 +75,9 @@ type FSharpDbContextGenerator lines.Add(sprintf ".HasPrincipalKey(%s)" principalKeyProps) let fkProps = - foreignKey.Properties |> Seq.map (fun e -> code.Literal(e.Name)) |> join ", " + foreignKey.Properties + |> Seq.map (fun e -> code.Literal(e.Name)) + |> join ", " lines.Add(sprintf ".HasForeignKey(%s)" fkProps) @@ -98,7 +101,9 @@ type FSharpDbContextGenerator else let connStringFragment = - connectionString |> providerCodeGenerator.GenerateUseProvider |> code.Fragment + connectionString + |> providerCodeGenerator.GenerateUseProvider + |> code.Fragment stringBuilder { "override this.OnConfiguring(optionsBuilder: DbContextOptionsBuilder) =" @@ -121,7 +126,8 @@ type FSharpDbContextGenerator sprintf "HasSequence<%s>" (FSharpUtilities.getTypeName (s.Type)) let parameters = - if (s.Schema |> String.IsNullOrEmpty) && (s.Model.GetDefaultSchema() <> s.Schema) then + if (s.Schema |> String.IsNullOrEmpty) + && (s.Model.GetDefaultSchema() <> s.Schema) then sprintf "%s, %s" (s.Name |> FSharpUtilities.delimitString) (s.Schema |> FSharpUtilities.delimitString) else s.Name |> FSharpUtilities.delimitString @@ -136,14 +142,19 @@ type FSharpDbContextGenerator if s.IncrementBy <> Sequence.DefaultIncrementBy then $".IncrementsBy({s.IncrementBy})" - if s.MinValue <> Nullable(Sequence.DefaultMinValue |> int64) then + if + s.MinValue + <> Nullable(Sequence.DefaultMinValue |> int64) + then $".HasMin({s.MinValue})" - if s.MaxValue <> Nullable(Sequence.DefaultMaxValue |> int64) then + if + s.MaxValue + <> Nullable(Sequence.DefaultMaxValue |> int64) + then $".HasMax({s.MaxValue})" - if s.IsCyclic then - $".IsCyclic()" + if s.IsCyclic then $".IsCyclic()" "" } @@ -163,7 +174,10 @@ type FSharpDbContextGenerator let generatePropertyNameArray (properties: IReadOnlyList) = - let props = properties |> Seq.map (fun p -> code.Literal p.Name) |> join "; " + let props = + properties + |> Seq.map (fun p -> code.Literal p.Name) + |> join "; " sprintf "[| %s |]" props @@ -189,7 +203,8 @@ type FSharpDbContextGenerator if lines |> Seq.isEmpty then None else - let head = entityLambdaIdentifier + (lines |> Seq.head) + let head = + entityLambdaIdentifier + (lines |> Seq.head) let tail = lines |> Seq.tail @@ -210,13 +225,15 @@ type FSharpDbContextGenerator |> Some let generateKeyGuardClause (key: IKey) (annotations: IAnnotation seq) useDataAnnotations explicitName = - if key.Properties.Count = 1 && annotations |> Seq.isEmpty then + if key.Properties.Count = 1 + && annotations |> Seq.isEmpty then match key with | :? IConventionKey as concreteKey -> let keyProperties = key.Properties let concreteDeclaringProperties = - concreteKey.DeclaringEntityType.GetProperties() |> Seq.cast + concreteKey.DeclaringEntityType.GetProperties() + |> Seq.cast let concreteProperties = @@ -256,7 +273,8 @@ type FSharpDbContextGenerator let explicitName = key.GetName() <> key.GetDefaultName() - annotations.Remove(RelationalAnnotationNames.Name) |> ignore + annotations.Remove(RelationalAnnotationNames.Name) + |> ignore let earlyExit = generateKeyGuardClause key annotations.Values useDataAnnotations explicitName @@ -282,11 +300,13 @@ type FSharpDbContextGenerator let schema = entityType.GetSchema() let defaultSchema = entityType.Model.GetDefaultSchema() - let explicitSchema = not (isNull schema) && schema <> defaultSchema + let explicitSchema = + not (isNull schema) && schema <> defaultSchema let explicitTable = explicitSchema - || not (isNull tableName) && tableName <> entityType.GetDbSetName() + || not (isNull tableName) + && tableName <> entityType.GetDbSetName() if explicitTable then @@ -302,7 +322,8 @@ type FSharpDbContextGenerator let viewName = entityType.GetViewName() let viewSchema = entityType.GetViewSchema() - let explicitViewSchema = notNull viewSchema && viewSchema <> defaultSchema + let explicitViewSchema = + notNull viewSchema && viewSchema <> defaultSchema let explicitViewTable = explicitViewSchema || notNull viewName @@ -336,7 +357,8 @@ type FSharpDbContextGenerator (code.Literal(index.GetDatabaseName())) ) - annotations.Remove(RelationalAnnotationNames.Name) |> ignore + annotations.Remove(RelationalAnnotationNames.Name) + |> ignore if index.IsUnique then lines.Add(".IsUnique()") @@ -358,24 +380,29 @@ type FSharpDbContextGenerator annotationCodeGenerator.RemoveAnnotationsHandledByConventions(property, annotations) if useDataAnnotations then - annotations.Remove(RelationalAnnotationNames.ColumnName) |> ignore + annotations.Remove(RelationalAnnotationNames.ColumnName) + |> ignore - annotations.Remove(RelationalAnnotationNames.ColumnType) |> ignore + annotations.Remove(RelationalAnnotationNames.ColumnType) + |> ignore annotationCodeGenerator.GenerateDataAnnotationAttributes(property, annotations) |> ignore - else if - property.IsNullable |> not - && property.ClrType |> SharedTypeExtensions.isNullableType - && property.IsPrimaryKey() |> not - then + else if property.IsNullable |> not + && property.ClrType + |> SharedTypeExtensions.isNullableType + && property.IsPrimaryKey() |> not then lines.Add(".IsRequired()") - match property.GetConfiguredColumnType() |> isNull |> not with + match property.GetConfiguredColumnType() + |> isNull + |> not + with | true -> lines.Add($".HasColumnType({code.Literal(property.GetConfiguredColumnType())})") - annotations.Remove(RelationalAnnotationNames.ColumnType) |> ignore + annotations.Remove(RelationalAnnotationNames.ColumnType) + |> ignore | false -> () match property.GetMaxLength() |> Option.ofNullable with @@ -395,7 +422,8 @@ type FSharpDbContextGenerator match property.GetDefaultValue() |> Option.ofObj with | Some d -> - annotations.Remove(RelationalAnnotationNames.DefaultValue) |> ignore + annotations.Remove(RelationalAnnotationNames.DefaultValue) + |> ignore match d with | :? DBNull -> lines.Add(".HasDefaultValue()") @@ -407,9 +435,12 @@ type FSharpDbContextGenerator match property with | :? IConventionProperty as cp -> - match cp.GetValueGeneratedConfigurationSource() |> Option.ofNullable with + match cp.GetValueGeneratedConfigurationSource() + |> Option.ofNullable + with | Some valueGeneratedConfigurationSource when - valueGeneratedConfigurationSource <> ConfigurationSource.Convention + valueGeneratedConfigurationSource + <> ConfigurationSource.Convention && ValueGenerationConvention.GetValueGenerated(property) <> (valueGenerated |> Nullable) -> @@ -466,7 +497,10 @@ type FSharpDbContextGenerator lines.Add( sprintf ".%s(%s)" - (if fk.IsUnique then "WithOne" else "WithMany") + (if fk.IsUnique then + "WithOne" + else + "WithMany") (if isNull fk.PrincipalToDependent then "" else @@ -478,11 +512,15 @@ type FSharpDbContextGenerator let typeParam = if fk.IsUnique then - (sprintf "<%s>" ((fk.PrincipalEntityType :> ITypeBase).DisplayName())) + (sprintf + "<%s>" + ((fk.PrincipalEntityType :> ITypeBase) + .DisplayName())) else "" - let methodParams = code.Lambda(fk.PrincipalKey.Properties, "p") + let methodParams = + code.Lambda(fk.PrincipalKey.Properties, "p") lines.Add(sprintf ".HasPrincipalKey%s(%s)" typeParam methodParams) @@ -492,7 +530,10 @@ type FSharpDbContextGenerator else "" - let methodParams = fk.Properties |> Seq.map (fun p -> "d." + p.Name) |> join ", " + let methodParams = + fk.Properties + |> Seq.map (fun p -> "d." + p.Name) + |> join ", " lines.Add( sprintf ".HasForeignKey%s(fun (d:%s) -> (%s) :> obj)" typeParam fk.DeclaringEntityType.Name methodParams @@ -513,7 +554,8 @@ type FSharpDbContextGenerator generateAnnotations fk annotations lines - if not useDataAnnotations || not canUseDataAnnotations then + if not useDataAnnotations + || not canUseDataAnnotations then appendMultiLineFluentApi fk.DeclaringEntityType lines else @@ -541,9 +583,13 @@ type FSharpDbContextGenerator let explicitName = key.GetName() <> key.GetDefaultName() - keyAnnotations.Remove(RelationalAnnotationNames.Name) |> ignore + keyAnnotations.Remove(RelationalAnnotationNames.Name) + |> ignore - let props = key.Properties |> Seq.map (fun e -> code.Literal(e.Name)) |> join ", " + let props = + key.Properties + |> Seq.map (fun e -> code.Literal(e.Name)) + |> join ", " lines.Add $"j.HasKey({props})" @@ -574,11 +620,14 @@ type FSharpDbContextGenerator let schema = joinEntityType.GetSchema() let defaultSchema = joinEntityType.Model.GetDefaultSchema() - let explicitSchema = notNull schema && schema <> defaultSchema + let explicitSchema = + notNull schema && schema <> defaultSchema let parameterString = if explicitSchema then - (code.Literal tableName) + ", " + (code.Literal schema) + (code.Literal tableName) + + ", " + + (code.Literal schema) else code.Literal tableName @@ -594,7 +643,10 @@ type FSharpDbContextGenerator annotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, indexAnnotations) |> ignore - let indexProps = index.Properties |> Seq.map (fun e -> e.Name) |> Seq.toArray + let indexProps = + index.Properties + |> Seq.map (fun e -> e.Name) + |> Seq.toArray lines.Add $".HasIndex({code.Literal(indexProps)}, {code.Literal(index.GetDatabaseName())}" @@ -604,7 +656,9 @@ type FSharpDbContextGenerator generateAnnotations index indexAnnotations lines writeLines lines " |> ignore" - let indexes = joinEntityType.GetIndexes() |> Seq.map generateManyToManyIndex + let indexes = + joinEntityType.GetIndexes() + |> Seq.map generateManyToManyIndex let generateManyToManyProperties (property: IProperty) = lines.Add $"j.IndexerProperty<{code.Reference(property.ClrType)}>({code.Literal(property.Name)})" @@ -613,13 +667,13 @@ type FSharpDbContextGenerator annotationCodeGenerator.FilterIgnoredAnnotations(property.GetAnnotations()) |> annotationsToDictionary - propertyAnnotations.Remove RelationalAnnotationNames.ColumnOrder |> ignore + propertyAnnotations.Remove RelationalAnnotationNames.ColumnOrder + |> ignore - if - property.IsNullable |> not - && property.ClrType |> SharedTypeExtensions.isNullableType - && property.IsPrimaryKey() |> not - then + if property.IsNullable |> not + && property.ClrType + |> SharedTypeExtensions.isNullableType + && property.IsPrimaryKey() |> not then lines.Add ".IsRequired()" let columnType = property.GetConfiguredColumnType() @@ -627,7 +681,8 @@ type FSharpDbContextGenerator if notNull columnType then lines.Add $".HasColumnType({code.Literal(columnType)})" - propertyAnnotations.Remove RelationalAnnotationNames.ColumnType |> ignore + propertyAnnotations.Remove RelationalAnnotationNames.ColumnType + |> ignore let maxLength = property.GetMaxLength() @@ -637,13 +692,18 @@ type FSharpDbContextGenerator let precision = property.GetPrecision() let scale = property.GetScale() - if precision.HasValue && scale.GetValueOrDefault() <> 0 then + if precision.HasValue + && scale.GetValueOrDefault() <> 0 then lines.Add $".HasPrecision({code.Literal(precision.Value)}, {code.Literal(scale.Value)})" elif precision.HasValue then lines.Add $".HasPrecision({code.Literal(precision.Value)})" if property.IsUnicode().HasValue then - let value = if property.IsUnicode().Value then "" else "false" + let value = + if property.IsUnicode().Value then + "" + else + "false" lines.Add $".IsUnicode({value})" @@ -653,24 +713,26 @@ type FSharpDbContextGenerator if defaultValue = box DBNull.Value then lines.Add ".HasDefaultValue()" - propertyAnnotations.Remove RelationalAnnotationNames.DefaultValue |> ignore + propertyAnnotations.Remove RelationalAnnotationNames.DefaultValue + |> ignore elif notNull defaultValue then lines.Add ".HasDefaultValue({code.UnknownLiteral(defaultValue)})" - propertyAnnotations.Remove RelationalAnnotationNames.DefaultValue |> ignore + propertyAnnotations.Remove RelationalAnnotationNames.DefaultValue + |> ignore let valueGenerated = property.ValueGenerated let mutable isRowVersion = false let valueGeneratedConfigurationSource = - ((property :?> IConventionProperty).GetValueGeneratedConfigurationSource()) - - if - valueGeneratedConfigurationSource.HasValue - && valueGeneratedConfigurationSource.Value <> ConfigurationSource.Convention - && ValueGenerationConvention.GetValueGenerated(property) - <> Nullable(valueGenerated) - then + ((property :?> IConventionProperty) + .GetValueGeneratedConfigurationSource()) + + if valueGeneratedConfigurationSource.HasValue + && valueGeneratedConfigurationSource.Value + <> ConfigurationSource.Convention + && ValueGenerationConvention.GetValueGenerated(property) + <> Nullable(valueGenerated) then let methodName = match valueGenerated with | ValueGenerated.OnAdd -> "ValueGeneratedOnAdd" @@ -706,7 +768,8 @@ type FSharpDbContextGenerator None let properties = - joinEntityType.GetProperties() |> Seq.map generateManyToManyProperties + joinEntityType.GetProperties() + |> Seq.map generateManyToManyProperties stringBuilder { fst @@ -758,7 +821,8 @@ type FSharpDbContextGenerator let generateEntityType (entityType: IEntityType) (useDataAnnotations: bool) = - let key = generateKey (entityType.FindPrimaryKey()) entityType useDataAnnotations + let key = + generateKey (entityType.FindPrimaryKey()) entityType useDataAnnotations let annotations = annotationCodeGenerator.FilterIgnoredAnnotations(entityType.GetAnnotations()) @@ -780,7 +844,10 @@ type FSharpDbContextGenerator |> ignore let tableName = - if not useDataAnnotations || notNull (entityType.GetViewName()) then + if + not useDataAnnotations + || notNull (entityType.GetViewName()) + then generateTableName entityType else None @@ -806,15 +873,17 @@ type FSharpDbContextGenerator generateRelationship fk useDataAnnotations entityType.GetSkipNavigations() - |> Seq.map (fun skip -> - let containingKey = - skip.JoinEntityType.FindPrimaryKey().Properties.[0].GetContainingForeignKeys() - |> Seq.head - - if containingKey.PrincipalEntityType = entityType then - generateManyToMany skip |> Some - else - None) + |> Seq.map + (fun skip -> + let containingKey = + skip.JoinEntityType.FindPrimaryKey().Properties.[0] + .GetContainingForeignKeys() + |> Seq.head + + if containingKey.PrincipalEntityType = entityType then + generateManyToMany skip |> Some + else + None) } @@ -839,7 +908,8 @@ type FSharpDbContextGenerator generateAnnotations model annotations lines let typesToGenerate = - model.GetEntityTypes() |> Seq.filter (isManyToManyJoinEntityType >> not) + model.GetEntityTypes() + |> Seq.filter (isManyToManyJoinEntityType >> not) let writeEntityType (e: IEntityType) = @@ -865,11 +935,12 @@ type FSharpDbContextGenerator let lines' = lines |> Seq.tail lines' - |> Seq.mapi (fun i line -> - if i = ((lines' |> Seq.length) - 1) then - line + " |> ignore" - else - line) + |> Seq.mapi + (fun i line -> + if i = ((lines' |> Seq.length) - 1) then + line + " |> ignore" + else + line) "" } @@ -889,7 +960,8 @@ type FSharpDbContextGenerator let generateClass (model: IModel) contextName connectionString useDataAnnotations suppressOnConfiguring = let typesToGenerate = - model.GetEntityTypes() |> Seq.filter (isManyToManyJoinEntityType >> not) + model.GetEntityTypes() + |> Seq.filter (isManyToManyJoinEntityType >> not) stringBuilder { $"type %s{contextName} =" @@ -938,13 +1010,17 @@ type FSharpDbContextGenerator namespaces.Add "System" |> ignore - namespaces.Add "System.Collections.Generic" |> ignore + namespaces.Add "System.Collections.Generic" + |> ignore - namespaces.Add "Microsoft.EntityFrameworkCore" |> ignore + namespaces.Add "Microsoft.EntityFrameworkCore" + |> ignore - namespaces.Add "Microsoft.EntityFrameworkCore.Metadata" |> ignore + namespaces.Add "Microsoft.EntityFrameworkCore.Metadata" + |> ignore - namespaces.Add "EntityFrameworkCore.FSharp.Extensions" |> ignore + namespaces.Add "EntityFrameworkCore.FSharp.Extensions" + |> ignore let finalContextNamespace = if isNull contextNamespace then @@ -957,15 +1033,16 @@ type FSharpDbContextGenerator let mutable finalNamespaces = namespaces - |> Seq.sortBy (fun n -> - (match n with - | "System" -> 1 - | x when x.StartsWith("System", StringComparison.Ordinal) -> 2 - | x when x.StartsWith("Microsoft", StringComparison.Ordinal) -> 3 - | x when x.StartsWith("EntityFrameworkCore.FSharp", StringComparison.Ordinal) -> 4 - | _ -> 5), - - n) + |> Seq.sortBy + (fun n -> + (match n with + | "System" -> 1 + | x when x.StartsWith("System", StringComparison.Ordinal) -> 2 + | x when x.StartsWith("Microsoft", StringComparison.Ordinal) -> 3 + | x when x.StartsWith("EntityFrameworkCore.FSharp", StringComparison.Ordinal) -> 4 + | _ -> 5), + + n) if finalContextNamespace <> modelNamespace diff --git a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs index f5c85f6..937e62f 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs @@ -31,14 +31,18 @@ type internal AttributeWriter(name: string) = sprintf "[<%s(%s)>]" name (String.Join(", ", parameters)) type FSharpEntityTypeGenerator - (annotationCodeGenerator: IAnnotationCodeGenerator, code: ICSharpHelper, config: ScaffoldOptions) = + ( + annotationCodeGenerator: IAnnotationCodeGenerator, + code: ICSharpHelper, + config: ScaffoldOptions + ) = let createAttributeQuick = AttributeWriter >> string let primitiveTypeNames = seq { yield (typedefof, "bool") yield (typedefof, "byte") - yield (typedefof, "byte[]") + yield (typedefof, "byte[]") yield (typedefof, "sbyte") yield (typedefof, "int") yield (typedefof, "char") @@ -62,7 +66,8 @@ type FSharpEntityTypeGenerator let rec getTypeName scaffoldNullableColumnsAs (t: Type) = if t.IsArray then - (getTypeName scaffoldNullableColumnsAs (t.GetElementType())) + "[]" + (getTypeName scaffoldNullableColumnsAs (t.GetElementType())) + + "[]" else if t.GetTypeInfo().IsGenericType then if t.GetGenericTypeDefinition() = typedefof> then @@ -84,7 +89,10 @@ type FSharpEntityTypeGenerator |> Seq.map (fun t' -> getTypeName scaffoldNullableColumnsAs t') ) - genericTypeDefName + "<" + genericTypeArguments + ">" + genericTypeDefName + + "<" + + genericTypeArguments + + ">" else match primitiveTypeNames.TryGetValue t with @@ -101,12 +109,11 @@ type FSharpEntityTypeGenerator && (typeInfo.GetGenericTypeDefinition() = typedefof> || typeInfo.GetGenericTypeDefinition() = typedefof>)) - if - (not p.IsNullable) - && (p.ClrType |> isNullableOrOptionType) - && (p.IsPrimaryKey() |> not) - then - (nameof RequiredAttribute |> createAttributeQuick) |> Some + if (not p.IsNullable) + && (p.ClrType |> isNullableOrOptionType) + && (p.IsPrimaryKey() |> not) then + (nameof RequiredAttribute |> createAttributeQuick) + |> Some else None @@ -126,7 +133,8 @@ type FSharpEntityTypeGenerator else Option.None - if delimitedColumnName.IsSome || delimitedColumnType.IsSome then + if delimitedColumnName.IsSome + || delimitedColumnType.IsSome then let a = "ColumnAttribute" |> AttributeWriter match delimitedColumnName with @@ -163,13 +171,15 @@ type FSharpEntityTypeGenerator let generateKeyAttribute (property: IProperty) = if notNull (property.FindContainingPrimaryKey()) then - (nameof KeyAttribute |> createAttributeQuick) |> Some + (nameof KeyAttribute |> createAttributeQuick) + |> Some else None let generateKeylessAttribute (entityType: IEntityType) = if isNull (entityType.FindPrimaryKey()) then - (nameof KeylessAttribute |> createAttributeQuick) |> Some + (nameof KeylessAttribute |> createAttributeQuick) + |> Some else None @@ -179,14 +189,16 @@ type FSharpEntityTypeGenerator let schema = entityType.GetSchema() let defaultSchema = entityType.Model.GetDefaultSchema() - let schemaParameterNeeded = notNull schema && schema <> defaultSchema + let schemaParameterNeeded = + notNull schema && schema <> defaultSchema let isView = notNull (entityType.GetViewName()) let tableAttributeNeeded = (not isView) && (schemaParameterNeeded - || notNull tableName && tableName <> entityType.GetDbSetName()) + || notNull tableName + && tableName <> entityType.GetDbSetName()) if tableAttributeNeeded then let tableAttribute = AttributeWriter(nameof TableAttribute) @@ -204,47 +216,56 @@ type FSharpEntityTypeGenerator let indexes = entityType.GetIndexes() - |> Seq.filter (fun i -> - ConfigurationSource.Convention - <> ((i :?> IConventionIndex).GetConfigurationSource())) + |> Seq.filter + (fun i -> + ConfigurationSource.Convention + <> ((i :?> IConventionIndex).GetConfigurationSource())) let attributes = indexes - |> Seq.map (fun index -> - let annotations = - annotationCodeGenerator.FilterIgnoredAnnotations(index.GetAnnotations()) - |> annotationsToDictionary + |> Seq.map + (fun index -> + let annotations = + annotationCodeGenerator.FilterIgnoredAnnotations(index.GetAnnotations()) + |> annotationsToDictionary - annotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, annotations) + annotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, annotations) - if annotations.Count = 0 then - let indexAttribute = AttributeWriter(nameof IndexAttribute) + if annotations.Count = 0 then + let indexAttribute = AttributeWriter(nameof IndexAttribute) - index.Properties - |> Seq.iter (fun p -> indexAttribute.AddParameter $"nameof({p.Name})") + index.Properties + |> Seq.iter (fun p -> indexAttribute.AddParameter $"nameof({p.Name})") - if notNull index.Name then - indexAttribute.AddParameter $"Name = {code.Literal(index.Name)}" + if notNull index.Name then + indexAttribute.AddParameter $"Name = {code.Literal(index.Name)}" - if index.IsUnique then - indexAttribute.AddParameter $"IsUnique = {code.Literal(index.IsUnique)}" + if index.IsUnique then + indexAttribute.AddParameter $"IsUnique = {code.Literal(index.IsUnique)}" - string indexAttribute |> Some + string indexAttribute |> Some - else - None) + else + None) let output = stringBuilder { attributes } - if output.Length > 0 then Some output else None + if output.Length > 0 then + Some output + else + None let generateForeignKeyAttribute (navigation: INavigation) = - if navigation.IsOnDependent && navigation.ForeignKey.PrincipalKey.IsPrimaryKey() then - let foreignKeyAttribute = AttributeWriter(nameof ForeignKeyAttribute) + if navigation.IsOnDependent + && navigation.ForeignKey.PrincipalKey.IsPrimaryKey() then + let foreignKeyAttribute = + AttributeWriter(nameof ForeignKeyAttribute) if navigation.ForeignKey.Properties.Count > 1 then - let names = navigation.ForeignKey.Properties |> Seq.map (fun fk -> fk.Name) + let names = + navigation.ForeignKey.Properties + |> Seq.map (fun fk -> fk.Name) let param = String.Join(",", names) foreignKeyAttribute.AddParameter(code.Literal param) @@ -257,10 +278,12 @@ type FSharpEntityTypeGenerator let generateInversePropertyAttribute (navigation: INavigation) = - if navigation.ForeignKey.PrincipalKey.IsPrimaryKey() && notNull navigation.Inverse then + if navigation.ForeignKey.PrincipalKey.IsPrimaryKey() + && notNull navigation.Inverse then let inverseNavigation = navigation.Inverse - let inversePropertyAttribute = AttributeWriter(nameof InversePropertyAttribute) + let inversePropertyAttribute = + AttributeWriter(nameof InversePropertyAttribute) let nameMatches = navigation.DeclaringEntityType.GetMembers() @@ -286,13 +309,17 @@ type FSharpEntityTypeGenerator generateIndexAttributes entityType } - if annotations.Length > 0 then Some annotations else None + if annotations.Length > 0 then + Some annotations + else + None let generateConstructor (entityType: IEntityType) = let collectionNavigations = - entityType.GetNavigations() |> Seq.filter (fun n -> n.IsCollection) + entityType.GetNavigations() + |> Seq.filter (fun n -> n.IsCollection) if collectionNavigations |> Seq.isEmpty then None @@ -334,7 +361,10 @@ type FSharpEntityTypeGenerator string a } - if annotations.Length > 0 then Some annotations else None + if annotations.Length > 0 then + Some annotations + else + None let generateNavigationDataAnnotations (navigation: INavigation) = @@ -358,7 +388,8 @@ type FSharpEntityTypeGenerator else None - let typeName = getTypeName scaffoldNullableColumnsAs p.ClrType + let typeName = + getTypeName scaffoldNullableColumnsAs p.ClrType writeProperty p.Name typeName annotationText } @@ -366,10 +397,13 @@ type FSharpEntityTypeGenerator let generateSkipForeignKeyAttribute (navigation: ISkipNavigation) = if navigation.ForeignKey.PrincipalKey.IsPrimaryKey() then - let foreignKeyAttribute = AttributeWriter(nameof ForeignKeyAttribute) + let foreignKeyAttribute = + AttributeWriter(nameof ForeignKeyAttribute) let props = - navigation.ForeignKey.Properties |> Seq.map (fun p -> p.Name) |> join "," + navigation.ForeignKey.Properties + |> Seq.map (fun p -> p.Name) + |> join "," foreignKeyAttribute.AddParameter(code.Literal props) (string foreignKeyAttribute) |> Some @@ -382,7 +416,8 @@ type FSharpEntityTypeGenerator let inverseNavigation = navigation.Inverse if notNull inverseNavigation then - let inversePropertyAttribute = AttributeWriter(nameof InversePropertyAttribute) + let inversePropertyAttribute = + AttributeWriter(nameof InversePropertyAttribute) let condition = navigation.DeclaringEntityType.GetMembers() @@ -493,7 +528,8 @@ type FSharpEntityTypeGenerator if useDataAnnotations then generatePropertyDataAnnotations p - let typeName = getTypeName scaffoldNullableColumnsAs p.ClrType + let typeName = + getTypeName scaffoldNullableColumnsAs p.ClrType $"{p.Name}: {typeName}" } diff --git a/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs b/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs index 418133e..92316f5 100644 --- a/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/Internal/FSharpModelGenerator.fs @@ -21,7 +21,9 @@ type FSharpModelGenerator let fileExtension = ".fs" - let defaultNamespaces = [ "System"; "System.Collections.Generic" ] + let defaultNamespaces = + [ "System" + "System.Collections.Generic" ] let annotationNamespaces = [ "System.ComponentModel.DataAnnotations" @@ -48,7 +50,8 @@ type FSharpModelGenerator |> Seq.append annotationNamespaces |> Seq.append (model |> getNamespacesFromModel) else - defaultNamespaces |> Seq.append (model |> getNamespacesFromModel) + defaultNamespaces + |> Seq.append (model |> getNamespacesFromModel) stringBuilder { $"namespace {``namespace``}" @@ -68,7 +71,8 @@ type FSharpModelGenerator let dbContextFileName = options.ContextName - let domainFileName = dbContextFileName.Replace("Context", "Domain") + let domainFileName = + dbContextFileName.Replace("Context", "Domain") let generatedCode = contextGenerator.WriteCode( @@ -96,7 +100,8 @@ type FSharpModelGenerator let contextFile = ScaffoldedFile(path, generatedCode) - let resultingFiles = ScaffoldedModel(ContextFile = contextFile) + let resultingFiles = + ScaffoldedModel(ContextFile = contextFile) let createEntityCode (entityType: IEntityType) = entityTypeGenerator.WriteCode( @@ -121,7 +126,8 @@ type FSharpModelGenerator entityCode } - let domainFile = ScaffoldedFile((domainFileName + fileExtension), domainFileCode) + let domainFile = + ScaffoldedFile((domainFileName + fileExtension), domainFileCode) resultingFiles.AdditionalFiles.Add(domainFile) diff --git a/src/EFCore.FSharp/Translations/IsNullTranslation.fs b/src/EFCore.FSharp/Translations/IsNullTranslation.fs index f8add05..8dba65c 100644 --- a/src/EFCore.FSharp/Translations/IsNullTranslation.fs +++ b/src/EFCore.FSharp/Translations/IsNullTranslation.fs @@ -10,7 +10,6 @@ let isNullMethodTranslator (sqlExp: ISqlExpressionFactory) = null else let expression = arguments |> Seq.tryHead - match expression with | Some expression when method.Name = "IsNull" -> sqlExp.IsNull(expression) :> _ | _ -> null } diff --git a/src/EFCore.FSharp/Translations/Translation.fs b/src/EFCore.FSharp/Translations/Translation.fs index f759b44..3e9c6a3 100644 --- a/src/EFCore.FSharp/Translations/Translation.fs +++ b/src/EFCore.FSharp/Translations/Translation.fs @@ -41,6 +41,7 @@ type FSharpTypeOptionsExtension() = .TryAdd() |> ignore - member this.Info = ExtensionInfo(this :> IDbContextOptionsExtension) :> _ + member this.Info = + ExtensionInfo(this :> IDbContextOptionsExtension) :> _ member this.Validate _ = () diff --git a/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs b/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs index a85baff..0544d59 100644 --- a/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs +++ b/src/EFCore.FSharp/Utilities/EntityFrameworkExtensions.fs @@ -11,14 +11,16 @@ open Microsoft.EntityFrameworkCore.Migrations.Internal module internal EntityFrameworkExtensions = - let getConfiguredColumnType = RelationalPropertyExtensions.GetConfiguredColumnType + let getConfiguredColumnType = + RelationalPropertyExtensions.GetConfiguredColumnType let getPrimaryKey (p: IProperty) = (p :?> Property).PrimaryKey let sortNamespaces ns = let namespaceComparer = NamespaceComparer() - ns |> List.sortWith (fun x y -> namespaceComparer.Compare(x, y)) + ns + |> List.sortWith (fun x y -> namespaceComparer.Compare(x, y)) let getId = MigrationExtensions.GetId @@ -47,11 +49,15 @@ module internal EntityFrameworkExtensions = let toAnnotatable (a: IAnnotatable) = a let annotationsToDictionary (annotations: IAnnotation seq) = - annotations |> Seq.map (fun a -> a.Name, a) |> readOnlyDict |> Dictionary + annotations + |> Seq.map (fun a -> a.Name, a) + |> readOnlyDict + |> Dictionary let isManyToManyJoinEntityType (e: IEntityType) = - if (e.GetNavigations() |> Seq.isEmpty && e.GetSkipNavigations() |> Seq.isEmpty) then + if (e.GetNavigations() |> Seq.isEmpty + && e.GetSkipNavigations() |> Seq.isEmpty) then false else let primaryKey = e.FindPrimaryKey() @@ -62,8 +68,11 @@ module internal EntityFrameworkExtensions = && primaryKey.Properties.Count > 1 && foreignKeys.Length = 2 && primaryKey.Properties.Count = properties.Length - && (foreignKeys.[0].Properties.Count + foreignKeys.[1].Properties.Count) = properties.Length - && foreignKeys.[0].Properties.Intersect(foreignKeys.[1].Properties) |> Seq.isEmpty + && (foreignKeys.[0].Properties.Count + + foreignKeys.[1].Properties.Count) = properties.Length + && foreignKeys.[0] + .Properties.Intersect(foreignKeys.[1].Properties) + |> Seq.isEmpty && foreignKeys.[0].IsRequired && foreignKeys.[1].IsRequired && not foreignKeys.[0].IsUnique diff --git a/src/EFCore.FSharp/Utilities/Multigraph.fs b/src/EFCore.FSharp/Utilities/Multigraph.fs index d5e5a68..f7fd430 100644 --- a/src/EFCore.FSharp/Utilities/Multigraph.fs +++ b/src/EFCore.FSharp/Utilities/Multigraph.fs @@ -5,9 +5,11 @@ open System.Collections.Generic type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = let vertexSet = HashSet<'TVertex>() - let successorMap = Dictionary<'TVertex, Dictionary<'TVertex, List<'TEdge>>>() + let successorMap = + Dictionary<'TVertex, Dictionary<'TVertex, List<'TEdge>>>() - let predecessorMap = Dictionary<'TVertex, HashSet<'TVertex>>() + let predecessorMap = + Dictionary<'TVertex, HashSet<'TVertex>>() member this.AddVertices(vertices: 'TVertex seq) = vertexSet.UnionWith(vertices) @@ -41,7 +43,10 @@ type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = predecessors.Add(from) |> ignore member private this.ThrowCycle(cycle: List<'TVertex>) = - let cycleString = cycle |> Seq.map string |> Seq.fold (fun c n -> $"{c} -> {n}") "" + let cycleString = + cycle + |> Seq.map string + |> Seq.fold (fun c n -> $"{c} -> {n}") "" invalidOp $"Circular dependency {cycleString}" @@ -60,13 +65,15 @@ type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = | _ -> Seq.empty vertexSet - |> Seq.iter (fun v -> - getOutgoingNeighbour v - |> Seq.iter (fun n -> - if predecessorCounts.ContainsKey(n) then - predecessorCounts.[n] <- predecessorCounts.[n] + 1 - else - predecessorCounts.[n] <- 1)) + |> Seq.iter + (fun v -> + getOutgoingNeighbour v + |> Seq.iter + (fun n -> + if predecessorCounts.ContainsKey(n) then + predecessorCounts.[n] <- predecessorCounts.[n] + 1 + else + predecessorCounts.[n] <- 1)) vertexSet |> Seq.filter (predecessorCounts.ContainsKey >> not) @@ -78,17 +85,20 @@ type Multigraph<'TVertex, 'TEdge when 'TVertex: equality>() = while index < sortedQueue.Count do getOutgoingNeighbour (sortedQueue.[index]) |> Seq.filter predecessorCounts.ContainsKey - |> Seq.iter (fun n -> - predecessorCounts.[n] <- predecessorCounts.[n] - 1 + |> Seq.iter + (fun n -> + predecessorCounts.[n] <- predecessorCounts.[n] - 1 - if predecessorCounts.[n] = 0 then - sortedQueue.Add(n) - predecessorCounts.Remove(n) |> ignore) + if predecessorCounts.[n] = 0 then + sortedQueue.Add(n) + predecessorCounts.Remove(n) |> ignore) index <- index + 1 if sortedQueue.Capacity < vertexSet.Count then - let mutable currentCycleVertex = vertexSet |> Seq.find predecessorCounts.ContainsKey + let mutable currentCycleVertex = + vertexSet + |> Seq.find predecessorCounts.ContainsKey let cycle = [ currentCycleVertex ] |> ResizeArray let mutable finished = false diff --git a/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs b/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs index 9067bf5..3b1b829 100644 --- a/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs +++ b/src/EFCore.FSharp/Utilities/SharedTypeExtensions.fs @@ -35,20 +35,28 @@ module internal rec SharedTypeExtensions = match builtInTypeNames.TryGetValue t with | (true, builtInName) -> sb.Append(builtInName) | _ -> - let name = if useFullName then t.FullName else t.Name + let name = + if useFullName then + t.FullName + else + t.Name sb.Append(name) let rec processGenericType t genericArguments length useFullName (compilable: bool) (sb: StringBuilder) = - if t.IsConstructedGenericType && t.GetGenericTypeDefinition() = typeof> then + if t.IsConstructedGenericType + && t.GetGenericTypeDefinition() = typeof> then sb.Append("Nullable<") |> ignore - processType (unwrapNullableType t) useFullName compilable sb |> ignore + processType (unwrapNullableType t) useFullName compilable sb + |> ignore sb.Append(">") - elif t.IsConstructedGenericType && t.GetGenericTypeDefinition() = typeof> then - processType (unwrapNullableType t) useFullName compilable sb |> ignore + elif t.IsConstructedGenericType + && t.GetGenericTypeDefinition() = typeof> then + processType (unwrapNullableType t) useFullName compilable sb + |> ignore sb.Append(" option") else @@ -61,7 +69,8 @@ module internal rec SharedTypeExtensions = if compilable then if t.IsNested then - processType t.DeclaringType useFullName compilable sb |> ignore + processType t.DeclaringType useFullName compilable sb + |> ignore sb.Append('.') |> ignore else @@ -81,10 +90,12 @@ module internal rec SharedTypeExtensions = if genericPartIndex <= 0 then sb.Append(t.Name) else - sb.Append(t.Name, 0, genericPartIndex).Append("<") |> ignore + sb.Append(t.Name, 0, genericPartIndex).Append("<") + |> ignore for i = offset to (length - 1) do - processType genericArguments.[i] useFullName compilable sb |> ignore + processType genericArguments.[i] useFullName compilable sb + |> ignore if (i + 1) <> length then sb.Append(',') |> ignore @@ -100,10 +111,15 @@ module internal rec SharedTypeExtensions = while (innerType.IsArray) do innerType <- innerType.GetElementType() - processType innerType useFullName compilable sb |> ignore + processType innerType useFullName compilable sb + |> ignore while (innerType.IsArray) do - sb.Append('[').Append(',', innerType.GetArrayRank() - 1).Append(']') |> ignore + sb + .Append('[') + .Append(',', innerType.GetArrayRank() - 1) + .Append(']') + |> ignore innerType <- innerType.GetElementType() @@ -135,16 +151,22 @@ module internal rec SharedTypeExtensions = && typeInfo.GetGenericTypeDefinition() = typedefof> let unwrapNullableType (t: Type) = - if isNullableType t then Nullable.GetUnderlyingType t else t + if isNullableType t then + Nullable.GetUnderlyingType t + else + t let unwrapOptionType (t: Type) = - if isOptionType t then t.GenericTypeArguments.[0] else t + if isOptionType t then + t.GenericTypeArguments.[0] + else + t let makeNullable (nullable: bool) (t: Type) = if isNullableType t = nullable then t else if nullable && t.IsValueType then - typedefof>.MakeGenericType(t) + typedefof>.MakeGenericType (t) else unwrapNullableType t @@ -152,19 +174,24 @@ module internal rec SharedTypeExtensions = if isOptionType t = optional then t else if optional then - typedefof>.MakeGenericType(t) + typedefof>.MakeGenericType (t) else unwrapOptionType t let unwrapEnumType (t: Type) = let isNullable = isNullableType t - let underlyingNonNullableType = if isNullable then unwrapNullableType t else t + let underlyingNonNullableType = + if isNullable then + unwrapNullableType t + else + t if not (underlyingNonNullableType.GetTypeInfo()).IsEnum then t else - let underlyingEnumType = Enum.GetUnderlyingType(underlyingNonNullableType) + let underlyingEnumType = + Enum.GetUnderlyingType(underlyingNonNullableType) if isNullable then makeNullable true underlyingEnumType @@ -172,7 +199,8 @@ module internal rec SharedTypeExtensions = underlyingEnumType let isInteger (t: Type) = - let t' = t |> unwrapNullableType |> unwrapOptionType + let t' = + t |> unwrapNullableType |> unwrapOptionType t' = typeof || t' = typeof @@ -185,7 +213,8 @@ module internal rec SharedTypeExtensions = || t' = typeof let isNumeric (t: Type) = - let t' = t |> unwrapNullableType |> unwrapOptionType + let t' = + t |> unwrapNullableType |> unwrapOptionType (isInteger t') || t' = typeof @@ -193,7 +222,8 @@ module internal rec SharedTypeExtensions = || t' = typeof let isSignedInteger (t: Type) = - let t' = t |> unwrapNullableType |> unwrapOptionType + let t' = + t |> unwrapNullableType |> unwrapOptionType t' = typeof || t' = typeof @@ -206,16 +236,21 @@ module internal rec SharedTypeExtensions = sb.ToString() let isSingleCaseUnion t = - FSharpType.IsUnion t && FSharpType.GetUnionCases(t) |> Array.length |> ((=) 1) + FSharpType.IsUnion t + && FSharpType.GetUnionCases(t) + |> Array.length + |> ((=) 1) let unwrapSingleCaseUnion t = - let case = FSharpType.GetUnionCases(t) |> Array.exactlyOne + let case = + FSharpType.GetUnionCases(t) |> Array.exactlyOne let field = case.GetFields() |> Array.head field.PropertyType - let getRequiredRuntimeMethod (t: Type, name: string, parameters: Type[]) = - let result = t.GetTypeInfo().GetRuntimeMethod(name, parameters) + let getRequiredRuntimeMethod (t: Type, name: string, parameters: Type []) = + let result = + t.GetTypeInfo().GetRuntimeMethod(name, parameters) if isNull result then invalidOp $"Could not find method '{name}' on type '{t}'" diff --git a/src/EFCore.FSharp/Utilities/StringBuffer.fs b/src/EFCore.FSharp/Utilities/StringBuffer.fs index 5ddc8c4..8ba2fa4 100644 --- a/src/EFCore.FSharp/Utilities/StringBuffer.fs +++ b/src/EFCore.FSharp/Utilities/StringBuffer.fs @@ -33,23 +33,26 @@ module StringBuffer = if Seq.isEmpty strings then String.Empty else - strings |> Seq.reduce (fun x y -> x + separator + y) + strings + |> Seq.reduce (fun x y -> x + separator + y) let ifTrue condition txt = if condition then Some txt else None let writeNamespaces (namespaces: string seq) = - namespaces |> Seq.map (fun n -> "open " + n) |> join Environment.NewLine + namespaces + |> Seq.map (fun n -> "open " + n) + |> join Environment.NewLine let unindent (n: int) (txt: string option) = fun (b: IndentedStringBuilder) -> match txt with | Some t -> - for _ in [ 1..n ] do + for _ in [ 1 .. n ] do b.DecrementIndent() |> ignore Printf.kprintf (b.AppendLines >> ignore) "%s" t - for _ in [ 1..n ] do + for _ in [ 1 .. n ] do b.IncrementIndent() |> ignore | None -> () @@ -90,7 +93,8 @@ module StringBuffer = member inline _.Yield(lines: string seq) = fun (b: IndentedStringBuilder) -> - lines |> Seq.iter (fun txt -> Printf.kprintf (b.AppendLines >> ignore) "%s" txt) + lines + |> Seq.iter (fun txt -> Printf.kprintf (b.AppendLines >> ignore) "%s" txt) member inline __.Yield(txt: string option) = fun (b: IndentedStringBuilder) -> @@ -108,8 +112,9 @@ module StringBuffer = type IndentStringBufferBuilder() = inherit StringBufferBuilder() + with - override _.Run(f: StringBuffer) = writeStringBuffer f Indent + override _.Run(f: StringBuffer) = writeStringBuffer f Indent let stringBuilder = new StringBufferBuilder() let indent = new IndentStringBufferBuilder() diff --git a/src/EFCore.FSharp/ValueConverters/Converters.fs b/src/EFCore.FSharp/ValueConverters/Converters.fs index 6c7f357..9df4370 100644 --- a/src/EFCore.FSharp/ValueConverters/Converters.fs +++ b/src/EFCore.FSharp/ValueConverters/Converters.fs @@ -8,49 +8,55 @@ module Conversion = open System.Linq.Expressions let toOption<'T> = - <@ - Func<'T, 'T option>(fun (x: 'T) -> + <@ Func<'T, 'T option> + (fun (x: 'T) -> match box x with | null -> None - | _ -> Some x) - @> + | _ -> Some x) @> |> LeafExpressionConverter.QuotationToExpression |> unbox>> let fromOption<'T> = - <@ - Func<'T option, 'T>(fun (x: 'T option) -> + <@ Func<'T option, 'T> + (fun (x: 'T option) -> match x with | Some y -> y - | None -> Unchecked.defaultof<'T>) - @> + | None -> Unchecked.defaultof<'T>) @> |> LeafExpressionConverter.QuotationToExpression |> unbox>> let toSingleCaseUnion<'T, 'U> = - <@ - Func<'T, 'U>(fun (x: 'T) -> - FSharpValue.MakeUnion(FSharpType.GetUnionCases(typedefof<'U>) |> Array.exactlyOne, [| x :> obj |]) - :?> 'U) - @> + <@ Func<'T, 'U> + (fun (x: 'T) -> + FSharpValue.MakeUnion( + FSharpType.GetUnionCases(typedefof<'U>) + |> Array.exactlyOne, + [| x :> obj |] + ) + :?> 'U) @> |> LeafExpressionConverter.QuotationToExpression |> unbox>> let fromFromSingleCase<'T, 'U> = - <@ Func<'U, 'T>(fun (x: 'U) -> FSharpValue.GetUnionFields(x, x.GetType()) |> snd |> Seq.head :?> 'T) @> + <@ Func<'U, 'T> + (fun (x: 'U) -> + FSharpValue.GetUnionFields(x, x.GetType()) + |> snd + |> Seq.head + :?> 'T) @> |> LeafExpressionConverter.QuotationToExpression |> unbox>> type OptionConverter<'T>() = - inherit - Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'T option, 'T>( + inherit Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'T option, 'T> + ( Conversion.fromOption, Conversion.toOption ) type SingleCaseUnionConverter<'T, 'U>() = - inherit - Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'U, 'T>( + inherit Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<'U, 'T> + ( Conversion.fromFromSingleCase, Conversion.toSingleCaseUnion ) diff --git a/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs b/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs index 5d1f58c..706b680 100644 --- a/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs +++ b/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs @@ -38,7 +38,10 @@ type MyContext() = |> ignore override __.OnModelCreating(modelBuilder) = - modelBuilder.Entity().HasKey([| "Key1"; "Key2" |]) |> ignore + modelBuilder + .Entity() + .HasKey([| "Key1"; "Key2" |]) + |> ignore let createContext () = let ctx = new MyContext() @@ -68,7 +71,8 @@ let DbContextHelperTests = let modified = { original with Title = "My New Title" } - updateEntity ctx (fun b -> b.Id) modified |> ignore + updateEntity ctx (fun b -> b.Id) modified + |> ignore let expected = { Id = original.Id @@ -77,7 +81,8 @@ let DbContextHelperTests = let found = tryFindEntity ctx original.Id - let actual = Expect.wantSome found "Should not be None" + let actual = + Expect.wantSome found "Should not be None" Expect.equal actual expected "Record in context should match" } @@ -96,20 +101,22 @@ let DbContextHelperTests = let modified = { original with - Value = "My New Content" } + Value = "My New Content" } - updateEntity ctx (fun b -> [ box b.Key1; box b.Key2 ]) modified |> ignore + updateEntity ctx (fun b -> [ box b.Key1; box b.Key2 ]) modified + |> ignore let expected = { Key1 = 1 Key2 = 2 Value = "My New Content" } - let key: obj[] = [| original.Key1; original.Key2 |] + let key: obj [] = [| original.Key1; original.Key2 |] let found = tryFindEntity ctx key - let actual = Expect.wantSome found "Should not be None" + let actual = + Expect.wantSome found "Should not be None" Expect.equal actual expected "Record in context should match" } @@ -141,7 +148,8 @@ let DbContextHelperTests = } |> Async.RunSynchronously - let actual = Expect.wantSome found "Should not be None" + let actual = + Expect.wantSome found "Should not be None" Expect.equal actual expected "Record in context should match" } @@ -169,11 +177,14 @@ let DbContextHelperTests = let! _ = updateEntityAsync ctx (fun b -> b.Id :> obj) modified - return! tryFindEntityTaskAsync ctx original.Id |> Async.AwaitTask + return! + tryFindEntityTaskAsync ctx original.Id + |> Async.AwaitTask } |> Async.RunSynchronously - let actual = Expect.wantSome found "Should not be None" + let actual = + Expect.wantSome found "Should not be None" Expect.equal actual expected "Record in context should match" } @@ -189,7 +200,9 @@ let DbContextHelperTests = test "tryFindEntityAsync returns None if no matching entry found" { use ctx = createContext () - let found = tryFindEntityAsync ctx (Guid.NewGuid()) |> Async.RunSynchronously + let found = + tryFindEntityAsync ctx (Guid.NewGuid()) + |> Async.RunSynchronously Expect.isNone found "Should be None" } ] @@ -211,7 +224,8 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = toListAsync ctx.Blogs |> Async.RunSynchronously + let result = + toListAsync ctx.Blogs |> Async.RunSynchronously Expect.equal [ blog ] result "Should be same" } @@ -228,7 +242,8 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = tryFirstAsync ctx.Blogs |> Async.RunSynchronously + let result = + tryFirstAsync ctx.Blogs |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -237,7 +252,8 @@ let DbSetTests = test "tryFirstAsync should return None" { use ctx = createContext () - let result = tryFirstAsync ctx.Blogs |> Async.RunSynchronously + let result = + tryFirstAsync ctx.Blogs |> Async.RunSynchronously Expect.isNone result "should have none" } @@ -278,7 +294,8 @@ let DbSetTests = saveChanges ctx let result = - tryFilterFirstAsync <@ fun x -> x.Id = id @> ctx.Blogs |> Async.RunSynchronously + tryFilterFirstAsync <@ fun x -> x.Id = id @> ctx.Blogs + |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -289,7 +306,8 @@ let DbSetTests = let id = Guid.NewGuid() let result = - tryFilterFirstAsync <@ fun x -> x.Id = id @> ctx.Blogs |> Async.RunSynchronously + tryFilterFirstAsync <@ fun x -> x.Id = id @> ctx.Blogs + |> Async.RunSynchronously Expect.isNone result "should have none" } @@ -306,7 +324,8 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = tryFilterFirst <@ fun x -> x.Id = id @> ctx.Blogs + let result = + tryFilterFirst <@ fun x -> x.Id = id @> ctx.Blogs let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -316,7 +335,8 @@ let DbSetTests = use ctx = createContext () let id = Guid.NewGuid() - let result = tryFilterFirst <@ fun x -> x.Id = id @> ctx.Blogs + let result = + tryFilterFirst <@ fun x -> x.Id = id @> ctx.Blogs Expect.isNone result "should have none" } @@ -333,7 +353,9 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = ctx.Blogs.TryFirstAsync() |> Async.RunSynchronously + let result = + ctx.Blogs.TryFirstAsync() + |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -342,7 +364,9 @@ let DbSetTests = test "TryFirstAsync extension should return None" { use ctx = createContext () - let result = ctx.Blogs.TryFirstAsync() |> Async.RunSynchronously + let result = + ctx.Blogs.TryFirstAsync() + |> Async.RunSynchronously Expect.isNone result "should have none" } @@ -360,7 +384,9 @@ let DbSetTests = saveChanges ctx let result = - ctx.Blogs.TryFirstTaskAsync() |> Async.AwaitTask |> Async.RunSynchronously + ctx.Blogs.TryFirstTaskAsync() + |> Async.AwaitTask + |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -370,7 +396,9 @@ let DbSetTests = use ctx = createContext () let result = - ctx.Blogs.TryFirstTaskAsync() |> Async.AwaitTask |> Async.RunSynchronously + ctx.Blogs.TryFirstTaskAsync() + |> Async.AwaitTask + |> Async.RunSynchronously Expect.isNone result "should have none" } @@ -411,7 +439,9 @@ let DbSetTests = addEntity ctx blog saveChanges ctx - let result = ctx.Blogs.TryFirstAsync(fun x -> x.Id = id) |> Async.RunSynchronously + let result = + ctx.Blogs.TryFirstAsync(fun x -> x.Id = id) + |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -443,7 +473,9 @@ let DbSetTests = use ctx = createContext () let id = Guid.NewGuid() - let result = ctx.Blogs.TryFirstAsync(fun x -> x.Id = id) |> Async.RunSynchronously + let result = + ctx.Blogs.TryFirstAsync(fun x -> x.Id = id) + |> Async.RunSynchronously Expect.isNone result "should have none" } diff --git a/tests/EFCore.FSharp.Tests/Internal/FSharpUtilitiesTest.fs b/tests/EFCore.FSharp.Tests/Internal/FSharpUtilitiesTest.fs index 0357feb..6453d5f 100644 --- a/tests/EFCore.FSharp.Tests/Internal/FSharpUtilitiesTest.fs +++ b/tests/EFCore.FSharp.Tests/Internal/FSharpUtilitiesTest.fs @@ -9,7 +9,7 @@ open Expecto let getTypeNameTestCases = [ (typeof, "int") (typeof>, "Nullable") - (typeof, "int[]") + (typeof, "int[]") (typeof>>, "Dictionary") (typeof>>, "Nullable ResizeArray") (typeof list>, "Nullable list") @@ -29,9 +29,11 @@ let TestFunc (builder: obj, o1: obj, o2: obj, o3: obj) = failwith "NotSupported" let _testFuncMethodInfo = - let a = System.Reflection.Assembly.GetExecutingAssembly() + let a = + System.Reflection.Assembly.GetExecutingAssembly() - let modu = a.GetType("EntityFrameworkCore.FSharp.Test.Internal") + let modu = + a.GetType("EntityFrameworkCore.FSharp.Test.Internal") let methodInfo = modu.GetMethod("TestFunc") @@ -43,34 +45,38 @@ let FSharpUtilitiesTest = testList "FSharpUtilitiesTest" [ testList - "getTypeName" - [ test "int" { - getTypeNameTestCases - |> Seq.iter (fun (type', expected) -> - let actual = FSharpUtilities.getTypeName type' - Expect.equal actual expected "Should be equal") - } ] + "getTypeName" + [ test "int" { + getTypeNameTestCases + |> Seq.iter + (fun (type', expected) -> + let actual = FSharpUtilities.getTypeName type' + Expect.equal actual expected "Should be equal") + } ] testList "delimitString" [ test "delimitString" { delimitStringTestCases - |> Seq.iter (fun (input, expected) -> - let actual = FSharpUtilities.delimitString input - Expect.equal actual expected "Should be equal") + |> Seq.iter + (fun (input, expected) -> + let actual = FSharpUtilities.delimitString input + Expect.equal actual expected "Should be equal") } ] testList "MethodCallCodeFragment" [ test "MethodCallCodeFragment with parameters" { - let method = MethodCallCodeFragment(_testFuncMethodInfo, true, 42) + let method = + MethodCallCodeFragment(_testFuncMethodInfo, true, 42) - let actual = method |> FSharpUtilities.generate - Expect.equal actual ".TestFunc(true, 42)" "Should be equal" + let actual = method |> FSharpUtilities.generate + Expect.equal actual ".TestFunc(true, 42)" "Should be equal" } test "MethodCallCodeFragment when niladic" { - let method = MethodCallCodeFragment(_testFuncMethodInfo) + let method = + MethodCallCodeFragment(_testFuncMethodInfo) let actual = method |> FSharpUtilities.generate Expect.equal actual ".TestFunc()" "Should be equal" diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs index d89474a..7095e78 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationOperationGeneratorTest.fs @@ -31,9 +31,12 @@ open System.Data open Microsoft.Data.SqlClient type GeometryValueCoverter<'geometry when 'geometry :> Geometry> - (reader: SqlServerBytesReader, writer: SqlServerBytesWriter) = - inherit - ValueConverter<'geometry, SqlBytes>( + ( + reader: SqlServerBytesReader, + writer: SqlServerBytesWriter + ) = + inherit ValueConverter<'geometry, SqlBytes> + ( (fun g -> SqlBytes(writer.Write g)), (fun b -> reader.Read(b.Value) :?> 'geometry) ) @@ -43,16 +46,21 @@ module Helpers = let isGeography = String.Equals(storeType, "geography", StringComparison.OrdinalIgnoreCase) - let reader = SqlServerBytesReader(geometryServices, IsGeography = isGeography) + let reader = + SqlServerBytesReader(geometryServices, IsGeography = isGeography) - let writer = SqlServerBytesWriter(IsGeography = isGeography) + let writer = + SqlServerBytesWriter(IsGeography = isGeography) GeometryValueCoverter<'geometry>(reader, writer) type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> - (geometryServices: NtsGeometryServices, storeType: string) = - inherit - RelationalGeometryTypeMapping<'geometry, SqlBytes>( + ( + geometryServices: NtsGeometryServices, + storeType: string + ) = + inherit RelationalGeometryTypeMapping<'geometry, SqlBytes> + ( (Helpers.createConverter geometryServices storeType), storeType ) @@ -61,12 +69,14 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> String.Equals(storeType, "geography", StringComparison.OrdinalIgnoreCase) let getSqlBytes = - typeof.GetRuntimeMethod("GetSqlBytes", [| typeof |]) + typeof.GetRuntimeMethod ("GetSqlBytes", [| typeof |]) let createSqlDbTypeAccessor paramType = - let paramParam = Expression.Parameter(typeof, "parameter") + let paramParam = + Expression.Parameter(typeof, "parameter") - let valueParam = Expression.Parameter(typeof, "value") + let valueParam = + Expression.Parameter(typeof, "value") Expression .Lambda>( @@ -82,9 +92,11 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> let createUdtTypeNameAccessor (paramType) = - let paramParam = Expression.Parameter(typeof, "parameter") + let paramParam = + Expression.Parameter(typeof, "parameter") - let valueParam = Expression.Parameter(typeof, "value") + let valueParam = + Expression.Parameter(typeof, "value") Expression .Lambda>( @@ -109,17 +121,34 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> (geometry = (Point.Empty :> Geometry)) || (geometry.SRID = (if isGeography then 4326 else 0)) - let g = if isGeography then "geography" else "geometry" - - let m = if defaultSrid then "Parse" else "STGeomFromText" - - let a = (WKTWriter.ForMicrosoftSqlServer()).Write(geometry) + let g = + if isGeography then + "geography" + else + "geometry" - builder.Append(g).Append("::").Append(m).Append("('").Append(a).Append("'") + let m = + if defaultSrid then + "Parse" + else + "STGeomFromText" + + let a = + (WKTWriter.ForMicrosoftSqlServer()) + .Write(geometry) + + builder + .Append(g) + .Append("::") + .Append(m) + .Append("('") + .Append(a) + .Append("'") |> ignore if (not defaultSrid) then - builder.Append(", ").Append(geometry.SRID) |> ignore + builder.Append(", ").Append(geometry.SRID) + |> ignore builder.Append(")") |> ignore @@ -144,7 +173,13 @@ type SqlServerGeometryTypeMapping<'geometry when 'geometry :> Geometry> sqlDbTypeSetter.Invoke(parameter, SqlDbType.Udt) - udtTypeNameSetter.Invoke(parameter, (if isGeography then "geography" else "geometry")) + udtTypeNameSetter.Invoke( + parameter, + (if isGeography then + "geography" + else + "geometry") + ) type SqlServerNetTopologySuiteTypeMappingSourcePlugin(geometryServices) = @@ -158,16 +193,25 @@ type SqlServerNetTopologySuiteTypeMappingSourcePlugin(geometryServices) = let storeTypeName = mappingInfo.StoreTypeName if - typeof.IsAssignableFrom(clrType) - || (notNull storeTypeName && spatialStoresTypes.Contains(storeTypeName)) + typeof.IsAssignableFrom (clrType) + || (notNull storeTypeName + && spatialStoresTypes.Contains(storeTypeName)) then - let genericType = if notNull clrType then clrType else typeof - - let storeName = if notNull storeTypeName then storeTypeName else "geography" + let genericType = + if notNull clrType then + clrType + else + typeof + + let storeName = + if notNull storeTypeName then + storeTypeName + else + "geography" let instance = Activator.CreateInstance( - typedefof>.MakeGenericType(genericType), + typedefof>.MakeGenericType (genericType), geometryServices, storeName ) @@ -219,33 +263,40 @@ module FSharpMigrationOperationGeneratorTest = let builder = IndentedStringBuilder() - builder.AppendLine "namespace TestOperations" |> ignore + builder.AppendLine "namespace TestOperations" + |> ignore builder.AppendLine "" |> ignore builder.AppendLine "open System" |> ignore - builder.AppendLine "open Microsoft.EntityFrameworkCore.Migrations" |> ignore + builder.AppendLine "open Microsoft.EntityFrameworkCore.Migrations" + |> ignore - builder.AppendLine "open NetTopologySuite.Geometries" |> ignore + builder.AppendLine "open NetTopologySuite.Geometries" + |> ignore builder.AppendLine "" |> ignore - builder.AppendLine "module OperationsFactory =" |> ignore + builder.AppendLine "module OperationsFactory =" + |> ignore builder.IncrementIndent() |> ignore builder.AppendLine "" |> ignore - builder.AppendLine "let Create(mb: MigrationBuilder) =" |> ignore + builder.AppendLine "let Create(mb: MigrationBuilder) =" + |> ignore let expected = IndentedStringBuilder() - expected.AppendLines(builder.ToString(), false) |> ignore + expected.AppendLines(builder.ToString(), false) + |> ignore expected.IncrementIndent() |> ignore expected.IncrementIndent() |> ignore - expected.AppendLines(expectedCode, false) |> ignore + expected.AppendLines(expectedCode, false) + |> ignore builder.IncrementIndent() |> ignore @@ -271,12 +322,19 @@ module FSharpMigrationOperationGeneratorTest = let assembly = build.BuildInMemory(references) let factoryType = - (assembly :> System.Reflection.Assembly).GetTypes() + (assembly :> System.Reflection.Assembly) + .GetTypes() |> Seq.find (fun (m: System.Type) -> m.Name = "OperationsFactory") - let createMethod = (factoryType: System.Type).GetMethod("Create") + let createMethod = + (factoryType: System.Type).GetMethod("Create") + let mb = MigrationBuilder(activeProvider = null) - (createMethod: System.Reflection.MethodInfo).Invoke(null, [| mb |]) |> ignore + + (createMethod: System.Reflection.MethodInfo) + .Invoke(null, [| mb |]) + |> ignore + let result = mb.Operations.Cast<'a>().Single() ``assert`` result @@ -312,7 +370,8 @@ module FSharpMigrationOperationGeneratorTest = } test "AddColumnOperation required args" { - let op = AddColumnOperation(Name = "Id", Table = "Post", ClrType = typeof) + let op = + AddColumnOperation(Name = "Id", Table = "Post", ClrType = typeof) let expected = seq { @@ -356,7 +415,8 @@ module FSharpMigrationOperationGeneratorTest = } test "CreateTableOperation optional args" { - let op = CreateTableOperation(Name = "MyTable", Schema = "MySchema") + let op = + CreateTableOperation(Name = "MyTable", Schema = "MySchema") op.Columns.Add <| AddColumnOperation(Name = "Id", Table = "MyTable", ClrType = typeof) diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs index 770d498..42c347e 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs @@ -34,7 +34,11 @@ open Microsoft.EntityFrameworkCore.Design.Internal open EntityFrameworkCore.FSharp type TestFSharpSnapshotGenerator - (dependencies, mappingSource: IRelationalTypeMappingSource, annotationCodeGenerator: IAnnotationCodeGenerator) = + ( + dependencies, + mappingSource: IRelationalTypeMappingSource, + annotationCodeGenerator: IAnnotationCodeGenerator + ) = inherit FSharpSnapshotGenerator(dependencies, mappingSource, annotationCodeGenerator) member this.TestGenerateEntityTypeAnnotations builderName entityType = @@ -59,7 +63,9 @@ type private RawEnum = | A = 0 | B = 1 -type MyContext() = class end +type MyContext() = + class + end module FSharpMigrationsGeneratorTest = @@ -97,7 +103,8 @@ module FSharpMigrationsGeneratorTest = "System.Threading.Thread.dll" "System.Threading.ThreadPool.dll" ] - let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() + let thisAssembly = + System.Reflection.Assembly.GetExecutingAssembly() let localNames = [ "FSharp.Core.dll" @@ -115,7 +122,8 @@ module FSharpMigrationsGeneratorTest = let runtimeDir = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() - let runtimeRefs = runtimeNames |> List.map (fun r -> runtimeDir + r) + let runtimeRefs = + runtimeNames |> List.map (fun r -> runtimeDir + r) let localRefs = let location = @@ -147,7 +155,8 @@ module FSharpMigrationsGeneratorTest = Expect.equal contextTypeAttribute.ContextType.FullName typeof.FullName "Should be equal" Activator.CreateInstance(snapshotType) :?> ModelSnapshot - with exn -> + with + | exn -> let msg = sprintf "Could not build the following code {%s}:\n {%s}" modelSnapshotTypeName modelSnapshotCode @@ -197,17 +206,18 @@ module FSharpMigrationsGeneratorTest = TestFSharpSnapshotGenerator(codeHelper, sqlServerTypeMappingSource, annotationCodeGenerator) let coreAnnotations = - typeof.GetFields() + typeof.GetFields () |> Seq.filter (fun f -> f.FieldType = typeof) |> Seq.toList coreAnnotations - |> List.iter (fun field -> - let annotationName = field.GetValue(null) |> string + |> List.iter + (fun field -> + let annotationName = field.GetValue(null) |> string - Expect.isTrue - (CoreAnnotationNames.AllNames.Contains(annotationName)) - $"CoreAnnotations.AllNames doesn't contain {annotationName}") + Expect.isTrue + (CoreAnnotationNames.AllNames.Contains(annotationName)) + $"CoreAnnotations.AllNames doesn't contain {annotationName}") let rlNames = (typeof).GetFields() @@ -215,47 +225,55 @@ module FSharpMigrationsGeneratorTest = |> Seq.toList let allAnnotations = - (coreAnnotations @ rlNames) |> Seq.filter (fun f -> f.Name <> "Prefix") + (coreAnnotations @ rlNames) + |> Seq.filter (fun f -> f.Name <> "Prefix") allAnnotations - |> Seq.iter (fun f -> - let annotationName = f.GetValue(null) |> string + |> Seq.iter + (fun f -> + let annotationName = f.GetValue(null) |> string - if not (invalidAnnotations.Contains(annotationName)) then - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + if not (invalidAnnotations.Contains(annotationName)) then + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() - let metadataItem = createMetadataItem modelBuilder + let metadataItem = createMetadataItem modelBuilder - let annotation = - if validAnnotations.ContainsKey(annotationName) then - fst validAnnotations.[annotationName] - else - null + let annotation = + if validAnnotations.ContainsKey(annotationName) then + fst validAnnotations.[annotationName] + else + null - metadataItem.SetAnnotation(annotationName, annotation) + metadataItem.SetAnnotation(annotationName, annotation) - modelBuilder.FinalizeModel(designTime = true, skipValidation = true) |> ignore + modelBuilder.FinalizeModel(designTime = true, skipValidation = true) + |> ignore - try - let actual = test generator metadataItem + try + let actual = test generator metadataItem - let expected = - if validAnnotations.ContainsKey(annotationName) then - snd validAnnotations.[annotationName] - else - generationDefault + let expected = + if validAnnotations.ContainsKey(annotationName) then + snd validAnnotations.[annotationName] + else + generationDefault - Expect.equal (actual.Trim()) (expected.Trim()) $"Should be equal, but failed on {annotationName}" - with exn -> - let msg = - sprintf - "Annotation '%s' was not handled by the code generator: {%s}" - annotationName - exn.Message + Expect.equal + (actual.Trim()) + (expected.Trim()) + $"Should be equal, but failed on {annotationName}" + with + | exn -> + let msg = + sprintf + "Annotation '%s' was not handled by the code generator: {%s}" + annotationName + exn.Message - Expect.isTrue false msg + Expect.isTrue false msg - ) + ) () @@ -274,7 +292,7 @@ module FSharpMigrationsGeneratorTest = type EntityWithEveryPrimitive = { Boolean: bool Byte: byte - ByteArray: byte[] + ByteArray: byte [] Char: char DateTime: DateTime DateTimeOffset: DateTimeOffset @@ -422,16 +440,23 @@ module FSharpMigrationsGeneratorTest = |> HashSet let _toTable = - _nl + @"entityTypeBuilder.ToTable(""WithAnnotations"") |> ignore" + _nl + _nl + + @"entityTypeBuilder.ToTable(""WithAnnotations"") |> ignore" + + _nl let forEntityType = [ (RelationalAnnotationNames.TableName, - (box "MyTable", _nl + @"entityTypeBuilder.ToTable(""MyTable"") |> ignore")) + (box "MyTable", + _nl + + @"entityTypeBuilder.ToTable(""MyTable"") |> ignore")) (RelationalAnnotationNames.Schema, (box "MySchema", - _nl + @"entityTypeBuilder.ToTable(""WithAnnotations"", ""MySchema"") |> ignore")) + _nl + + @"entityTypeBuilder.ToTable(""WithAnnotations"", ""MySchema"") |> ignore")) (CoreAnnotationNames.DiscriminatorProperty, - (box "Id", _toTable + @"entityTypeBuilder.HasDiscriminator(""Id"") |> ignore")) + (box "Id", + _toTable + + @"entityTypeBuilder.HasDiscriminator(""Id"") |> ignore")) (CoreAnnotationNames.DiscriminatorValue, (box "MyDiscriminatorValue", _toTable @@ -441,11 +466,17 @@ module FSharpMigrationsGeneratorTest = _toTable + @"entityTypeBuilder.HasAnnotation(""Relational:Comment"", ""My Comment"") |> ignore")) (RelationalAnnotationNames.ViewName, - (box "MyView", _nl + @"entityTypeBuilder.ToView(""MyView"") |> ignore")) + (box "MyView", + _nl + + @"entityTypeBuilder.ToView(""MyView"") |> ignore")) (RelationalAnnotationNames.FunctionName, - (box null, _nl + "entityTypeBuilder.ToFunction(null) |> ignore")) + (box null, + _nl + + "entityTypeBuilder.ToFunction(null) |> ignore")) (RelationalAnnotationNames.SqlQuery, - (box null, _nl + "entityTypeBuilder.ToSqlQuery(null) |> ignore")) ] + (box null, + _nl + + "entityTypeBuilder.ToSqlQuery(null) |> ignore")) ] |> dict missingAnnotationCheck @@ -538,7 +569,8 @@ module FSharpMigrationsGeneratorTest = RelationalAnnotationNames.StoreType ] |> HashSet - let columnMapping = $"{_nl}.HasColumnType(\"default_int_mapping\")" + let columnMapping = + $"{_nl}.HasColumnType(\"default_int_mapping\")" let columnMappingWithDefaultValue = $"{columnMapping}" @@ -552,12 +584,15 @@ module FSharpMigrationsGeneratorTest = (box false, $"{_nl}.IsUnicode(false){columnMappingWithDefaultValue}{_nl}|> ignore")) (CoreAnnotationNames.ValueConverter, (box (ValueConverter((fun v -> v |> int64), (fun v -> v |> int), null)), - _nl + $".HasColumnType(\"default_long_mapping\"){_nl}|> ignore")) + _nl + + $".HasColumnType(\"default_long_mapping\"){_nl}|> ignore")) (CoreAnnotationNames.ProviderClrType, (box typeof, $"{_nl}.HasColumnType(\"default_long_mapping\"){_nl}|> ignore")) (RelationalAnnotationNames.ColumnName, (box "MyColumn", - columnMappingWithDefaultValue + _nl + $".HasColumnName(\"MyColumn\") |> ignore")) + columnMappingWithDefaultValue + + _nl + + $".HasColumnName(\"MyColumn\") |> ignore")) (RelationalAnnotationNames.ColumnType, (box "int", _nl + $".HasColumnType(\"int\"){_nl}|> ignore")) (RelationalAnnotationNames.DefaultValueSql, @@ -571,14 +606,23 @@ module FSharpMigrationsGeneratorTest = + _nl + ".HasComputedColumnSql(\"some SQL\") |> ignore")) (RelationalAnnotationNames.DefaultValue, - (box "1", columnMapping + ".HasDefaultValue(\"1\") |> ignore")) + (box "1", + columnMapping + + ".HasDefaultValue(\"1\") |> ignore")) (RelationalAnnotationNames.DefaultValue, - (box 0, columnMapping + $"{_nl}.HasDefaultValue(0){_nl}|> ignore")) + (box 0, + columnMapping + + $"{_nl}.HasDefaultValue(0){_nl}|> ignore")) (RelationalAnnotationNames.IsFixedLength, - (box true, columnMappingWithDefaultValue + _nl + ".IsFixedLength() |> ignore")) + (box true, + columnMappingWithDefaultValue + + _nl + + ".IsFixedLength() |> ignore")) (RelationalAnnotationNames.Comment, (box "My Comment", - columnMappingWithDefaultValue + _nl + ".HasComment(\"My Comment\") |> ignore")) + columnMappingWithDefaultValue + + _nl + + ".HasComment(\"My Comment\") |> ignore")) (RelationalAnnotationNames.Collation, (box "Some Collation", $"{columnMappingWithDefaultValue}{_nl}.UseCollation(\"Some Collation\") |> ignore")) @@ -588,7 +632,12 @@ module FSharpMigrationsGeneratorTest = |> dict missingAnnotationCheck - (fun b -> (b.Entity().Property(fun e -> e.Id).Metadata :> IMutableAnnotatable)) + (fun b -> + (b + .Entity() + .Property(fun e -> e.Id) + .Metadata + :> IMutableAnnotatable)) notForProperty forProperty (columnMappingWithDefaultValue + $"{_nl}|> ignore") @@ -626,36 +675,47 @@ module FSharpMigrationsGeneratorTest = ) ) - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore - modelBuilder.Entity(fun eb -> - eb - .HasDiscriminator("EnumDiscriminator") - .HasValue(RawEnum.A) - .HasValue(RawEnum.B) - |> ignore - - eb.Property("EnumDiscriminator").HasConversion() |> ignore) + modelBuilder.Entity + (fun eb -> + eb + .HasDiscriminator("EnumDiscriminator") + .HasValue(RawEnum.A) + .HasValue(RawEnum.B) + |> ignore + + eb + .Property("EnumDiscriminator") + .HasConversion() + |> ignore) |> ignore - let model = modelBuilder.FinalizeModel(designTime = true) + let model = + modelBuilder.FinalizeModel(designTime = true) let modelSnapshotCode = generator.GenerateSnapshot("MyNamespace", typeof, "MySnapshot", model) let snapshotModel = - (compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot").Model + (compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot") + .Model Expect.equal - (snapshotModel.FindEntityType(typeof).GetDiscriminatorValue()) + (snapshotModel + .FindEntityType(typeof) + .GetDiscriminatorValue()) ((int RawEnum.A) :> obj) "Should be equal" Expect.equal - (snapshotModel.FindEntityType(typeof).GetDiscriminatorValue()) + (snapshotModel + .FindEntityType(typeof) + .GetDiscriminatorValue()) ((int RawEnum.B) :> obj) "Should be equal" } @@ -679,7 +739,7 @@ module FSharpMigrationsGeneratorTest = ) AddColumnOperation(Name = "C3", Table = "T1", ClrType = typeof) - let insertValues: obj[,] = Array2D.create 2 3 (1 :> obj) + let insertValues: obj [,] = Array2D.create 2 3 (1 :> obj) insertValues.[0, 1] <- null InsertDataOperation(Table = "T1", Columns = [| "Id"; "C2"; "C3" |], Values = insertValues) ], @@ -713,9 +773,11 @@ module FSharpMigrationsGeneratorTest = ) |> ignore - modelBuilder.HasAnnotation(CoreAnnotationNames.ProductVersion, null) |> ignore + modelBuilder.HasAnnotation(CoreAnnotationNames.ProductVersion, null) + |> ignore - let model = modelBuilder.FinalizeModel(designTime = true) + let model = + modelBuilder.FinalizeModel(designTime = true) let migrationMetadataCode = @@ -827,14 +889,17 @@ module FSharpMigrationsGeneratorTest = .GetType("MyNamespace.MyMigration", true, false) let attribute = - (migrationType :> System.Reflection.MemberInfo).GetCustomAttributes(false) - |> Seq.choose (fun (t: obj) -> - match t with - | :? DbContextAttribute as a -> Some a - | _ -> None) + (migrationType :> System.Reflection.MemberInfo) + .GetCustomAttributes(false) + |> Seq.choose + (fun (t: obj) -> + match t with + | :? DbContextAttribute as a -> Some a + | _ -> None) |> Seq.head - let migration = Activator.CreateInstance(migrationType) :?> Migration + let migration = + Activator.CreateInstance(migrationType) :?> Migration Expect.equal (attribute.ContextType.FullName) @@ -849,18 +914,20 @@ module FSharpMigrationsGeneratorTest = test "Snapshots compile" { let generator = createMigrationsCodeGenerator () - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() modelBuilder.Model.RemoveAnnotation(CoreAnnotationNames.ProductVersion) |> ignore - modelBuilder.Entity(fun x -> - x.Property(fun e -> e.Id) |> ignore + modelBuilder.Entity + (fun x -> + x.Property(fun e -> e.Id) |> ignore - x - .Property("PropertyWithValueGenerator") - .HasValueGenerator() - |> ignore) + x + .Property("PropertyWithValueGenerator") + .HasValueGenerator() + |> ignore) |> ignore modelBuilder.HasDbFunction(myDbFunction) |> ignore @@ -870,7 +937,8 @@ module FSharpMigrationsGeneratorTest = let entityType = model.AddEntityType("Cheese") - let property1 = entityType.AddProperty("Pickle", typeof) + let property1 = + entityType.AddProperty("Pickle", typeof) property1.SetValueConverter( ValueConverter( @@ -880,7 +948,8 @@ module FSharpMigrationsGeneratorTest = ) ) - let property2 = entityType.AddProperty("Ham", typeof) + let property2 = + entityType.AddProperty("Ham", typeof) property2.SetValueConverter( ValueConverter( @@ -892,7 +961,8 @@ module FSharpMigrationsGeneratorTest = entityType.SetPrimaryKey(property2) |> ignore - let finalModel = modelBuilder.FinalizeModel(designTime = true) + let finalModel = + modelBuilder.FinalizeModel(designTime = true) let modelSnapshotCode = generator.GenerateSnapshot("MyNamespace", typeof, "MySnapshot", finalModel) @@ -963,7 +1033,8 @@ module FSharpMigrationsGeneratorTest = Expect.equal (modelSnapshotCode.Trim()) (expectedCode.Trim()) "" - let snapshot = compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" + let snapshot = + compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" Expect.equal (snapshot.Model.GetEntityTypes() |> Seq.length) 2 "Expect 2 entity types" } @@ -971,152 +1042,262 @@ module FSharpMigrationsGeneratorTest = test "Snapshot with default values are round tripped" { let generator = createMigrationsCodeGenerator () - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() - - modelBuilder.Entity(fun eb -> - eb.Property(fun e -> e.Boolean).HasDefaultValue(false) |> ignore - - eb.Property(fun e -> e.Byte).HasDefaultValue(Byte.MinValue) |> ignore - - eb.Property(fun e -> e.ByteArray).HasDefaultValue([| 0uy |]) |> ignore - - eb.Property(fun e -> e.Char).HasDefaultValue('0') |> ignore - - eb.Property(fun e -> e.DateTime).HasDefaultValue(DateTime.MinValue) |> ignore - - eb.Property(fun e -> e.DateTimeOffset).HasDefaultValue(DateTimeOffset.MinValue) - |> ignore - - eb.Property(fun e -> e.Decimal).HasDefaultValue(Decimal.MinValue) |> ignore - - eb.Property(fun e -> e.Double).HasDefaultValue(Double.MinValue) |> ignore //double.NegativeInfinity - - eb.Property(fun e -> e.Enum).HasDefaultValue(Enum1.Default) |> ignore - - eb - .Property(fun e -> e.NullableEnum) - .HasDefaultValue(Enum1.Default) - .HasConversion() - |> ignore - - eb.Property(fun e -> e.Guid).HasDefaultValue(Guid.NewGuid()) |> ignore - - eb.Property(fun e -> e.Int16).HasDefaultValue(Int16.MaxValue) |> ignore - - eb.Property(fun e -> e.Int32).HasDefaultValue(Int32.MaxValue) |> ignore - - eb.Property(fun e -> e.Int64).HasDefaultValue(Int64.MaxValue) |> ignore - - eb.Property(fun e -> e.Single).HasDefaultValue(Single.Epsilon) |> ignore - - eb.Property(fun e -> e.SByte).HasDefaultValue(SByte.MinValue) |> ignore - - eb.Property(fun e -> e.String).HasDefaultValue("'\"'@\r\\\n") |> ignore - - eb.Property(fun e -> e.TimeSpan).HasDefaultValue(TimeSpan.MaxValue) |> ignore - - eb.Property(fun e -> e.UInt16).HasDefaultValue(UInt16.MinValue) |> ignore - - eb.Property(fun e -> e.UInt32).HasDefaultValue(UInt32.MinValue) |> ignore - - eb.Property(fun e -> e.UInt64).HasDefaultValue(UInt64.MinValue) |> ignore - - eb.Property(fun e -> e.NullableBoolean).HasDefaultValue(true) |> ignore - - eb.Property(fun e -> e.NullableByte).HasDefaultValue(Byte.MaxValue) |> ignore - - eb.Property(fun e -> e.NullableChar).HasDefaultValue('\'') |> ignore - - eb.Property(fun e -> e.NullableDateTime).HasDefaultValue(DateTime.MaxValue) - |> ignore - - eb - .Property(fun e -> e.NullableDateTimeOffset) - .HasDefaultValue(DateTimeOffset.MaxValue) - |> ignore - - eb.Property(fun e -> e.NullableDecimal).HasDefaultValue(Decimal.MaxValue) - |> ignore - - eb.Property(fun e -> e.NullableDouble).HasDefaultValue(0.6822871999174) - |> ignore - - eb.Property(fun e -> e.NullableEnum).HasDefaultValue(Enum1.One ||| Enum1.Two) - |> ignore - - eb - .Property(fun e -> e.NullableStringEnum) - .HasDefaultValue(Enum1.One) - .HasConversion() - |> ignore - - eb.Property(fun e -> e.NullableGuid).HasDefaultValue(Guid()) |> ignore - - eb.Property(fun e -> e.NullableInt16).HasDefaultValue(Int16.MinValue) |> ignore - - eb.Property(fun e -> e.NullableInt32).HasDefaultValue(Int32.MinValue) |> ignore - - eb.Property(fun e -> e.NullableInt64).HasDefaultValue(Int64.MinValue) |> ignore - - eb.Property(fun e -> e.NullableSingle).HasDefaultValue(0.3333333) |> ignore - - eb.Property(fun e -> e.NullableSByte).HasDefaultValue(SByte.MinValue) |> ignore - - eb - .Property(fun e -> e.NullableTimeSpan) - .HasDefaultValue(TimeSpan.MinValue.Add(TimeSpan())) - |> ignore - - eb.Property(fun e -> e.NullableUInt16).HasDefaultValue(UInt16.MaxValue) - |> ignore - - eb.Property(fun e -> e.NullableUInt32).HasDefaultValue(UInt32.MaxValue) - |> ignore - - eb.Property(fun e -> e.NullableUInt64).HasDefaultValue(UInt64.MaxValue) - |> ignore - - eb.HasKey(fun e -> e.Boolean :> obj) |> ignore) + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() + + modelBuilder.Entity + (fun eb -> + eb + .Property(fun e -> e.Boolean) + .HasDefaultValue(false) + |> ignore + + eb + .Property(fun e -> e.Byte) + .HasDefaultValue(Byte.MinValue) + |> ignore + + eb + .Property(fun e -> e.ByteArray) + .HasDefaultValue([| 0uy |]) + |> ignore + + eb.Property(fun e -> e.Char).HasDefaultValue('0') + |> ignore + + eb + .Property(fun e -> e.DateTime) + .HasDefaultValue(DateTime.MinValue) + |> ignore + + eb + .Property(fun e -> e.DateTimeOffset) + .HasDefaultValue(DateTimeOffset.MinValue) + |> ignore + + eb + .Property(fun e -> e.Decimal) + .HasDefaultValue(Decimal.MinValue) + |> ignore + + eb + .Property(fun e -> e.Double) + .HasDefaultValue(Double.MinValue) + |> ignore //double.NegativeInfinity + + eb + .Property(fun e -> e.Enum) + .HasDefaultValue(Enum1.Default) + |> ignore + + eb + .Property(fun e -> e.NullableEnum) + .HasDefaultValue(Enum1.Default) + .HasConversion() + |> ignore + + eb + .Property(fun e -> e.Guid) + .HasDefaultValue(Guid.NewGuid()) + |> ignore + + eb + .Property(fun e -> e.Int16) + .HasDefaultValue(Int16.MaxValue) + |> ignore + + eb + .Property(fun e -> e.Int32) + .HasDefaultValue(Int32.MaxValue) + |> ignore + + eb + .Property(fun e -> e.Int64) + .HasDefaultValue(Int64.MaxValue) + |> ignore + + eb + .Property(fun e -> e.Single) + .HasDefaultValue(Single.Epsilon) + |> ignore + + eb + .Property(fun e -> e.SByte) + .HasDefaultValue(SByte.MinValue) + |> ignore + + eb + .Property(fun e -> e.String) + .HasDefaultValue("'\"'@\r\\\n") + |> ignore + + eb + .Property(fun e -> e.TimeSpan) + .HasDefaultValue(TimeSpan.MaxValue) + |> ignore + + eb + .Property(fun e -> e.UInt16) + .HasDefaultValue(UInt16.MinValue) + |> ignore + + eb + .Property(fun e -> e.UInt32) + .HasDefaultValue(UInt32.MinValue) + |> ignore + + eb + .Property(fun e -> e.UInt64) + .HasDefaultValue(UInt64.MinValue) + |> ignore + + eb + .Property(fun e -> e.NullableBoolean) + .HasDefaultValue(true) + |> ignore + + eb + .Property(fun e -> e.NullableByte) + .HasDefaultValue(Byte.MaxValue) + |> ignore + + eb + .Property(fun e -> e.NullableChar) + .HasDefaultValue('\'') + |> ignore + + eb + .Property(fun e -> e.NullableDateTime) + .HasDefaultValue(DateTime.MaxValue) + |> ignore + + eb + .Property(fun e -> e.NullableDateTimeOffset) + .HasDefaultValue(DateTimeOffset.MaxValue) + |> ignore + + eb + .Property(fun e -> e.NullableDecimal) + .HasDefaultValue(Decimal.MaxValue) + |> ignore + + eb + .Property(fun e -> e.NullableDouble) + .HasDefaultValue(0.6822871999174) + |> ignore + + eb + .Property(fun e -> e.NullableEnum) + .HasDefaultValue(Enum1.One ||| Enum1.Two) + |> ignore + + eb + .Property(fun e -> e.NullableStringEnum) + .HasDefaultValue(Enum1.One) + .HasConversion() + |> ignore + + eb + .Property(fun e -> e.NullableGuid) + .HasDefaultValue(Guid()) + |> ignore + + eb + .Property(fun e -> e.NullableInt16) + .HasDefaultValue(Int16.MinValue) + |> ignore + + eb + .Property(fun e -> e.NullableInt32) + .HasDefaultValue(Int32.MinValue) + |> ignore + + eb + .Property(fun e -> e.NullableInt64) + .HasDefaultValue(Int64.MinValue) + |> ignore + + eb + .Property(fun e -> e.NullableSingle) + .HasDefaultValue(0.3333333) + |> ignore + + eb + .Property(fun e -> e.NullableSByte) + .HasDefaultValue(SByte.MinValue) + |> ignore + + eb + .Property(fun e -> e.NullableTimeSpan) + .HasDefaultValue(TimeSpan.MinValue.Add(TimeSpan())) + |> ignore + + eb + .Property(fun e -> e.NullableUInt16) + .HasDefaultValue(UInt16.MaxValue) + |> ignore + + eb + .Property(fun e -> e.NullableUInt32) + .HasDefaultValue(UInt32.MaxValue) + |> ignore + + eb + .Property(fun e -> e.NullableUInt64) + .HasDefaultValue(UInt64.MaxValue) + |> ignore + + eb.HasKey(fun e -> e.Boolean :> obj) |> ignore) |> ignore - let model = modelBuilder.FinalizeModel(designTime = true) + let model = + modelBuilder.FinalizeModel(designTime = true) let modelSnapshotCode = generator.GenerateSnapshot("MyNamespace", typeof, "MySnapshot", model) - let snapshot = compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" + let snapshot = + compileModelSnapshot modelSnapshotCode "MyNamespace.MySnapshot" - let entityType = snapshot.Model.GetEntityTypes() |> Seq.head + let entityType = + snapshot.Model.GetEntityTypes() |> Seq.head Expect.equal (entityType.DisplayName()) - (typeof.FullName + " (Dictionary)") + (typeof.FullName + + " (Dictionary)") "" - (modelBuilder.Model.GetEntityTypes() |> Seq.head).GetProperties() - |> Seq.iter (fun property -> - let expected = property.GetDefaultValue() - - let defaultValue = entityType.FindProperty(property.Name).GetDefaultValue() - - let actual = - match expected |> Option.ofObj, defaultValue |> Option.ofObj with - | Some expected, Some actual' when expected.GetType().IsEnum -> - match actual' with - | :? String as a -> Enum.Parse(expected.GetType(), a) - | _ -> Enum.ToObject(expected.GetType(), actual') - | Some expected, Some actual' when actual'.GetType() <> expected.GetType() -> - Convert.ChangeType(actual', expected.GetType()) - | _ -> defaultValue - - if actual |> isNull |> not && expected |> isNull |> not then - Expect.equal - actual - expected - $"""Comparison failed for {if actual.GetType() = typeof> then - $"Nullable<{(Nullable.GetUnderlyingType(actual.GetType()))}>" - else - property.ClrType.Name}""") + (modelBuilder.Model.GetEntityTypes() |> Seq.head) + .GetProperties() + |> Seq.iter + (fun property -> + let expected = property.GetDefaultValue() + + let defaultValue = + entityType + .FindProperty(property.Name) + .GetDefaultValue() + + let actual = + match expected |> Option.ofObj, defaultValue |> Option.ofObj with + | Some expected, Some actual' when expected.GetType().IsEnum -> + match actual' with + | :? String as a -> Enum.Parse(expected.GetType(), a) + | _ -> Enum.ToObject(expected.GetType(), actual') + | Some expected, Some actual' when actual'.GetType() <> expected.GetType() -> + Convert.ChangeType(actual', expected.GetType()) + | _ -> defaultValue + + if actual |> isNull |> not + && expected |> isNull |> not then + Expect.equal + actual + expected + $"""Comparison failed for {if actual.GetType() = typeof> then + $"Nullable<{(Nullable.GetUnderlyingType(actual.GetType()))}>" + else + property.ClrType.Name}""") } test "Namespaces imported for insert data" { @@ -1134,7 +1315,8 @@ module FSharpMigrationsGeneratorTest = [] ) - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() let model = modelBuilder.Model.FinalizeModel() @@ -1167,7 +1349,8 @@ module FSharpMigrationsGeneratorTest = [] ) - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() let model = modelBuilder.Model.FinalizeModel() @@ -1200,7 +1383,8 @@ module FSharpMigrationsGeneratorTest = [] ) - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() let model = modelBuilder.Model.FinalizeModel() @@ -1231,7 +1415,8 @@ module FSharpMigrationsGeneratorTest = [] ) - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() let model = modelBuilder.Model.FinalizeModel() diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs index 6f24657..0b9352f 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsScaffolderTest.fs @@ -71,14 +71,16 @@ module FSharpMigrationsScaffolderTest = let migrationAssembly = MigrationsAssembly( currentContext, - DbContextOptions<'context>().WithExtension(FakeRelationalOptionsExtension()), + DbContextOptions<'context>() + .WithExtension(FakeRelationalOptionsExtension()), idGenerator, FakeDiagnosticsLogger() ) let historyRepository = MockHistoryRepository() - let services = RelationalTestHelpers.Instance.CreateContextServices() + let services = + RelationalTestHelpers.Instance.CreateContextServices() let model = Model().FinalizeModel() @@ -153,9 +155,11 @@ module FSharpMigrationsScaffolderTest = [ test "ScaffoldMigration reuses model snapshot" { - let scaffolder = createMigrationScaffolder () + let scaffolder = + createMigrationScaffolder () - let migration = scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") + let migration = + scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") Expect.equal (nameof ContextWithSnapshotModelSnapshot) migration.SnapshotName "Should be equal" @@ -174,7 +178,8 @@ module FSharpMigrationsScaffolderTest = // } test "ScaffoldMigration can override namespace" { - let scaffolder = createMigrationScaffolder () + let scaffolder = + createMigrationScaffolder () let migration = scaffolder.ScaffoldMigration("EmptyMigration", null, "OverrideNamespace.OverrideSubNamespace") @@ -198,15 +203,19 @@ module FSharpMigrationsScaffolderTest = } test "ScaffoldMigration save works as expected" { - let projectDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) + let projectDir = + Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) Directory.CreateDirectory(projectDir) |> ignore - let scaffolder = createMigrationScaffolder () + let scaffolder = + createMigrationScaffolder () - let migration = scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") + let migration = + scaffolder.ScaffoldMigration("EmptyMigration", "WebApplication1") - let saveResult = scaffolder.Save(projectDir, migration, null, false) + let saveResult = + scaffolder.Save(projectDir, migration, null, false) Expect.isTrue (File.Exists saveResult.MigrationFile) "MigrationFile should exist" Expect.isTrue (File.Exists saveResult.MetadataFile) "MetadataFile should exist" diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs index 12e14c5..2fb73ab 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpDbContextGeneratorTest.fs @@ -137,7 +137,8 @@ let TestFluentApiCall (modelBuilder: ModelBuilder) = let _testFluentApiCallMethodInfo = - let a = Reflection.Assembly.GetExecutingAssembly() + let a = + Reflection.Assembly.GetExecutingAssembly() let modu = a.GetType("EntityFrameworkCore.FSharp.Test.Scaffolding.Internal.FSharpDbContextGeneratorTest") @@ -156,7 +157,8 @@ type TestModelAnnotationProvider(dependencies) = yield! baseResult if database.["Test:TestModelAnnotation"] :? string then - let annotationValue = database.["Test:TestModelAnnotation"] :?> string + let annotationValue = + database.["Test:TestModelAnnotation"] :?> string yield (Annotation("Test:TestModelAnnotation", annotationValue)) :> IAnnotation } @@ -208,63 +210,63 @@ let FSharpDbContextGeneratorTest = testBase.Test buildModel options assertScaffold assertModel [] } - // test "Views work" { + // test "Views work" { - // let buildModel (m: ModelBuilder) = m.Entity("Vista").ToView("Vista") + // let buildModel (m: ModelBuilder) = m.Entity("Vista").ToView("Vista") - // let options = - // ModelCodeGenerationOptions(UseDataAnnotations = true) + // let options = + // ModelCodeGenerationOptions(UseDataAnnotations = true) - // let assertScaffold (code: ScaffoldedModel) = - // Expect.stringContains code.ContextFile.Code "entity.ToView(\"Vista\")" "Should contain view" + // let assertScaffold (code: ScaffoldedModel) = + // Expect.stringContains code.ContextFile.Code "entity.ToView(\"Vista\")" "Should contain view" - // let assertModel (model: IModel) = - // let entityType = - // model.FindEntityType("TestNamespace.Vista") + // let assertModel (model: IModel) = + // let entityType = + // model.FindEntityType("TestNamespace.Vista") - // Expect.isNotNull - // (entityType.FindAnnotation(RelationalAnnotationNames.ViewDefinitionSql)) - // "Should not be null" + // Expect.isNotNull + // (entityType.FindAnnotation(RelationalAnnotationNames.ViewDefinitionSql)) + // "Should not be null" - // Expect.equal (entityType.GetViewName()) "Vista" "Should be equal" - // Expect.isNull (entityType.GetViewSchema()) "Should be null" - // Expect.isNull (entityType.GetTableName()) "Should be null" - // Expect.isNull (entityType.GetSchema()) "Should be null" + // Expect.equal (entityType.GetViewName()) "Vista" "Should be equal" + // Expect.isNull (entityType.GetViewSchema()) "Should be null" + // Expect.isNull (entityType.GetTableName()) "Should be null" + // Expect.isNull (entityType.GetSchema()) "Should be null" - // let additionalSources = [ vistaSource ] + // let additionalSources = [ vistaSource ] - // testBase.Test buildModel options assertScaffold assertModel additionalSources + // testBase.Test buildModel options assertScaffold assertModel additionalSources - // } + // } - // test "Temporal Tables work" { + // test "Temporal Tables work" { - // let buildModel (m: ModelBuilder) = - // m.Entity( - // "Customer", - // fun e -> - // e.Property("Id") |> ignore - // e.Property("Name") |> ignore - // e.HasKey("Id") |> ignore + // let buildModel (m: ModelBuilder) = + // m.Entity( + // "Customer", + // fun e -> + // e.Property("Id") |> ignore + // e.Property("Name") |> ignore + // e.HasKey("Id") |> ignore - // e.ToTable(fun tb -> tb.IsTemporal() |> ignore) - // |> ignore - // ) + // e.ToTable(fun tb -> tb.IsTemporal() |> ignore) + // |> ignore + // ) - // let options = - // ModelCodeGenerationOptions(UseDataAnnotations = false) + // let options = + // ModelCodeGenerationOptions(UseDataAnnotations = false) - // let assertScaffold (code: ScaffoldedModel) = - // Expect.equal - // (normaliseLineEndings code.ContextFile.Code) - // (normaliseLineEndings temporalDbContext) - // "Should be equal" + // let assertScaffold (code: ScaffoldedModel) = + // Expect.equal + // (normaliseLineEndings code.ContextFile.Code) + // (normaliseLineEndings temporalDbContext) + // "Should be equal" - // let assertModel (model: IModel) = () + // let assertModel (model: IModel) = () - // let additionalSources = [ customerSource ] + // let additionalSources = [ customerSource ] - // testBase.Test buildModel options assertScaffold assertModel additionalSources + // testBase.Test buildModel options assertScaffold assertModel additionalSources - // } - ] + // } + ] diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs index 2ae87a3..205fe5f 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/FSharpModelGeneratorTests.fs @@ -19,7 +19,8 @@ let join separator (lines: string seq) = System.String.Join(separator, lines) let createGenerator options = let testAssembly = - (typeof).Assembly + (typeof) + .Assembly let reporter = TestOperationReporter() @@ -29,7 +30,8 @@ let createGenerator options = .AddSingleton() .AddSingleton() - let designTimeServices = EFCoreFSharpServices.WithScaffoldOptions options + let designTimeServices = + EFCoreFSharpServices.WithScaffoldOptions options designTimeServices.ConfigureDesignTimeServices(services) @@ -38,15 +40,26 @@ let createGenerator options = .GetRequiredService() let getModelBuilder () = - let modelBuilder = RelationalTestHelpers.Instance.CreateConventionBuilder() + let modelBuilder = + RelationalTestHelpers.Instance.CreateConventionBuilder() - modelBuilder.Entity("BlogPost").Property("Id") |> ignore + modelBuilder + .Entity("BlogPost") + .Property("Id") + |> ignore - modelBuilder.Entity("BlogPost").Property("Title") |> ignore + modelBuilder + .Entity("BlogPost") + .Property("Title") + |> ignore - modelBuilder.Entity("Comment").Property("Id") |> ignore + modelBuilder.Entity("Comment").Property("Id") + |> ignore - modelBuilder.Entity("Comment").Property("BlogPostId") |> ignore + modelBuilder + .Entity("Comment") + .Property("BlogPostId") + |> ignore modelBuilder .Entity("Comment") @@ -88,7 +101,8 @@ let FSharpModelGeneratorTests = } test "Write code works" { - let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let generator = + createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions false @@ -96,7 +110,8 @@ let FSharpModelGeneratorTests = let result = generator.GenerateModel((modelBuilder.FinalizeModel(designTime = true)), modelBuilderOptions) - let expectedContextFilePath = Path.Combine("..", "TestContextDir", "TestContext.fs") + let expectedContextFilePath = + Path.Combine("..", "TestContextDir", "TestContext.fs") Expect.equal result.ContextFile.Path expectedContextFilePath "Should be equal" Expect.isNotEmpty result.ContextFile.Code "Should not be empty" @@ -107,7 +122,8 @@ let FSharpModelGeneratorTests = } test "Record types created correctly" { - let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) + let generator = + createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions false @@ -146,7 +162,8 @@ let FSharpModelGeneratorTests = } test "Record types created correctly with annotations" { - let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) + let generator = + createGenerator (ScaffoldOptions(ScaffoldTypesAs = RecordType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions true @@ -192,7 +209,8 @@ let FSharpModelGeneratorTests = } test "Class types created correctly" { - let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let generator = + createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions false @@ -252,7 +270,8 @@ let FSharpModelGeneratorTests = } test "Class types created correctly with annotations" { - let generator = createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) + let generator = + createGenerator (ScaffoldOptions(ScaffoldTypesAs = ClassType)) let modelBuilder = getModelBuilder () let modelBuilderOptions = getModelBuilderOptions true diff --git a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs index 887d9cc..f61ce98 100644 --- a/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs +++ b/tests/EFCore.FSharp.Tests/Scaffolding/Internal/ModelCodeGeneratorTestBase.fs @@ -19,7 +19,8 @@ open Microsoft.EntityFrameworkCore.Design.Internal type ModelCodeGeneratorTestBase() = let createServices () = - let testAssembly = (typeof).Assembly + let testAssembly = + (typeof).Assembly let reporter = TestOperationReporter() @@ -73,10 +74,12 @@ type ModelCodeGeneratorTestBase() = let runtimeDir = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() - let runtimeRefs = runtimeNames |> List.map (fun r -> runtimeDir + r) + let runtimeRefs = + runtimeNames |> List.map (fun r -> runtimeDir + r) let localRefs = - let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() + let thisAssembly = + System.Reflection.Assembly.GetExecutingAssembly() let location = thisAssembly.Location.Replace(thisAssembly.GetName().Name + ".dll", "") @@ -141,7 +144,9 @@ type ModelCodeGeneratorTestBase() = let sources = scaffoldedModel.ContextFile.Code - :: (scaffoldedModel.AdditionalFiles |> Seq.map (fun f -> f.Code) |> Seq.toList) + :: (scaffoldedModel.AdditionalFiles + |> Seq.map (fun f -> f.Code) + |> Seq.toList) @ additionalSources |> List.rev diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs index f6142c2..539276c 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs @@ -63,15 +63,19 @@ type BuildSource = member this.BuildInMemory(references: string array) = let projectName = "TestProject" - let source = String.Join(Environment.NewLine, this.Sources) + let source = + String.Join(Environment.NewLine, this.Sources) + + let tmpDir = + Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) - let tmpDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) Directory.CreateDirectory(tmpDir) |> ignore let sourceFile = Path.Combine(tmpDir, "source.fs") File.WriteAllText(sourceFile, source) - let outputDll = Path.Combine(tmpDir, projectName + ".dll") + let outputDll = + Path.Combine(tmpDir, projectName + ".dll") let args = [| yield "fsc.exe" @@ -86,7 +90,9 @@ type BuildSource = lock compilerLock (fun () -> checker.Compile(args) |> Async.RunSynchronously) if exitCode <> 0 then - let messages = errors |> Seq.map (fun e -> e.Message + Environment.NewLine) + let messages = + errors + |> Seq.map (fun e -> e.Message + Environment.NewLine) invalidOp (String.Join(Environment.NewLine, messages)) @@ -96,7 +102,7 @@ type BuildSource = // Clean up temp files try Directory.Delete(tmpDir, true) - with _ -> - () + with + | _ -> () assembly diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs index 2a866f1..6a77510 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/FakeProvider/FakeDbConnection.fs @@ -185,7 +185,7 @@ type FakeDbCommand(?connection: FakeDbConnection, ?commandExecutor: FakeCommandE base.Dispose disposing -and FakeDbDataReader(?columnNames: string[], ?results: ResizeArray) = +and FakeDbDataReader(?columnNames: string [], ?results: ResizeArray) = inherit DbDataReader() let _columnNames = @@ -196,9 +196,9 @@ and FakeDbDataReader(?columnNames: string[], ?results: ResizeArray) = let _results = match results with | Some e -> e - | None -> ResizeArray() + | None -> ResizeArray() - let mutable _currentRow: obj[] = null + let mutable _currentRow: obj [] = null let mutable _rowIndex: int = 0 let mutable _readAsyncCount: int = 0 @@ -406,7 +406,11 @@ and [] FakeDbTransaction(connection: FakeDbConnection, ?isolat base.Dispose(disposing) and [] FakeDbConnection - (connectionString: string, ?commandExecutor: FakeCommandExecutor, ?state: ConnectionState) as this = + ( + connectionString: string, + ?commandExecutor: FakeCommandExecutor, + ?state: ConnectionState + ) as this = inherit DbConnection() let mutable connectionState: ConnectionState = @@ -494,7 +498,8 @@ and FakeRelationalConnection(options) = member this.DbConnections: IReadOnlyList = _dbConnections :> _ override this.CreateDbConnection() = - let connection = new FakeDbConnection(base.ConnectionString) + let connection = + new FakeDbConnection(base.ConnectionString) _dbConnections.Add(connection) connection :> _ @@ -562,7 +567,8 @@ and [] FakeRelationalOptionsExtension = serviceCollection - override this.Info = System.NotImplementedException() |> raise + override this.Info = + System.NotImplementedException() |> raise override this.Clone() = diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs b/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs index 80516e8..714f979 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/RelationalTestHelpers.fs @@ -19,9 +19,14 @@ type RelationalTestHelpers private () = override this.UseProviderOptions optionsBuilder = - let e = optionsBuilder.Options.FindExtension() - - let extension = if isNull e then FakeRelationalOptionsExtension() else e + let e = + optionsBuilder.Options.FindExtension() + + let extension = + if isNull e then + FakeRelationalOptionsExtension() + else + e let fakeConn = new FakeDbConnection("Database=Fake") diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestModificationCommandBatchFactory.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestModificationCommandBatchFactory.fs index ed2805f..64f6858 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestModificationCommandBatchFactory.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestModificationCommandBatchFactory.fs @@ -3,7 +3,12 @@ open Microsoft.EntityFrameworkCore.Update type TestModificationCommandBatchFactory - (commandBuilderFactory, sqlGenerationHelper, updateSqlGenerator, valueBufferFactoryFactory) = + ( + commandBuilderFactory, + sqlGenerationHelper, + updateSqlGenerator, + valueBufferFactoryFactory + ) = let mutable createCount = 0 member this.CreateCount = createCount diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestProviderCodeGenerator.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestProviderCodeGenerator.fs index f870031..11a0d16 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestProviderCodeGenerator.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestProviderCodeGenerator.fs @@ -9,8 +9,9 @@ open Microsoft.EntityFrameworkCore type TestProviderCodeGenerator(dependencies) = inherit ProviderCodeGenerator(dependencies) - let getRequiredRuntimeMethod (t: Type, name: string, parameters: Type[]) = - let result = t.GetTypeInfo().GetRuntimeMethod(name, parameters) + let getRequiredRuntimeMethod (t: Type, name: string, parameters: Type []) = + let result = + t.GetTypeInfo().GetRuntimeMethod(name, parameters) if isNull result then invalidOp $"Could not find method '{name}' on type '{t}'" @@ -21,13 +22,18 @@ type TestProviderCodeGenerator(dependencies) = let t = typeof let parameters = - [| typeof; typeof; typeof> |] + [| typeof + typeof + typeof> |] getRequiredRuntimeMethod (t, "UseTestProvider", parameters) static member UseTestProvider - (optionsBuilder: DbContextOptionsBuilder, connectionString: string, optionsAction: Action) - = + ( + optionsBuilder: DbContextOptionsBuilder, + connectionString: string, + optionsAction: Action + ) = raise (NotSupportedException()) override this.GenerateUseProvider(connectionString, providerOptions) = diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs index 8ca7b42..52e7ed4 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestRelationalTypeMappingSource.fs @@ -11,7 +11,7 @@ open Microsoft.EntityFrameworkCore.Storage type internal IntArrayTypeMapping = inherit RelationalTypeMapping - new() = { inherit RelationalTypeMapping("some_int_array_mapping", (typeof)) } + new() = { inherit RelationalTypeMapping("some_int_array_mapping", (typeof)) } new(parameters) = { inherit RelationalTypeMapping(parameters) } @@ -50,9 +50,11 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = let _defaultBoolMapping = BoolTypeMapping("default_bool_mapping") :> RelationalTypeMapping - let _someIntMapping = IntTypeMapping("some_int_mapping") :> RelationalTypeMapping + let _someIntMapping = + IntTypeMapping("some_int_mapping") :> RelationalTypeMapping - let _intArray = IntArrayTypeMapping() :> RelationalTypeMapping + let _intArray = + IntArrayTypeMapping() :> RelationalTypeMapping let _defaultDecimalMapping = DecimalTypeMapping("default_decimal_mapping") :> RelationalTypeMapping @@ -91,7 +93,7 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = (typeof, _defaultDecimalMapping) (typeof, _defaultTimeSpanMapping) (typeof, _string) - (typeof, _intArray) ] + (typeof, _intArray) ] |> dict :?> IReadOnlyDictionary @@ -113,10 +115,12 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = match clrType with | t when t = typeof -> - let isAnsi = mappingInfo.IsUnicode.GetValueOrDefault() + let isAnsi = + mappingInfo.IsUnicode.GetValueOrDefault() let isFixedLength = - mappingInfo.IsFixedLength.HasValue && mappingInfo.IsFixedLength.Value + mappingInfo.IsFixedLength.HasValue + && mappingInfo.IsFixedLength.Value let baseName = match isAnsi, isFixedLength with @@ -136,7 +140,11 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = let name = if isStoreTypeNameNull then - let sizeStr = if size.HasValue then string size.Value else "max" + let sizeStr = + if size.HasValue then + string size.Value + else + "max" sprintf "%s(%s)" baseName sizeStr else @@ -150,18 +158,25 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = TestStringTypeMapping(name, dbType, (not isAnsi), size, isFixedLength) :> RelationalTypeMapping - | t when t = typeof -> + | t when t = typeof -> if mappingInfo.IsRowVersion.GetValueOrDefault() then _rowversion else let size = - if mappingInfo.Size.HasValue then mappingInfo.Size - else if mappingInfo.IsKeyOrIndex then Nullable(900) - else Nullable() + if mappingInfo.Size.HasValue then + mappingInfo.Size + else if mappingInfo.IsKeyOrIndex then + Nullable(900) + else + Nullable() let name = if isNull storeTypeName then - let sizeStr = if size.HasValue then string size.Value else "max" + let sizeStr = + if size.HasValue then + string size.Value + else + "max" sprintf "just_binary(%s)" sizeStr else @@ -185,13 +200,13 @@ type TestRelationalTypeMappingSource(dependencies, relationalDependencies) = mapping | _ -> - let successFromName, mappingFromName = _simpleNameMappings.TryGetValue storeTypeName + let successFromName, mappingFromName = + _simpleNameMappings.TryGetValue storeTypeName - if - (not isStoreTypeNameNull) - && (clrType = null || mappingFromName.ClrType = clrType) - && successFromName - then + if (not isStoreTypeNameNull) + && (clrType = null + || mappingFromName.ClrType = clrType) + && successFromName then mappingFromName else null diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs b/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs index 40ee457..6a0421f 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/TestServiceFactory.fs @@ -12,13 +12,15 @@ open Microsoft.EntityFrameworkCore.Metadata type Implementation = { Type: Type; Implementation: obj } type ImplementationType = - { Type: Type; ImplementationType: Type } + { Type: Type + ImplementationType: Type } module TestServiceFactory = open Microsoft.Extensions.DependencyInjection open System.Collections.Generic - let private factories = ConcurrentDictionary() + let private factories = + ConcurrentDictionary() let private wellKnownExceptions = [ { Type = typeof @@ -28,13 +30,12 @@ module TestServiceFactory = let private tryGetEnumerableType (t: Type) = - let typeInfo = System.Reflection.IntrospectionExtensions.GetTypeInfo t + let typeInfo = + System.Reflection.IntrospectionExtensions.GetTypeInfo t - if - not (typeInfo.IsGenericTypeDefinition) - && typeInfo.IsGenericType - && t.GetGenericTypeDefinition() = typeof> - then + if not (typeInfo.IsGenericTypeDefinition) + && typeInfo.IsGenericType + && t.GetGenericTypeDefinition() = typeof> then typeInfo.GenericTypeArguments.[0] |> Some else None @@ -85,44 +86,55 @@ module TestServiceFactory = |> Seq.tryHead match implementation with - | Some i -> serviceCollection.AddSingleton(serviceType, i) |> ignore + | Some i -> + serviceCollection.AddSingleton(serviceType, i) + |> ignore | None -> let types = getImplementationTypes serviceType types - |> Seq.iter (fun t -> - let implementation = - specialCases - |> Seq.filter (fun s -> s.Type = serviceType) - |> Seq.map (fun s -> s.Implementation) - |> Seq.tryHead - - match implementation with - | Some i -> serviceCollection.AddSingleton(serviceType, i) |> ignore - | None -> - serviceCollection.AddSingleton(t.Type, t.ImplementationType) |> ignore - - let constructors = t.ImplementationType.GetConstructors() - - let maxParamLength = - constructors |> Seq.map (fun c -> c.GetParameters().Length) |> Seq.max - - let constructor = - constructors - |> Seq.filter (fun c -> (c.GetParameters().Length) = maxParamLength) + |> Seq.iter + (fun t -> + let implementation = + specialCases + |> Seq.filter (fun s -> s.Type = serviceType) + |> Seq.map (fun s -> s.Implementation) |> Seq.tryHead - match constructor with + match implementation with + | Some i -> + serviceCollection.AddSingleton(serviceType, i) + |> ignore | None -> - let msg = - sprintf - "Cannot use 'TestServiceFactory' for '%s': no public constructor." - (t.ImplementationType.Name) - - invalidOp msg - | Some c -> - c.GetParameters() - |> Seq.iter (fun p -> addType serviceCollection p.ParameterType specialCases |> ignore)) + serviceCollection.AddSingleton(t.Type, t.ImplementationType) + |> ignore + + let constructors = t.ImplementationType.GetConstructors() + + let maxParamLength = + constructors + |> Seq.map (fun c -> c.GetParameters().Length) + |> Seq.max + + let constructor = + constructors + |> Seq.filter (fun c -> (c.GetParameters().Length) = maxParamLength) + |> Seq.tryHead + + match constructor with + | None -> + let msg = + sprintf + "Cannot use 'TestServiceFactory' for '%s': no public constructor." + (t.ImplementationType.Name) + + invalidOp msg + | Some c -> + c.GetParameters() + |> Seq.iter + (fun p -> + addType serviceCollection p.ParameterType specialCases + |> ignore)) serviceCollection @@ -135,4 +147,6 @@ module TestServiceFactory = |> ServiceCollectionContainerBuilderExtensions.BuildServiceProvider :> IServiceProvider - factories.GetOrAdd(typeof<'a>, (fun t -> serviceprovider)).GetService<'a>() + factories + .GetOrAdd(typeof<'a>, (fun t -> serviceprovider)) + .GetService<'a>() diff --git a/tests/EFCore.FSharp.Tests/Translations/IsNullTranslationTests.fs b/tests/EFCore.FSharp.Tests/Translations/IsNullTranslationTests.fs index d844f77..183ff8a 100644 --- a/tests/EFCore.FSharp.Tests/Translations/IsNullTranslationTests.fs +++ b/tests/EFCore.FSharp.Tests/Translations/IsNullTranslationTests.fs @@ -50,7 +50,8 @@ let blogWithoutContent = Content = null } let saveBlogs ctx = - [ blogWithContent; blogWithoutContent ] |> List.iter (addEntity ctx) + [ blogWithContent; blogWithoutContent ] + |> List.iter (addEntity ctx) saveChanges ctx @@ -132,7 +133,11 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = ctx.Blogs.Where(fun x -> not (isNull x.Content)).FirstOrDefault() + let blog = + ctx + .Blogs + .Where(fun x -> not (isNull x.Content)) + .FirstOrDefault() Expect.equal blog blogWithContent "Record in context should match" } @@ -142,7 +147,11 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = ctx.Blogs.Where(fun x -> isNull x.Content).FirstOrDefault() + let blog = + ctx + .Blogs + .Where(fun x -> isNull x.Content) + .FirstOrDefault() Expect.equal blog blogWithoutContent "Record in context should match" } @@ -151,7 +160,11 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = ctx.Blogs.Where(fun x -> x.Content = "Some text").FirstOrDefault() + let blog = + ctx + .Blogs + .Where(fun x -> x.Content = "Some text") + .FirstOrDefault() Expect.equal blog blogWithContent "Record in context should match" } ] diff --git a/tests/EFCore.FSharp.Tests/Translations/OptionTranslationTests.fs b/tests/EFCore.FSharp.Tests/Translations/OptionTranslationTests.fs index 7249834..1be10b9 100644 --- a/tests/EFCore.FSharp.Tests/Translations/OptionTranslationTests.fs +++ b/tests/EFCore.FSharp.Tests/Translations/OptionTranslationTests.fs @@ -49,7 +49,8 @@ let blogWithoutContent = Content = None } let saveBlogs ctx = - [ blogWithContent; blogWithoutContent ] |> List.iter (addEntity ctx) + [ blogWithContent; blogWithoutContent ] + |> List.iter (addEntity ctx) saveChanges ctx @@ -116,7 +117,11 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = ctx.Blogs.Where(fun x -> x.Content.IsSome).FirstOrDefault() + let blog = + ctx + .Blogs + .Where(fun x -> x.Content.IsSome) + .FirstOrDefault() Expect.equal blog blogWithContent "Record in context should match" } @@ -126,7 +131,11 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = ctx.Blogs.Where(fun x -> x.Content.IsNone).FirstOrDefault() + let blog = + ctx + .Blogs + .Where(fun x -> x.Content.IsNone) + .FirstOrDefault() Expect.equal blog blogWithoutContent "Record in context should match" } @@ -135,7 +144,11 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = ctx.Blogs.Where(fun x -> x.Content.Value = "Some text").FirstOrDefault() + let blog = + ctx + .Blogs + .Where(fun x -> x.Content.Value = "Some text") + .FirstOrDefault() Expect.equal blog blogWithContent "Record in context should match" } ] diff --git a/tests/EFCore.FSharp.Tests/Translations/SingleCaseUnionTranslationTests.fs b/tests/EFCore.FSharp.Tests/Translations/SingleCaseUnionTranslationTests.fs index 7d448ff..c9f7180 100644 --- a/tests/EFCore.FSharp.Tests/Translations/SingleCaseUnionTranslationTests.fs +++ b/tests/EFCore.FSharp.Tests/Translations/SingleCaseUnionTranslationTests.fs @@ -96,7 +96,11 @@ let OptionTranslationLinqMethodsTests = use ctx = createContext () saveBlogs ctx - let blog = ctx.Blogs.Where(fun b -> b.Votes = PositiveInteger 10).FirstOrDefault() + let blog = + ctx + .Blogs + .Where(fun b -> b.Votes = PositiveInteger 10) + .FirstOrDefault() Expect.equal blog blogWithVotes "Record in context should match" } ] diff --git a/tests/EFCore.FSharp.Tests/Utilities/StringBufferTests.fs b/tests/EFCore.FSharp.Tests/Utilities/StringBufferTests.fs index 3994687..d213794 100644 --- a/tests/EFCore.FSharp.Tests/Utilities/StringBufferTests.fs +++ b/tests/EFCore.FSharp.Tests/Utilities/StringBufferTests.fs @@ -10,21 +10,21 @@ let StringBufferTests = "StringBuffer tests" [ test "Indent works correctly" { - let expected = - (seq { - "let square x =" - " x * x" - "" - } - |> join System.Environment.NewLine) - - let actual = - stringBuilder { - "let square x =" - indent { "x * x" } - } - - Expect.equal actual expected "Should match" + let expected = + (seq { + "let square x =" + " x * x" + "" + } + |> join System.Environment.NewLine) + + let actual = + stringBuilder { + "let square x =" + indent { "x * x" } + } + + Expect.equal actual expected "Should match" } test "Nested indents work correctly" { diff --git a/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs b/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs index 29d6a23..de989d2 100644 --- a/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs +++ b/tests/EFCore.FSharp.Tests/ValueConverters/ValueConvertersTest.fs @@ -11,11 +11,11 @@ let ValueConvertersTest = testList "ValueConvertersTest" [ test "string -> string option" { - let c = Conversion.toOption - Expect.equal (c.Compile().Invoke(null)) None "Should be equal" + let c = Conversion.toOption + Expect.equal (c.Compile().Invoke(null)) None "Should be equal" - let g = "test" - Expect.equal (c.Compile().Invoke(g)) (Some g) "Should be equal" + let g = "test" + Expect.equal (c.Compile().Invoke(g)) (Some g) "Should be equal" } test "string option -> string" { @@ -49,7 +49,8 @@ let ValueConvertersTest = } test "string -> string SingleCaseUnion" { - let c = Conversion.toSingleCaseUnion + let c = + Conversion.toSingleCaseUnion let g = "test" Expect.equal (c.Compile().Invoke(g)) (SingleCaseUnion g) "Should be equal" @@ -57,14 +58,16 @@ let ValueConvertersTest = test "string SingleCaseUnion -> string" { - let c = Conversion.fromFromSingleCase + let c = + Conversion.fromFromSingleCase let g = "test" Expect.equal (c.Compile().Invoke(SingleCaseUnion g)) g "Should be equal" } test "Can create SingleCaseUnionConverter" { - let oc = SingleCaseUnionConverter() + let oc = + SingleCaseUnionConverter() Expect.isNotNull (box oc) "Should not be null" } ] From 3f66d37f77767dc63c50c55ecad6681bb11e5a7a Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Mon, 6 Apr 2026 21:39:16 +0700 Subject: [PATCH 18/19] Remove non-functional changes from PR --- build/build.fs | 4 ++-- .../TestUtilities/FakeDiagnosticsLogger.fs | 10 +++++----- tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs | 7 +++---- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/build/build.fs b/build/build.fs index 8081c00..26e83ae 100644 --- a/build/build.fs +++ b/build/build.fs @@ -302,7 +302,6 @@ module FSharpAnalyzers = | Fail_On_Warnings of string list | Ignore_Files of string list | Verbose - interface IArgParserTemplate with member s.Usage = "" @@ -727,7 +726,8 @@ let publishToNuget _ = ApiKey = match nugetToken with | Some s -> s - | _ -> c.ApiKey }) + | _ -> c.ApiKey // assume paket-config was set properly + }) // If build fails after this point, we've pushed a release out with this version of CHANGELOG.md so we should keep it around Target.deactivateBuildFailure "RevertChangelog" diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs b/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs index f9037cb..d98469e 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/FakeDiagnosticsLogger.fs @@ -26,11 +26,11 @@ type FakeDiagnosticsLogger<'a when 'a :> LoggerCategory<'a> and 'a: (new: unit - member this.ShouldLogSensitiveData() : bool = false - member this.DbContextLogger = Unchecked.defaultof<_> + member this.DbContextLogger = failwith "todo" member this.DispatchEventData(definition, eventData, diagnosticSourceEnabled, simpleLogEnabled) = - Unchecked.defaultof<_> + failwith "todo" - member this.NeedsEventData(definition, diagnosticSourceEnabled, simpleLogEnabled) = false - member this.NeedsEventData(definition, interceptor, diagnosticSourceEnabled, simpleLogEnabled) = false - member this.ShouldLog(definition) = true + member this.NeedsEventData(definition, diagnosticSourceEnabled, simpleLogEnabled) = failwith "todo" + member this.NeedsEventData(definition, interceptor, diagnosticSourceEnabled, simpleLogEnabled) = failwith "todo" + member this.ShouldLog(definition) = failwith "todo" diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs b/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs index b9de144..4abc53d 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/Mocks.fs @@ -38,13 +38,12 @@ type MockHistoryRepository() = member __.CreateAsync(cancellationToken: CancellationToken) = Task.CompletedTask member __.get_LockReleaseBehavior() = - Unchecked.defaultof + LockReleaseBehavior.Explicit - member __.AcquireDatabaseLock() = - Unchecked.defaultof + member __.AcquireDatabaseLock() = null member __.AcquireDatabaseLockAsync(cancellationToken: CancellationToken) = - Task.FromResult(Unchecked.defaultof) + Task.FromResult(null) type MockProvider() = interface IDatabaseProvider with From 5629902dce94b7d8e377cbeb0c10c6d0a8b5f71b Mon Sep 17 00:00:00 2001 From: Vlad Dyshakov Date: Tue, 7 Apr 2026 14:00:12 +0700 Subject: [PATCH 19/19] Review fixes --- src/EFCore.FSharp/Internal/FSharpHelper.fs | 12 +++-- .../Design/FSharpSnapshotGenerator.fs | 50 +++++++++++++++---- .../Scaffolding/FSharpEntityTypeGenerator.fs | 18 +++++-- .../Design/FSharpMigrationsGeneratorTest.fs | 4 +- 4 files changed, 66 insertions(+), 18 deletions(-) diff --git a/src/EFCore.FSharp/Internal/FSharpHelper.fs b/src/EFCore.FSharp/Internal/FSharpHelper.fs index 03f148b..cd33e01 100644 --- a/src/EFCore.FSharp/Internal/FSharpHelper.fs +++ b/src/EFCore.FSharp/Internal/FSharpHelper.fs @@ -862,10 +862,16 @@ type FSharpHelper(relationalTypeMappingSource: IRelationalTypeMappingSource) = member this.Literal(value: string) : string = this.literalString value member this.Literal(value: TimeOnly) : string = - if value.Ticks % 10_000L = 0L then - sprintf "TimeOnly(%d, %d, %d, %d)" value.Hour value.Minute value.Second value.Millisecond + let result = + if value.Millisecond = 0 then + sprintf "TimeOnly(%d, %d, %d)" value.Hour value.Minute value.Second + else + sprintf "TimeOnly(%d, %d, %d, %d)" value.Hour value.Minute value.Second value.Millisecond + + if value.Ticks % 10_000L > 0L then + sprintf "%s.Add(TimeSpan.FromTicks(%dL))" result (value.Ticks % 10_000L) else - sprintf "TimeOnly(%dL)" value.Ticks + result member this.Literal(value: TimeSpan) = this.literalTimeSpan value diff --git a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs index 8e80590..a2c4483 100644 --- a/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs +++ b/src/EFCore.FSharp/Migrations/Design/FSharpSnapshotGenerator.fs @@ -589,28 +589,60 @@ type FSharpSnapshotGenerator let isExcludedAnnotation = tryGetAnnotationByName RelationalAnnotationNames.IsTableExcludedFromMigrations + let commentAnnotation = + tryGetAnnotationByName RelationalAnnotationNames.Comment + + let isExcluded = + notNull isExcludedAnnotation + && (isExcludedAnnotation.Value :?> Nullable) + .GetValueOrDefault() + + let comment = + if annotationAndValueNotNull commentAnnotation then + commentAnnotation.Value :?> string |> Option.ofObj + else + None + + let requiresTableBuilder = isExcluded || comment.IsSome + if notNull schema || (notNull schemaAnnotation && notNull tableName) then if isNull schema - && (notNull isExcludedAnnotation - && (isExcludedAnnotation.Value :?> Nullable) - .GetValueOrDefault() - <> true) then + && not requiresTableBuilder then sb.Append(sprintf ", (string %s)" (code.UnknownLiteral schema)) |> ignore elif notNull schema then sb.Append(sprintf ", %s" (code.UnknownLiteral schema)) |> ignore - if notNull isExcludedAnnotation then - if (isExcludedAnnotation.Value :?> Nullable) - .GetValueOrDefault() then - sb.Append ", (fun t -> t.ExcludeFromMigrations())" - |> ignore + if requiresTableBuilder then + let calls = ResizeArray() + + if isExcluded then + calls.Add("t.ExcludeFromMigrations()") + match comment with + | Some c -> calls.Add(sprintf "t.HasComment(%s)" (code.Literal c)) + | None -> () + + let body = + if calls.Count = 1 then + calls[0] + else + calls + |> Seq.map (fun c -> c + " |> ignore") + |> String.concat "; " + + sb.Append(sprintf ", (fun t -> %s)" body) |> ignore + + if notNull isExcludedAnnotation then annotations.Remove(isExcludedAnnotation.Name) |> ignore + if notNull commentAnnotation then + annotations.Remove(commentAnnotation.Name) + |> ignore + sb.Append ") |> ignore" |> ignore diff --git a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs index 937e62f..6241919 100644 --- a/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs +++ b/src/EFCore.FSharp/Scaffolding/FSharpEntityTypeGenerator.fs @@ -286,8 +286,13 @@ type FSharpEntityTypeGenerator AttributeWriter(nameof InversePropertyAttribute) let nameMatches = - navigation.DeclaringEntityType.GetMembers() - |> Seq.exists (fun m -> m.Name = inverseNavigation.DeclaringEntityType.Name) + let entityType = navigation.DeclaringEntityType + let targetName = inverseNavigation.DeclaringEntityType.Name + + entityType.GetProperties() + |> Seq.exists (fun p -> p.Name = targetName) + || entityType.GetNavigations() + |> Seq.exists (fun n -> n.Name = targetName) let param = if nameMatches then @@ -420,8 +425,13 @@ type FSharpEntityTypeGenerator AttributeWriter(nameof InversePropertyAttribute) let condition = - navigation.DeclaringEntityType.GetMembers() - |> Seq.exists (fun m -> m.Name = inverseNavigation.DeclaringEntityType.Name) + let entityType = navigation.DeclaringEntityType + let targetName = inverseNavigation.DeclaringEntityType.Name + + entityType.GetProperties() + |> Seq.exists (fun p -> p.Name = targetName) + || entityType.GetNavigations() + |> Seq.exists (fun n -> n.Name = targetName) if condition then inversePropertyAttribute.AddParameter(code.Literal inverseNavigation.Name) diff --git a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs index 42c347e..53c32c8 100644 --- a/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs +++ b/tests/EFCore.FSharp.Tests/Migrations/Design/FSharpMigrationsGeneratorTest.fs @@ -463,8 +463,8 @@ module FSharpMigrationsGeneratorTest = + @"entityTypeBuilder.HasDiscriminator().HasValue(""MyDiscriminatorValue"") |> ignore")) (RelationalAnnotationNames.Comment, (box "My Comment", - _toTable - + @"entityTypeBuilder.HasAnnotation(""Relational:Comment"", ""My Comment"") |> ignore")) + _nl + + @"entityTypeBuilder.ToTable(""WithAnnotations"", (fun t -> t.HasComment(""My Comment""))) |> ignore")) (RelationalAnnotationNames.ViewName, (box "MyView", _nl