├── .config └── dotnet-tools.json ├── .editorconfig ├── .gitignore ├── .paket └── Paket.Restore.targets ├── LICENSE ├── README.md ├── SQLDumper.sln ├── build.fsx ├── global.json ├── paket.dependencies ├── paket.lock └── src ├── SQLDumper.Tool ├── Program.fs ├── SQLDumper.Tool.fsproj └── paket.references └── SQLDumper ├── MSSQL.fs ├── SQLDumper.fs ├── SQLDumper.fsproj └── paket.references /.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "paket": { 6 | "version": "5.252.0", 7 | "commands": [ 8 | "paket" 9 | ] 10 | }, 11 | "fake-cli": { 12 | "version": "5.20.3", 13 | "commands": [ 14 | "fake" 15 | ] 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 4 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = false 10 | 11 | [*.yml] 12 | indent_size = 2 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .fable/ 2 | .fake/ 3 | .farmer/ 4 | .idea/ 5 | .ionide/ 6 | .vs/ 7 | obj/ 8 | bin/ 9 | packages/ 10 | paket-files/ 11 | node_modules/ 12 | publish/ 13 | release.cmd 14 | release.sh 15 | *.orig 16 | *.DotSettings.user -------------------------------------------------------------------------------- /.paket/Paket.Restore.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 8 | 9 | $(MSBuildVersion) 10 | 15.0.0 11 | false 12 | true 13 | 14 | true 15 | $(MSBuildThisFileDirectory) 16 | $(MSBuildThisFileDirectory)..\ 17 | $(PaketRootPath)paket-files\paket.restore.cached 18 | $(PaketRootPath)paket.lock 19 | classic 20 | proj 21 | assembly 22 | native 23 | /Library/Frameworks/Mono.framework/Commands/mono 24 | mono 25 | 26 | 27 | $(PaketRootPath)paket.bootstrapper.exe 28 | $(PaketToolsPath)paket.bootstrapper.exe 29 | $([System.IO.Path]::GetDirectoryName("$(PaketBootStrapperExePath)"))\ 30 | 31 | "$(PaketBootStrapperExePath)" 32 | $(MonoPath) --runtime=v4.0.30319 "$(PaketBootStrapperExePath)" 33 | 34 | 35 | 36 | 37 | true 38 | true 39 | 40 | 41 | True 42 | 43 | 44 | False 45 | 46 | $(BaseIntermediateOutputPath.TrimEnd('\').TrimEnd('\/')) 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | $(PaketRootPath)paket 56 | $(PaketToolsPath)paket 57 | 58 | 59 | 60 | 61 | 62 | $(PaketRootPath)paket.exe 63 | $(PaketToolsPath)paket.exe 64 | 65 | 66 | 67 | 68 | 69 | <_DotnetToolsJson Condition="Exists('$(PaketRootPath)/.config/dotnet-tools.json')">$([System.IO.File]::ReadAllText("$(PaketRootPath)/.config/dotnet-tools.json")) 70 | <_ConfigContainsPaket Condition=" '$(_DotnetToolsJson)' != ''">$(_DotnetToolsJson.Contains('"paket"')) 71 | <_ConfigContainsPaket Condition=" '$(_ConfigContainsPaket)' == ''">false 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | <_PaketCommand>dotnet paket 83 | 84 | 85 | 86 | 87 | 88 | $(PaketToolsPath)paket 89 | $(PaketBootStrapperExeDir)paket 90 | 91 | 92 | paket 93 | 94 | 95 | 96 | 97 | <_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)")) 98 | <_PaketCommand Condition=" '$(_PaketCommand)' == '' AND '$(_PaketExeExtension)' == '.dll' ">dotnet "$(PaketExePath)" 99 | <_PaketCommand Condition=" '$(_PaketCommand)' == '' AND '$(OS)' != 'Windows_NT' AND '$(_PaketExeExtension)' == '.exe' ">$(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" 100 | <_PaketCommand Condition=" '$(_PaketCommand)' == '' ">"$(PaketExePath)" 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | true 122 | $(NoWarn);NU1603;NU1604;NU1605;NU1608 123 | false 124 | true 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | $([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)')) 134 | 135 | 136 | 137 | 138 | 139 | 141 | $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[0].Replace(`"`, ``).Replace(` `, ``)) 142 | $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[1].Replace(`"`, ``).Replace(` `, ``)) 143 | 144 | 145 | 146 | 147 | %(PaketRestoreCachedKeyValue.Value) 148 | %(PaketRestoreCachedKeyValue.Value) 149 | 150 | 151 | 152 | 153 | true 154 | false 155 | true 156 | 157 | 158 | 162 | 163 | true 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | $(PaketIntermediateOutputPath)\$(MSBuildProjectFile).paket.references.cached 183 | 184 | $(MSBuildProjectFullPath).paket.references 185 | 186 | $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references 187 | 188 | $(MSBuildProjectDirectory)\paket.references 189 | 190 | false 191 | true 192 | true 193 | references-file-or-cache-not-found 194 | 195 | 196 | 197 | 198 | $([System.IO.File]::ReadAllText('$(PaketReferencesCachedFilePath)')) 199 | $([System.IO.File]::ReadAllText('$(PaketOriginalReferencesFilePath)')) 200 | references-file 201 | false 202 | 203 | 204 | 205 | 206 | false 207 | 208 | 209 | 210 | 211 | true 212 | target-framework '$(TargetFramework)' or '$(TargetFrameworks)' files @(PaketResolvedFilePaths) 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | false 224 | true 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length) 236 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) 237 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) 238 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4]) 239 | $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5]) 240 | 241 | 242 | %(PaketReferencesFileLinesInfo.PackageVersion) 243 | All 244 | runtime 245 | runtime 246 | true 247 | true 248 | 249 | 250 | 251 | 252 | $(PaketIntermediateOutputPath)/$(MSBuildProjectFile).paket.clitools 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[0]) 262 | $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[1]) 263 | 264 | 265 | %(PaketCliToolFileLinesInfo.PackageVersion) 266 | 267 | 268 | 269 | 273 | 274 | 275 | 276 | 277 | 278 | false 279 | 280 | 281 | 282 | 283 | 284 | <_NuspecFilesNewLocation Include="$(PaketIntermediateOutputPath)\$(Configuration)\*.nuspec"/> 285 | 286 | 287 | 288 | 289 | 290 | $(MSBuildProjectDirectory)/$(MSBuildProjectFile) 291 | true 292 | false 293 | true 294 | false 295 | true 296 | false 297 | true 298 | false 299 | true 300 | $(PaketIntermediateOutputPath)\$(Configuration) 301 | $(PaketIntermediateOutputPath) 302 | 303 | 304 | 305 | <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.$(PackageVersion.Split(`+`)[0]).nuspec"/> 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 363 | 364 | 407 | 408 | 450 | 451 | 492 | 493 | 494 | 495 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Roman Provazník 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SQLDumper ![GitHub](https://img.shields.io/github/license/Dzoukr/SQLDumper?style=flat-square) ![Nuget](https://img.shields.io/nuget/v/SQLDumper?label=SQLDumper&style=flat-square) ![Nuget](https://img.shields.io/nuget/v/SQLDumper.Tool?label=SQLDumper.Tool&style=flat-square) 2 | 3 | Dump your MSSQL database into file or stream using F# library or .NET CLI tool. 4 | 5 | ## Using F# library 6 | 7 | ### Installation 8 | 9 | If you want to install this package manually, use usual NuGet package command 10 | 11 | Install-Package SQLDumper 12 | 13 | or using [Paket](http://fsprojects.github.io/Paket/getting-started.html) 14 | 15 | paket add SQLDumper 16 | 17 | ### Usage 18 | 19 | Library is rather simple: 20 | 21 | ```f# 22 | open SQLDumper 23 | 24 | SQLDumper.init "myconnectionstring" 25 | |> SQLDumper.useGoStatements true // default 26 | |> SQLDumper.statementsInTransaction 1000 // default 27 | |> SQLDumper.rowsInStatement 100 // default 28 | |> SQLDumper.ignoreTables ["ignore1";"ignore2"] // empty by default 29 | |> MSSQL.dumpToFile "path/to/file.sql" 30 | ``` 31 | 32 | If you prefer using `TextWriter` from BCL, you can use `MSSQL.dumpToWriter` function. 33 | 34 | ## Using .NET CLI tool 35 | 36 | ### Installation 37 | 38 | To install .NET tool use this command 39 | 40 | dotnet tool install SQLDumper.Tool 41 | 42 | ### Usage 43 | 44 | Again, this CLI tool is rather simple: 45 | 46 | ``` 47 | USAGE: 48 | sqldump (-h | --help) 49 | sqldump [options] 50 | 51 | OPTIONS [options]: 52 | -h --help Shows help 53 | --usego Use GO statements [default: True] 54 | --statements Number of statements in transaction [default: 1000] 55 | --rows Number of rows in transaction [default: 100] 56 | --ignore Tables to ignore when doing SQL dump (use comma for more tables separation) 57 | ``` 58 | 59 | ## Kudos 👏 60 | 61 | Thanks to [@ArtemAvramenko](https://github.com/ArtemAvramenko) for his [SqlDump](https://github.com/ArtemAvramenko/SqlDump) C# library used as reference project for this library. 62 | -------------------------------------------------------------------------------- /SQLDumper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SQLDumper", "src\SQLDumper\SQLDumper.fsproj", "{1546C8B4-6F6B-4641-8459-8E9BB2ACD638}" 4 | EndProject 5 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SQLDumper.Tool", "src\SQLDumper.Tool\SQLDumper.Tool.fsproj", "{D7AF168B-6BE6-4013-804C-4FCDB13EF9C6}" 6 | EndProject 7 | Global 8 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 9 | Debug|Any CPU = Debug|Any CPU 10 | Release|Any CPU = Release|Any CPU 11 | EndGlobalSection 12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 | {1546C8B4-6F6B-4641-8459-8E9BB2ACD638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 14 | {1546C8B4-6F6B-4641-8459-8E9BB2ACD638}.Debug|Any CPU.Build.0 = Debug|Any CPU 15 | {1546C8B4-6F6B-4641-8459-8E9BB2ACD638}.Release|Any CPU.ActiveCfg = Release|Any CPU 16 | {1546C8B4-6F6B-4641-8459-8E9BB2ACD638}.Release|Any CPU.Build.0 = Release|Any CPU 17 | {D7AF168B-6BE6-4013-804C-4FCDB13EF9C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 18 | {D7AF168B-6BE6-4013-804C-4FCDB13EF9C6}.Debug|Any CPU.Build.0 = Debug|Any CPU 19 | {D7AF168B-6BE6-4013-804C-4FCDB13EF9C6}.Release|Any CPU.ActiveCfg = Release|Any CPU 20 | {D7AF168B-6BE6-4013-804C-4FCDB13EF9C6}.Release|Any CPU.Build.0 = Release|Any CPU 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /build.fsx: -------------------------------------------------------------------------------- 1 | #r "paket: groupref Build //" 2 | #load ".fake/build.fsx/intellisense.fsx" 3 | 4 | open System.IO 5 | open Fake.IO 6 | open Fake.Core 7 | open Fake.DotNet 8 | open Fake.IO.FileSystemOperators 9 | open Fake.Core.TargetOperators 10 | 11 | module Tools = 12 | let private findTool tool winTool = 13 | let tool = if Environment.isUnix then tool else winTool 14 | match ProcessUtils.tryFindFileOnPath tool with 15 | | Some t -> t 16 | | _ -> 17 | let errorMsg = 18 | tool + " was not found in path. " + 19 | "Please install it and make sure it's available from your path. " 20 | failwith errorMsg 21 | 22 | let private runTool (cmd:string) args workingDir = 23 | let arguments = args |> String.split ' ' |> Arguments.OfArgs 24 | Command.RawCommand (cmd, arguments) 25 | |> CreateProcess.fromCommand 26 | |> CreateProcess.withWorkingDirectory workingDir 27 | |> CreateProcess.ensureExitCode 28 | |> Proc.run 29 | |> ignore 30 | 31 | let dotnet cmd workingDir = 32 | let result = 33 | DotNet.exec (DotNet.Options.withWorkingDirectory workingDir) cmd "" 34 | if result.ExitCode <> 0 then failwithf "'dotnet %s' failed in %s" cmd workingDir 35 | 36 | let librarySrcPath = "src" "SQLDumper" 37 | let toolSrcPath = "src" "SQLDumper.Tool" 38 | 39 | let clean proj = 40 | [ 41 | proj "bin" 42 | proj "obj" 43 | ] 44 | |> Shell.deleteDirs 45 | 46 | let pack proj = 47 | Tools.dotnet "restore --no-cache" proj 48 | Tools.dotnet "pack -c Release" proj 49 | 50 | let publish proj = 51 | let nugetKey = 52 | match Environment.environVarOrNone "NUGET_KEY" with 53 | | Some nugetKey -> nugetKey 54 | | None -> failwith "The Nuget API key must be set in a NUGET_KEY environmental variable" 55 | let nupkg = 56 | Directory.GetFiles(proj "bin" "Release") 57 | |> Seq.head 58 | |> Path.GetFullPath 59 | Tools.dotnet (sprintf "nuget push %s -s nuget.org -k %s" nupkg nugetKey) proj 60 | 61 | Target.create "CleanLibrary" (fun _ -> librarySrcPath |> clean) 62 | Target.create "PackLibrary" (fun _ -> librarySrcPath |> pack) 63 | Target.create "PublishLibrary" (fun _ -> librarySrcPath |> publish) 64 | 65 | "CleanLibrary" ==> "PackLibrary" ==> "PublishLibrary" 66 | 67 | Target.create "CleanTool" (fun _ -> toolSrcPath |> clean) 68 | Target.create "PackTool" (fun _ -> toolSrcPath |> pack) 69 | Target.create "PublishTool" (fun _ -> toolSrcPath |> publish) 70 | 71 | "CleanTool" ==> "PackTool" ==> "PublishTool" 72 | 73 | Target.runOrDefaultWithArguments "CleanLibrary" -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "3.1.300" 4 | } 5 | } -------------------------------------------------------------------------------- /paket.dependencies: -------------------------------------------------------------------------------- 1 | version 5.249.0 2 | source https://api.nuget.org/v3/index.json 3 | framework: netcoreapp3.1, netstandard2.0 4 | storage: none 5 | 6 | nuget FSharp.Core = 4.7.0 7 | nuget Microsoft.Data.SqlClient 8 | nuget Fake.Core.CommandLineParsing 9 | nuget TaskBuilder.fs 10 | nuget Dapper 11 | 12 | group Build 13 | source https://api.nuget.org/v3/index.json 14 | framework: netstandard2.0 15 | storage: none 16 | 17 | nuget Fake.IO.FileSystem 18 | nuget Fake.Core.Target 19 | nuget Fake.DotNet.Cli 20 | -------------------------------------------------------------------------------- /paket.lock: -------------------------------------------------------------------------------- 1 | STORAGE: NONE 2 | RESTRICTION: || (== netcoreapp3.1) (== netstandard2.0) 3 | NUGET 4 | remote: https://api.nuget.org/v3/index.json 5 | Dapper (2.0.78) 6 | System.Reflection.Emit.Lightweight (>= 4.7) 7 | Fake.Core.CommandLineParsing (5.19.1) 8 | FParsec (>= 1.0.3) 9 | FSharp.Core (>= 4.7) 10 | FParsec (1.1.1) 11 | FSharp.Core (>= 4.3.4) 12 | FSharp.Core (4.7) 13 | Microsoft.CSharp (4.5) 14 | Microsoft.Data.SqlClient (2.1) 15 | Microsoft.Data.SqlClient.SNI.runtime (>= 2.1.1) 16 | Microsoft.Identity.Client (>= 4.21.1) 17 | Microsoft.IdentityModel.JsonWebTokens (>= 6.8) 18 | Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 6.8) 19 | Microsoft.Win32.Registry (>= 4.7) 20 | System.Buffers (>= 4.5.1) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 21 | System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.1)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 22 | System.Diagnostics.DiagnosticSource (>= 4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.1)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 23 | System.Memory (>= 4.5.4) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 24 | System.Runtime.Caching (>= 4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.1)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 25 | System.Security.Principal.Windows (>= 4.7) 26 | System.Text.Encoding.CodePages (>= 4.7) 27 | Microsoft.Data.SqlClient.SNI.runtime (2.1.1) 28 | Microsoft.Identity.Client (4.21.1) 29 | Microsoft.CSharp (>= 4.5) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 30 | NETStandard.Library (>= 1.6.1) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 31 | System.ComponentModel.TypeConverter (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 32 | System.Diagnostics.Process (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 33 | System.Dynamic.Runtime (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 34 | System.Private.Uri (>= 4.3.2) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 35 | System.Runtime.Serialization.Formatters (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 36 | System.Runtime.Serialization.Json (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (== netstandard2.0) 37 | System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 38 | System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 39 | System.Security.SecureString (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (>= monoandroid9.0)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 40 | System.Xml.XDocument (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (== netstandard2.0) 41 | System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 42 | Microsoft.IdentityModel.JsonWebTokens (6.8) 43 | Microsoft.IdentityModel.Tokens (>= 6.8) 44 | Microsoft.IdentityModel.Logging (6.8) 45 | Microsoft.IdentityModel.Protocols (6.8) 46 | Microsoft.IdentityModel.Logging (>= 6.8) 47 | Microsoft.IdentityModel.Tokens (>= 6.8) 48 | Microsoft.IdentityModel.Protocols.OpenIdConnect (6.8) 49 | Microsoft.IdentityModel.Protocols (>= 6.8) 50 | System.IdentityModel.Tokens.Jwt (>= 6.8) 51 | Microsoft.IdentityModel.Tokens (6.8) 52 | Microsoft.CSharp (>= 4.5) 53 | Microsoft.IdentityModel.Logging (>= 6.8) 54 | System.Security.Cryptography.Cng (>= 4.5) 55 | Microsoft.NETCore.Platforms (3.1) 56 | Microsoft.NETCore.Targets (1.1.3) 57 | Microsoft.Win32.Primitives (4.3) 58 | Microsoft.NETCore.Platforms (>= 1.1) 59 | Microsoft.NETCore.Targets (>= 1.1) 60 | System.Runtime (>= 4.3) 61 | Microsoft.Win32.Registry (4.7) 62 | System.Buffers (>= 4.5) - restriction: || (&& (== netcoreapp3.1) (>= monoandroid)) (&& (== netcoreapp3.1) (>= monotouch)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (&& (== netcoreapp3.1) (>= xamarinmac)) (&& (== netcoreapp3.1) (>= xamarintvos)) (&& (== netcoreapp3.1) (>= xamarinwatchos)) (== netstandard2.0) 63 | System.Memory (>= 4.5.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.1)) (== netstandard2.0) 64 | System.Security.AccessControl (>= 4.7) 65 | System.Security.Principal.Windows (>= 4.7) 66 | Microsoft.Win32.SystemEvents (4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 67 | Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) 68 | NETStandard.Library (1.6.1) 69 | Microsoft.NETCore.Platforms (>= 1.1) 70 | Microsoft.Win32.Primitives (>= 4.3) 71 | System.AppContext (>= 4.3) 72 | System.Collections (>= 4.3) 73 | System.Collections.Concurrent (>= 4.3) 74 | System.Console (>= 4.3) 75 | System.Diagnostics.Debug (>= 4.3) 76 | System.Diagnostics.Tools (>= 4.3) 77 | System.Diagnostics.Tracing (>= 4.3) 78 | System.Globalization (>= 4.3) 79 | System.Globalization.Calendars (>= 4.3) 80 | System.IO (>= 4.3) 81 | System.IO.Compression (>= 4.3) 82 | System.IO.Compression.ZipFile (>= 4.3) 83 | System.IO.FileSystem (>= 4.3) 84 | System.IO.FileSystem.Primitives (>= 4.3) 85 | System.Linq (>= 4.3) 86 | System.Linq.Expressions (>= 4.3) 87 | System.Net.Http (>= 4.3) 88 | System.Net.Primitives (>= 4.3) 89 | System.Net.Sockets (>= 4.3) 90 | System.ObjectModel (>= 4.3) 91 | System.Reflection (>= 4.3) 92 | System.Reflection.Extensions (>= 4.3) 93 | System.Reflection.Primitives (>= 4.3) 94 | System.Resources.ResourceManager (>= 4.3) 95 | System.Runtime (>= 4.3) 96 | System.Runtime.Extensions (>= 4.3) 97 | System.Runtime.Handles (>= 4.3) 98 | System.Runtime.InteropServices (>= 4.3) 99 | System.Runtime.InteropServices.RuntimeInformation (>= 4.3) 100 | System.Runtime.Numerics (>= 4.3) 101 | System.Security.Cryptography.Algorithms (>= 4.3) 102 | System.Security.Cryptography.Encoding (>= 4.3) 103 | System.Security.Cryptography.Primitives (>= 4.3) 104 | System.Security.Cryptography.X509Certificates (>= 4.3) 105 | System.Text.Encoding (>= 4.3) 106 | System.Text.Encoding.Extensions (>= 4.3) 107 | System.Text.RegularExpressions (>= 4.3) 108 | System.Threading (>= 4.3) 109 | System.Threading.Tasks (>= 4.3) 110 | System.Threading.Timer (>= 4.3) 111 | System.Xml.ReaderWriter (>= 4.3) 112 | System.Xml.XDocument (>= 4.3) 113 | runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 114 | runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 115 | runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 116 | runtime.native.System (4.3) 117 | Microsoft.NETCore.Platforms (>= 1.1) 118 | Microsoft.NETCore.Targets (>= 1.1) 119 | runtime.native.System.IO.Compression (4.3) 120 | Microsoft.NETCore.Platforms (>= 1.1) 121 | Microsoft.NETCore.Targets (>= 1.1) 122 | runtime.native.System.Net.Http (4.3) 123 | Microsoft.NETCore.Platforms (>= 1.1) 124 | Microsoft.NETCore.Targets (>= 1.1) 125 | runtime.native.System.Security.Cryptography.Apple (4.3) 126 | runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3) 127 | runtime.native.System.Security.Cryptography.OpenSsl (4.3) 128 | runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 129 | runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 130 | runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 131 | runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 132 | runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 133 | runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 134 | runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 135 | runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 136 | runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 137 | runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 138 | runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 139 | runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 140 | runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3) 141 | runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 142 | runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 143 | runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 144 | runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 145 | runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) 146 | System.AppContext (4.3) 147 | System.Runtime (>= 4.3) 148 | System.Buffers (4.5.1) 149 | System.Collections (4.3) 150 | Microsoft.NETCore.Platforms (>= 1.1) 151 | Microsoft.NETCore.Targets (>= 1.1) 152 | System.Runtime (>= 4.3) 153 | System.Collections.Concurrent (4.3) 154 | System.Collections (>= 4.3) 155 | System.Diagnostics.Debug (>= 4.3) 156 | System.Diagnostics.Tracing (>= 4.3) 157 | System.Globalization (>= 4.3) 158 | System.Reflection (>= 4.3) 159 | System.Resources.ResourceManager (>= 4.3) 160 | System.Runtime (>= 4.3) 161 | System.Runtime.Extensions (>= 4.3) 162 | System.Threading (>= 4.3) 163 | System.Threading.Tasks (>= 4.3) 164 | System.Collections.NonGeneric (4.3) - restriction: || (&& (== netcoreapp3.1) (>= net462)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 165 | System.Diagnostics.Debug (>= 4.3) 166 | System.Globalization (>= 4.3) 167 | System.Resources.ResourceManager (>= 4.3) 168 | System.Runtime (>= 4.3) 169 | System.Runtime.Extensions (>= 4.3) 170 | System.Threading (>= 4.3) 171 | System.Collections.Specialized (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 172 | System.Collections.NonGeneric (>= 4.3) 173 | System.Globalization (>= 4.3) 174 | System.Globalization.Extensions (>= 4.3) 175 | System.Resources.ResourceManager (>= 4.3) 176 | System.Runtime (>= 4.3) 177 | System.Runtime.Extensions (>= 4.3) 178 | System.Threading (>= 4.3) 179 | System.ComponentModel (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netstandard1.5)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 180 | System.Runtime (>= 4.3) 181 | System.ComponentModel.Primitives (4.3) - restriction: || (&& (== netcoreapp3.1) (>= net462)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netstandard1.0) (>= win8)) (&& (== netcoreapp3.1) (< netstandard1.5)) (&& (== netcoreapp3.1) (>= wp8)) (&& (== netcoreapp3.1) (>= wpa81)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 182 | System.ComponentModel (>= 4.3) 183 | System.Resources.ResourceManager (>= 4.3) 184 | System.Runtime (>= 4.3) 185 | System.ComponentModel.TypeConverter (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 186 | System.Collections (>= 4.3) 187 | System.Collections.NonGeneric (>= 4.3) 188 | System.Collections.Specialized (>= 4.3) 189 | System.ComponentModel (>= 4.3) 190 | System.ComponentModel.Primitives (>= 4.3) 191 | System.Globalization (>= 4.3) 192 | System.Linq (>= 4.3) 193 | System.Reflection (>= 4.3) 194 | System.Reflection.Extensions (>= 4.3) 195 | System.Reflection.Primitives (>= 4.3) 196 | System.Reflection.TypeExtensions (>= 4.3) 197 | System.Resources.ResourceManager (>= 4.3) 198 | System.Runtime (>= 4.3) 199 | System.Runtime.Extensions (>= 4.3) 200 | System.Threading (>= 4.3) 201 | System.Configuration.ConfigurationManager (4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.1)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 202 | System.Security.Cryptography.ProtectedData (>= 4.7) 203 | System.Security.Permissions (>= 4.7) 204 | System.Console (4.3) 205 | Microsoft.NETCore.Platforms (>= 1.1) 206 | Microsoft.NETCore.Targets (>= 1.1) 207 | System.IO (>= 4.3) 208 | System.Runtime (>= 4.3) 209 | System.Text.Encoding (>= 4.3) 210 | System.Diagnostics.Debug (4.3) 211 | Microsoft.NETCore.Platforms (>= 1.1) 212 | Microsoft.NETCore.Targets (>= 1.1) 213 | System.Runtime (>= 4.3) 214 | System.Diagnostics.DiagnosticSource (4.7) 215 | System.Diagnostics.Process (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 216 | Microsoft.NETCore.Platforms (>= 1.1) 217 | Microsoft.Win32.Primitives (>= 4.3) 218 | Microsoft.Win32.Registry (>= 4.3) 219 | runtime.native.System (>= 4.3) 220 | System.Collections (>= 4.3) 221 | System.Diagnostics.Debug (>= 4.3) 222 | System.Globalization (>= 4.3) 223 | System.IO (>= 4.3) 224 | System.IO.FileSystem (>= 4.3) 225 | System.IO.FileSystem.Primitives (>= 4.3) 226 | System.Resources.ResourceManager (>= 4.3) 227 | System.Runtime (>= 4.3) 228 | System.Runtime.Extensions (>= 4.3) 229 | System.Runtime.Handles (>= 4.3) 230 | System.Runtime.InteropServices (>= 4.3) 231 | System.Text.Encoding (>= 4.3) 232 | System.Text.Encoding.Extensions (>= 4.3) 233 | System.Threading (>= 4.3) 234 | System.Threading.Tasks (>= 4.3) 235 | System.Threading.Thread (>= 4.3) 236 | System.Threading.ThreadPool (>= 4.3) 237 | System.Diagnostics.Tools (4.3) 238 | Microsoft.NETCore.Platforms (>= 1.1) 239 | Microsoft.NETCore.Targets (>= 1.1) 240 | System.Runtime (>= 4.3) 241 | System.Diagnostics.Tracing (4.3) 242 | Microsoft.NETCore.Platforms (>= 1.1) 243 | Microsoft.NETCore.Targets (>= 1.1) 244 | System.Runtime (>= 4.3) 245 | System.Drawing.Common (4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 246 | Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) 247 | Microsoft.Win32.SystemEvents (>= 4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) 248 | System.Dynamic.Runtime (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 249 | System.Collections (>= 4.3) 250 | System.Diagnostics.Debug (>= 4.3) 251 | System.Linq (>= 4.3) 252 | System.Linq.Expressions (>= 4.3) 253 | System.ObjectModel (>= 4.3) 254 | System.Reflection (>= 4.3) 255 | System.Reflection.Emit (>= 4.3) 256 | System.Reflection.Emit.ILGeneration (>= 4.3) 257 | System.Reflection.Primitives (>= 4.3) 258 | System.Reflection.TypeExtensions (>= 4.3) 259 | System.Resources.ResourceManager (>= 4.3) 260 | System.Runtime (>= 4.3) 261 | System.Runtime.Extensions (>= 4.3) 262 | System.Threading (>= 4.3) 263 | System.Globalization (4.3) 264 | Microsoft.NETCore.Platforms (>= 1.1) 265 | Microsoft.NETCore.Targets (>= 1.1) 266 | System.Runtime (>= 4.3) 267 | System.Globalization.Calendars (4.3) 268 | Microsoft.NETCore.Platforms (>= 1.1) 269 | Microsoft.NETCore.Targets (>= 1.1) 270 | System.Globalization (>= 4.3) 271 | System.Runtime (>= 4.3) 272 | System.Globalization.Extensions (4.3) 273 | Microsoft.NETCore.Platforms (>= 1.1) 274 | System.Globalization (>= 4.3) 275 | System.Resources.ResourceManager (>= 4.3) 276 | System.Runtime (>= 4.3) 277 | System.Runtime.Extensions (>= 4.3) 278 | System.Runtime.InteropServices (>= 4.3) 279 | System.IdentityModel.Tokens.Jwt (6.8) 280 | Microsoft.IdentityModel.JsonWebTokens (>= 6.8) 281 | Microsoft.IdentityModel.Tokens (>= 6.8) 282 | System.IO (4.3) 283 | Microsoft.NETCore.Platforms (>= 1.1) 284 | Microsoft.NETCore.Targets (>= 1.1) 285 | System.Runtime (>= 4.3) 286 | System.Text.Encoding (>= 4.3) 287 | System.Threading.Tasks (>= 4.3) 288 | System.IO.Compression (4.3) 289 | Microsoft.NETCore.Platforms (>= 1.1) 290 | runtime.native.System (>= 4.3) 291 | runtime.native.System.IO.Compression (>= 4.3) 292 | System.Buffers (>= 4.3) 293 | System.Collections (>= 4.3) 294 | System.Diagnostics.Debug (>= 4.3) 295 | System.IO (>= 4.3) 296 | System.Resources.ResourceManager (>= 4.3) 297 | System.Runtime (>= 4.3) 298 | System.Runtime.Extensions (>= 4.3) 299 | System.Runtime.Handles (>= 4.3) 300 | System.Runtime.InteropServices (>= 4.3) 301 | System.Text.Encoding (>= 4.3) 302 | System.Threading (>= 4.3) 303 | System.Threading.Tasks (>= 4.3) 304 | System.IO.Compression.ZipFile (4.3) 305 | System.Buffers (>= 4.3) 306 | System.IO (>= 4.3) 307 | System.IO.Compression (>= 4.3) 308 | System.IO.FileSystem (>= 4.3) 309 | System.IO.FileSystem.Primitives (>= 4.3) 310 | System.Resources.ResourceManager (>= 4.3) 311 | System.Runtime (>= 4.3) 312 | System.Runtime.Extensions (>= 4.3) 313 | System.Text.Encoding (>= 4.3) 314 | System.IO.FileSystem (4.3) 315 | Microsoft.NETCore.Platforms (>= 1.1) 316 | Microsoft.NETCore.Targets (>= 1.1) 317 | System.IO (>= 4.3) 318 | System.IO.FileSystem.Primitives (>= 4.3) 319 | System.Runtime (>= 4.3) 320 | System.Runtime.Handles (>= 4.3) 321 | System.Text.Encoding (>= 4.3) 322 | System.Threading.Tasks (>= 4.3) 323 | System.IO.FileSystem.Primitives (4.3) 324 | System.Runtime (>= 4.3) 325 | System.Linq (4.3) 326 | System.Collections (>= 4.3) 327 | System.Diagnostics.Debug (>= 4.3) 328 | System.Resources.ResourceManager (>= 4.3) 329 | System.Runtime (>= 4.3) 330 | System.Runtime.Extensions (>= 4.3) 331 | System.Linq.Expressions (4.3) 332 | System.Collections (>= 4.3) 333 | System.Diagnostics.Debug (>= 4.3) 334 | System.Globalization (>= 4.3) 335 | System.IO (>= 4.3) 336 | System.Linq (>= 4.3) 337 | System.ObjectModel (>= 4.3) 338 | System.Reflection (>= 4.3) 339 | System.Reflection.Emit (>= 4.3) 340 | System.Reflection.Emit.ILGeneration (>= 4.3) 341 | System.Reflection.Emit.Lightweight (>= 4.3) 342 | System.Reflection.Extensions (>= 4.3) 343 | System.Reflection.Primitives (>= 4.3) 344 | System.Reflection.TypeExtensions (>= 4.3) 345 | System.Resources.ResourceManager (>= 4.3) 346 | System.Runtime (>= 4.3) 347 | System.Runtime.Extensions (>= 4.3) 348 | System.Threading (>= 4.3) 349 | System.Memory (4.5.4) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 350 | System.Buffers (>= 4.5.1) - restriction: || (&& (== netcoreapp3.1) (>= monoandroid)) (&& (== netcoreapp3.1) (>= monotouch)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netstandard1.1)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (&& (== netcoreapp3.1) (>= xamarinmac)) (&& (== netcoreapp3.1) (>= xamarintvos)) (&& (== netcoreapp3.1) (>= xamarinwatchos)) (== netstandard2.0) 351 | System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.0)) (== netstandard2.0) 352 | System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== netcoreapp3.1) (>= monoandroid)) (&& (== netcoreapp3.1) (>= monotouch)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netstandard1.1)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= uap10.1)) (&& (== netcoreapp3.1) (>= xamarinios)) (&& (== netcoreapp3.1) (>= xamarinmac)) (&& (== netcoreapp3.1) (>= xamarintvos)) (&& (== netcoreapp3.1) (>= xamarinwatchos)) (== netstandard2.0) 353 | System.Net.Http (4.3) 354 | Microsoft.NETCore.Platforms (>= 1.1) 355 | runtime.native.System (>= 4.3) 356 | runtime.native.System.Net.Http (>= 4.3) 357 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 358 | System.Collections (>= 4.3) 359 | System.Diagnostics.Debug (>= 4.3) 360 | System.Diagnostics.DiagnosticSource (>= 4.3) 361 | System.Diagnostics.Tracing (>= 4.3) 362 | System.Globalization (>= 4.3) 363 | System.Globalization.Extensions (>= 4.3) 364 | System.IO (>= 4.3) 365 | System.IO.FileSystem (>= 4.3) 366 | System.Net.Primitives (>= 4.3) 367 | System.Resources.ResourceManager (>= 4.3) 368 | System.Runtime (>= 4.3) 369 | System.Runtime.Extensions (>= 4.3) 370 | System.Runtime.Handles (>= 4.3) 371 | System.Runtime.InteropServices (>= 4.3) 372 | System.Security.Cryptography.Algorithms (>= 4.3) 373 | System.Security.Cryptography.Encoding (>= 4.3) 374 | System.Security.Cryptography.OpenSsl (>= 4.3) 375 | System.Security.Cryptography.Primitives (>= 4.3) 376 | System.Security.Cryptography.X509Certificates (>= 4.3) 377 | System.Text.Encoding (>= 4.3) 378 | System.Threading (>= 4.3) 379 | System.Threading.Tasks (>= 4.3) 380 | System.Net.Primitives (4.3) 381 | Microsoft.NETCore.Platforms (>= 1.1) 382 | Microsoft.NETCore.Targets (>= 1.1) 383 | System.Runtime (>= 4.3) 384 | System.Runtime.Handles (>= 4.3) 385 | System.Net.Sockets (4.3) 386 | Microsoft.NETCore.Platforms (>= 1.1) 387 | Microsoft.NETCore.Targets (>= 1.1) 388 | System.IO (>= 4.3) 389 | System.Net.Primitives (>= 4.3) 390 | System.Runtime (>= 4.3) 391 | System.Threading.Tasks (>= 4.3) 392 | System.Numerics.Vectors (4.4) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.0)) (== netstandard2.0) 393 | System.ObjectModel (4.3) 394 | System.Collections (>= 4.3) 395 | System.Diagnostics.Debug (>= 4.3) 396 | System.Resources.ResourceManager (>= 4.3) 397 | System.Runtime (>= 4.3) 398 | System.Threading (>= 4.3) 399 | System.Private.DataContractSerialization (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (== netstandard2.0) 400 | System.Collections (>= 4.3) 401 | System.Collections.Concurrent (>= 4.3) 402 | System.Diagnostics.Debug (>= 4.3) 403 | System.Globalization (>= 4.3) 404 | System.IO (>= 4.3) 405 | System.Linq (>= 4.3) 406 | System.Reflection (>= 4.3) 407 | System.Reflection.Emit.ILGeneration (>= 4.3) 408 | System.Reflection.Emit.Lightweight (>= 4.3) 409 | System.Reflection.Extensions (>= 4.3) 410 | System.Reflection.Primitives (>= 4.3) 411 | System.Reflection.TypeExtensions (>= 4.3) 412 | System.Resources.ResourceManager (>= 4.3) 413 | System.Runtime (>= 4.3) 414 | System.Runtime.Extensions (>= 4.3) 415 | System.Runtime.Serialization.Primitives (>= 4.3) 416 | System.Text.Encoding (>= 4.3) 417 | System.Text.Encoding.Extensions (>= 4.3) 418 | System.Text.RegularExpressions (>= 4.3) 419 | System.Threading (>= 4.3) 420 | System.Threading.Tasks (>= 4.3) 421 | System.Xml.ReaderWriter (>= 4.3) 422 | System.Xml.XDocument (>= 4.3) 423 | System.Xml.XmlDocument (>= 4.3) 424 | System.Xml.XmlSerializer (>= 4.3) 425 | System.Private.Uri (4.3.2) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 426 | Microsoft.NETCore.Platforms (>= 1.1.1) 427 | Microsoft.NETCore.Targets (>= 1.1.3) 428 | System.Reflection (4.3) 429 | Microsoft.NETCore.Platforms (>= 1.1) 430 | Microsoft.NETCore.Targets (>= 1.1) 431 | System.IO (>= 4.3) 432 | System.Reflection.Primitives (>= 4.3) 433 | System.Runtime (>= 4.3) 434 | System.Reflection.Emit (4.3) 435 | System.IO (>= 4.3) 436 | System.Reflection (>= 4.3) 437 | System.Reflection.Emit.ILGeneration (>= 4.3) 438 | System.Reflection.Primitives (>= 4.3) 439 | System.Runtime (>= 4.3) 440 | System.Reflection.Emit.ILGeneration (4.7) 441 | System.Reflection.Emit.Lightweight (4.7) 442 | System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.0) (< netstandard2.1)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (< portable-net45+wp8)) (&& (== netcoreapp3.1) (>= uap10.1)) (== netstandard2.0) 443 | System.Reflection.Extensions (4.3) 444 | Microsoft.NETCore.Platforms (>= 1.1) 445 | Microsoft.NETCore.Targets (>= 1.1) 446 | System.Reflection (>= 4.3) 447 | System.Runtime (>= 4.3) 448 | System.Reflection.Primitives (4.3) 449 | Microsoft.NETCore.Platforms (>= 1.1) 450 | Microsoft.NETCore.Targets (>= 1.1) 451 | System.Runtime (>= 4.3) 452 | System.Reflection.TypeExtensions (4.3) 453 | System.Reflection (>= 4.3) 454 | System.Runtime (>= 4.3) 455 | System.Resources.ResourceManager (4.3) 456 | Microsoft.NETCore.Platforms (>= 1.1) 457 | Microsoft.NETCore.Targets (>= 1.1) 458 | System.Globalization (>= 4.3) 459 | System.Reflection (>= 4.3) 460 | System.Runtime (>= 4.3) 461 | System.Runtime (4.3) 462 | Microsoft.NETCore.Platforms (>= 1.1) 463 | Microsoft.NETCore.Targets (>= 1.1) 464 | System.Runtime.Caching (4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.1)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 465 | System.Configuration.ConfigurationManager (>= 4.7) 466 | System.Runtime.CompilerServices.Unsafe (4.7) - restriction: || (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (== netstandard2.0) 467 | System.Runtime.Extensions (4.3) 468 | Microsoft.NETCore.Platforms (>= 1.1) 469 | Microsoft.NETCore.Targets (>= 1.1) 470 | System.Runtime (>= 4.3) 471 | System.Runtime.Handles (4.3) 472 | Microsoft.NETCore.Platforms (>= 1.1) 473 | Microsoft.NETCore.Targets (>= 1.1) 474 | System.Runtime (>= 4.3) 475 | System.Runtime.InteropServices (4.3) 476 | Microsoft.NETCore.Platforms (>= 1.1) 477 | Microsoft.NETCore.Targets (>= 1.1) 478 | System.Reflection (>= 4.3) 479 | System.Reflection.Primitives (>= 4.3) 480 | System.Runtime (>= 4.3) 481 | System.Runtime.Handles (>= 4.3) 482 | System.Runtime.InteropServices.RuntimeInformation (4.3) 483 | runtime.native.System (>= 4.3) 484 | System.Reflection (>= 4.3) 485 | System.Reflection.Extensions (>= 4.3) 486 | System.Resources.ResourceManager (>= 4.3) 487 | System.Runtime (>= 4.3) 488 | System.Runtime.InteropServices (>= 4.3) 489 | System.Threading (>= 4.3) 490 | System.Runtime.Numerics (4.3) 491 | System.Globalization (>= 4.3) 492 | System.Resources.ResourceManager (>= 4.3) 493 | System.Runtime (>= 4.3) 494 | System.Runtime.Extensions (>= 4.3) 495 | System.Runtime.Serialization.Formatters (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 496 | System.Collections (>= 4.3) 497 | System.Reflection (>= 4.3) 498 | System.Resources.ResourceManager (>= 4.3) 499 | System.Runtime (>= 4.3) 500 | System.Runtime.Serialization.Primitives (>= 4.3) 501 | System.Runtime.Serialization.Json (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (== netstandard2.0) 502 | System.IO (>= 4.3) 503 | System.Private.DataContractSerialization (>= 4.3) 504 | System.Runtime (>= 4.3) 505 | System.Runtime.Serialization.Primitives (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 506 | System.Resources.ResourceManager (>= 4.3) 507 | System.Runtime (>= 4.3) 508 | System.Security.AccessControl (4.7) 509 | Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) 510 | System.Security.Principal.Windows (>= 4.7) 511 | System.Security.Cryptography.Algorithms (4.3) 512 | Microsoft.NETCore.Platforms (>= 1.1) 513 | runtime.native.System.Security.Cryptography.Apple (>= 4.3) 514 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 515 | System.Collections (>= 4.3) 516 | System.IO (>= 4.3) 517 | System.Resources.ResourceManager (>= 4.3) 518 | System.Runtime (>= 4.3) 519 | System.Runtime.Extensions (>= 4.3) 520 | System.Runtime.Handles (>= 4.3) 521 | System.Runtime.InteropServices (>= 4.3) 522 | System.Runtime.Numerics (>= 4.3) 523 | System.Security.Cryptography.Encoding (>= 4.3) 524 | System.Security.Cryptography.Primitives (>= 4.3) 525 | System.Text.Encoding (>= 4.3) 526 | System.Security.Cryptography.Cng (4.5) 527 | System.Security.Cryptography.Csp (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 528 | Microsoft.NETCore.Platforms (>= 1.1) 529 | System.IO (>= 4.3) 530 | System.Reflection (>= 4.3) 531 | System.Resources.ResourceManager (>= 4.3) 532 | System.Runtime (>= 4.3) 533 | System.Runtime.Extensions (>= 4.3) 534 | System.Runtime.Handles (>= 4.3) 535 | System.Runtime.InteropServices (>= 4.3) 536 | System.Security.Cryptography.Algorithms (>= 4.3) 537 | System.Security.Cryptography.Encoding (>= 4.3) 538 | System.Security.Cryptography.Primitives (>= 4.3) 539 | System.Text.Encoding (>= 4.3) 540 | System.Threading (>= 4.3) 541 | System.Security.Cryptography.Encoding (4.3) 542 | Microsoft.NETCore.Platforms (>= 1.1) 543 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 544 | System.Collections (>= 4.3) 545 | System.Collections.Concurrent (>= 4.3) 546 | System.Linq (>= 4.3) 547 | System.Resources.ResourceManager (>= 4.3) 548 | System.Runtime (>= 4.3) 549 | System.Runtime.Extensions (>= 4.3) 550 | System.Runtime.Handles (>= 4.3) 551 | System.Runtime.InteropServices (>= 4.3) 552 | System.Security.Cryptography.Primitives (>= 4.3) 553 | System.Text.Encoding (>= 4.3) 554 | System.Security.Cryptography.OpenSsl (4.3) 555 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 556 | System.Collections (>= 4.3) 557 | System.IO (>= 4.3) 558 | System.Resources.ResourceManager (>= 4.3) 559 | System.Runtime (>= 4.3) 560 | System.Runtime.Extensions (>= 4.3) 561 | System.Runtime.Handles (>= 4.3) 562 | System.Runtime.InteropServices (>= 4.3) 563 | System.Runtime.Numerics (>= 4.3) 564 | System.Security.Cryptography.Algorithms (>= 4.3) 565 | System.Security.Cryptography.Encoding (>= 4.3) 566 | System.Security.Cryptography.Primitives (>= 4.3) 567 | System.Text.Encoding (>= 4.3) 568 | System.Security.Cryptography.Primitives (4.3) 569 | System.Diagnostics.Debug (>= 4.3) 570 | System.Globalization (>= 4.3) 571 | System.IO (>= 4.3) 572 | System.Resources.ResourceManager (>= 4.3) 573 | System.Runtime (>= 4.3) 574 | System.Threading (>= 4.3) 575 | System.Threading.Tasks (>= 4.3) 576 | System.Security.Cryptography.ProtectedData (4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.1)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 577 | System.Security.Cryptography.X509Certificates (4.3) 578 | Microsoft.NETCore.Platforms (>= 1.1) 579 | runtime.native.System (>= 4.3) 580 | runtime.native.System.Net.Http (>= 4.3) 581 | runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) 582 | System.Collections (>= 4.3) 583 | System.Diagnostics.Debug (>= 4.3) 584 | System.Globalization (>= 4.3) 585 | System.Globalization.Calendars (>= 4.3) 586 | System.IO (>= 4.3) 587 | System.IO.FileSystem (>= 4.3) 588 | System.IO.FileSystem.Primitives (>= 4.3) 589 | System.Resources.ResourceManager (>= 4.3) 590 | System.Runtime (>= 4.3) 591 | System.Runtime.Extensions (>= 4.3) 592 | System.Runtime.Handles (>= 4.3) 593 | System.Runtime.InteropServices (>= 4.3) 594 | System.Runtime.Numerics (>= 4.3) 595 | System.Security.Cryptography.Algorithms (>= 4.3) 596 | System.Security.Cryptography.Cng (>= 4.3) 597 | System.Security.Cryptography.Csp (>= 4.3) 598 | System.Security.Cryptography.Encoding (>= 4.3) 599 | System.Security.Cryptography.OpenSsl (>= 4.3) 600 | System.Security.Cryptography.Primitives (>= 4.3) 601 | System.Text.Encoding (>= 4.3) 602 | System.Threading (>= 4.3) 603 | System.Security.Permissions (4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.1)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 604 | System.Security.AccessControl (>= 4.7) 605 | System.Windows.Extensions (>= 4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) 606 | System.Security.Principal.Windows (4.7) 607 | System.Security.SecureString (4.3) - restriction: || (&& (== netcoreapp3.1) (>= monoandroid9.0)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 608 | Microsoft.NETCore.Platforms (>= 1.1) 609 | System.Resources.ResourceManager (>= 4.3) 610 | System.Runtime (>= 4.3) 611 | System.Runtime.Handles (>= 4.3) 612 | System.Runtime.InteropServices (>= 4.3) 613 | System.Security.Cryptography.Primitives (>= 4.3) 614 | System.Text.Encoding (>= 4.3) 615 | System.Threading (>= 4.3) 616 | System.Text.Encoding (4.3) 617 | Microsoft.NETCore.Platforms (>= 1.1) 618 | Microsoft.NETCore.Targets (>= 1.1) 619 | System.Runtime (>= 4.3) 620 | System.Text.Encoding.CodePages (4.7) 621 | Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) 622 | System.Runtime.CompilerServices.Unsafe (>= 4.7) - restriction: || (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (== netstandard2.0) 623 | System.Text.Encoding.Extensions (4.3) 624 | Microsoft.NETCore.Platforms (>= 1.1) 625 | Microsoft.NETCore.Targets (>= 1.1) 626 | System.Runtime (>= 4.3) 627 | System.Text.Encoding (>= 4.3) 628 | System.Text.RegularExpressions (4.3) 629 | System.Collections (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp1.1)) (== netstandard2.0) 630 | System.Globalization (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp1.1)) (== netstandard2.0) 631 | System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp1.1)) (== netstandard2.0) 632 | System.Runtime (>= 4.3) 633 | System.Runtime.Extensions (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp1.1)) (== netstandard2.0) 634 | System.Threading (>= 4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp1.1)) (== netstandard2.0) 635 | System.Threading (4.3) 636 | System.Runtime (>= 4.3) 637 | System.Threading.Tasks (>= 4.3) 638 | System.Threading.Tasks (4.3) 639 | Microsoft.NETCore.Platforms (>= 1.1) 640 | Microsoft.NETCore.Targets (>= 1.1) 641 | System.Runtime (>= 4.3) 642 | System.Threading.Tasks.Extensions (4.3) 643 | System.Collections (>= 4.3) 644 | System.Runtime (>= 4.3) 645 | System.Threading.Tasks (>= 4.3) 646 | System.Threading.Thread (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 647 | System.Runtime (>= 4.3) 648 | System.Threading.ThreadPool (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) 649 | System.Runtime (>= 4.3) 650 | System.Runtime.Handles (>= 4.3) 651 | System.Threading.Timer (4.3) 652 | Microsoft.NETCore.Platforms (>= 1.1) 653 | Microsoft.NETCore.Targets (>= 1.1) 654 | System.Runtime (>= 4.3) 655 | System.ValueTuple (4.4) 656 | System.Windows.Extensions (4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) (&& (== netstandard2.0) (>= netcoreapp3.1)) 657 | System.Drawing.Common (>= 4.7) - restriction: || (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) 658 | System.Xml.ReaderWriter (4.3) 659 | System.Collections (>= 4.3) 660 | System.Diagnostics.Debug (>= 4.3) 661 | System.Globalization (>= 4.3) 662 | System.IO (>= 4.3) 663 | System.IO.FileSystem (>= 4.3) 664 | System.IO.FileSystem.Primitives (>= 4.3) 665 | System.Resources.ResourceManager (>= 4.3) 666 | System.Runtime (>= 4.3) 667 | System.Runtime.Extensions (>= 4.3) 668 | System.Runtime.InteropServices (>= 4.3) 669 | System.Text.Encoding (>= 4.3) 670 | System.Text.Encoding.Extensions (>= 4.3) 671 | System.Text.RegularExpressions (>= 4.3) 672 | System.Threading.Tasks (>= 4.3) 673 | System.Threading.Tasks.Extensions (>= 4.3) 674 | System.Xml.XDocument (4.3) 675 | System.Collections (>= 4.3) 676 | System.Diagnostics.Debug (>= 4.3) 677 | System.Diagnostics.Tools (>= 4.3) 678 | System.Globalization (>= 4.3) 679 | System.IO (>= 4.3) 680 | System.Reflection (>= 4.3) 681 | System.Resources.ResourceManager (>= 4.3) 682 | System.Runtime (>= 4.3) 683 | System.Runtime.Extensions (>= 4.3) 684 | System.Text.Encoding (>= 4.3) 685 | System.Threading (>= 4.3) 686 | System.Xml.ReaderWriter (>= 4.3) 687 | System.Xml.XmlDocument (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= xamarinios)) (== netstandard2.0) 688 | System.Collections (>= 4.3) 689 | System.Diagnostics.Debug (>= 4.3) 690 | System.Globalization (>= 4.3) 691 | System.IO (>= 4.3) 692 | System.Resources.ResourceManager (>= 4.3) 693 | System.Runtime (>= 4.3) 694 | System.Runtime.Extensions (>= 4.3) 695 | System.Text.Encoding (>= 4.3) 696 | System.Threading (>= 4.3) 697 | System.Xml.ReaderWriter (>= 4.3) 698 | System.Xml.XmlSerializer (4.3) - restriction: || (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.0)) (== netstandard2.0) 699 | System.Collections (>= 4.3) 700 | System.Globalization (>= 4.3) 701 | System.IO (>= 4.3) 702 | System.Linq (>= 4.3) 703 | System.Reflection (>= 4.3) 704 | System.Reflection.Emit (>= 4.3) 705 | System.Reflection.Emit.ILGeneration (>= 4.3) 706 | System.Reflection.Extensions (>= 4.3) 707 | System.Reflection.Primitives (>= 4.3) 708 | System.Reflection.TypeExtensions (>= 4.3) 709 | System.Resources.ResourceManager (>= 4.3) 710 | System.Runtime (>= 4.3) 711 | System.Runtime.Extensions (>= 4.3) 712 | System.Text.RegularExpressions (>= 4.3) 713 | System.Threading (>= 4.3) 714 | System.Xml.ReaderWriter (>= 4.3) 715 | System.Xml.XmlDocument (>= 4.3) 716 | TaskBuilder.fs (2.1) 717 | FSharp.Core (>= 4.1.17) 718 | NETStandard.Library (>= 1.6.1) 719 | System.ValueTuple (>= 4.4) 720 | 721 | GROUP Build 722 | STORAGE: NONE 723 | RESTRICTION: == netstandard2.0 724 | NUGET 725 | remote: https://api.nuget.org/v3/index.json 726 | BlackFox.VsWhere (1.1) 727 | FSharp.Core (>= 4.2.3) 728 | Microsoft.Win32.Registry (>= 4.7) 729 | Fake.Core.CommandLineParsing (5.20.3) 730 | FParsec (>= 1.1.1) 731 | FSharp.Core (>= 4.7.2) 732 | Fake.Core.Context (5.20.3) 733 | FSharp.Core (>= 4.7.2) 734 | Fake.Core.Environment (5.20.3) 735 | FSharp.Core (>= 4.7.2) 736 | Fake.Core.FakeVar (5.20.3) 737 | Fake.Core.Context (>= 5.20.3) 738 | FSharp.Core (>= 4.7.2) 739 | Fake.Core.Process (5.20.3) 740 | Fake.Core.Environment (>= 5.20.3) 741 | Fake.Core.FakeVar (>= 5.20.3) 742 | Fake.Core.String (>= 5.20.3) 743 | Fake.Core.Trace (>= 5.20.3) 744 | Fake.IO.FileSystem (>= 5.20.3) 745 | FSharp.Core (>= 4.7.2) 746 | System.Collections.Immutable (>= 1.7.1) 747 | Fake.Core.SemVer (5.20.3) 748 | FSharp.Core (>= 4.7.2) 749 | Fake.Core.String (5.20.3) 750 | FSharp.Core (>= 4.7.2) 751 | Fake.Core.Target (5.20.3) 752 | Fake.Core.CommandLineParsing (>= 5.20.3) 753 | Fake.Core.Context (>= 5.20.3) 754 | Fake.Core.Environment (>= 5.20.3) 755 | Fake.Core.FakeVar (>= 5.20.3) 756 | Fake.Core.Process (>= 5.20.3) 757 | Fake.Core.String (>= 5.20.3) 758 | Fake.Core.Trace (>= 5.20.3) 759 | FSharp.Control.Reactive (>= 4.4.2) 760 | FSharp.Core (>= 4.7.2) 761 | Fake.Core.Tasks (5.20.3) 762 | Fake.Core.Trace (>= 5.20.3) 763 | FSharp.Core (>= 4.7.2) 764 | Fake.Core.Trace (5.20.3) 765 | Fake.Core.Environment (>= 5.20.3) 766 | Fake.Core.FakeVar (>= 5.20.3) 767 | FSharp.Core (>= 4.7.2) 768 | Fake.Core.Xml (5.20.3) 769 | Fake.Core.String (>= 5.20.3) 770 | FSharp.Core (>= 4.7.2) 771 | Fake.DotNet.Cli (5.20.3) 772 | Fake.Core.Environment (>= 5.20.3) 773 | Fake.Core.Process (>= 5.20.3) 774 | Fake.Core.String (>= 5.20.3) 775 | Fake.Core.Trace (>= 5.20.3) 776 | Fake.DotNet.MSBuild (>= 5.20.3) 777 | Fake.DotNet.NuGet (>= 5.20.3) 778 | Fake.IO.FileSystem (>= 5.20.3) 779 | FSharp.Core (>= 4.7.2) 780 | Mono.Posix.NETStandard (>= 1.0) 781 | Newtonsoft.Json (>= 12.0.3) 782 | Fake.DotNet.MSBuild (5.20.3) 783 | BlackFox.VsWhere (>= 1.1) 784 | Fake.Core.Environment (>= 5.20.3) 785 | Fake.Core.Process (>= 5.20.3) 786 | Fake.Core.String (>= 5.20.3) 787 | Fake.Core.Trace (>= 5.20.3) 788 | Fake.IO.FileSystem (>= 5.20.3) 789 | FSharp.Core (>= 4.7.2) 790 | MSBuild.StructuredLogger (>= 2.1.176) 791 | Fake.DotNet.NuGet (5.20.3) 792 | Fake.Core.Environment (>= 5.20.3) 793 | Fake.Core.Process (>= 5.20.3) 794 | Fake.Core.SemVer (>= 5.20.3) 795 | Fake.Core.String (>= 5.20.3) 796 | Fake.Core.Tasks (>= 5.20.3) 797 | Fake.Core.Trace (>= 5.20.3) 798 | Fake.Core.Xml (>= 5.20.3) 799 | Fake.IO.FileSystem (>= 5.20.3) 800 | Fake.Net.Http (>= 5.20.3) 801 | FSharp.Core (>= 4.7.2) 802 | Newtonsoft.Json (>= 12.0.3) 803 | NuGet.Protocol (>= 5.6) 804 | Fake.IO.FileSystem (5.20.3) 805 | Fake.Core.String (>= 5.20.3) 806 | FSharp.Core (>= 4.7.2) 807 | Fake.Net.Http (5.20.3) 808 | Fake.Core.Trace (>= 5.20.3) 809 | FSharp.Core (>= 4.7.2) 810 | FParsec (1.1.1) 811 | FSharp.Core (>= 4.3.4) 812 | FSharp.Control.Reactive (4.4.2) 813 | FSharp.Core (>= 4.7.2) 814 | System.Reactive (>= 4.4.1) 815 | FSharp.Core (5.0) 816 | Microsoft.Build (16.8) 817 | Microsoft.Build.Framework (16.8) 818 | System.Security.Permissions (>= 4.7) 819 | Microsoft.Build.Tasks.Core (16.8) 820 | Microsoft.Build.Framework (>= 16.8) 821 | Microsoft.Build.Utilities.Core (>= 16.8) 822 | Microsoft.Win32.Registry (>= 4.3) 823 | System.CodeDom (>= 4.4) 824 | System.Collections.Immutable (>= 1.5) 825 | System.Reflection.Metadata (>= 1.6) 826 | System.Reflection.TypeExtensions (>= 4.1) 827 | System.Resources.Extensions (>= 4.6) 828 | System.Runtime.InteropServices (>= 4.3) 829 | System.Security.Cryptography.Pkcs (>= 4.7) 830 | System.Security.Cryptography.Xml (>= 4.7) 831 | System.Security.Permissions (>= 4.7) 832 | System.Threading.Tasks.Dataflow (>= 4.9) 833 | Microsoft.Build.Utilities.Core (16.8) 834 | Microsoft.Build.Framework (>= 16.8) 835 | Microsoft.Win32.Registry (>= 4.3) 836 | System.Collections.Immutable (>= 1.5) 837 | System.Security.Permissions (>= 4.7) 838 | System.Text.Encoding.CodePages (>= 4.0.1) 839 | Microsoft.NETCore.Platforms (5.0) 840 | Microsoft.NETCore.Targets (5.0) 841 | Microsoft.Win32.Registry (5.0) 842 | System.Buffers (>= 4.5.1) 843 | System.Memory (>= 4.5.4) 844 | System.Security.AccessControl (>= 5.0) 845 | System.Security.Principal.Windows (>= 5.0) 846 | Mono.Posix.NETStandard (1.0) 847 | MSBuild.StructuredLogger (2.1.215) 848 | Microsoft.Build (>= 16.4) 849 | Microsoft.Build.Framework (>= 16.4) 850 | Microsoft.Build.Tasks.Core (>= 16.4) 851 | Microsoft.Build.Utilities.Core (>= 16.4) 852 | Newtonsoft.Json (12.0.3) 853 | NuGet.Common (5.8) 854 | NuGet.Frameworks (>= 5.8) 855 | NuGet.Configuration (5.8) 856 | NuGet.Common (>= 5.8) 857 | System.Security.Cryptography.ProtectedData (>= 4.4) 858 | NuGet.Frameworks (5.8) 859 | NuGet.Packaging (5.8) 860 | Newtonsoft.Json (>= 9.0.1) 861 | NuGet.Configuration (>= 5.8) 862 | NuGet.Versioning (>= 5.8) 863 | System.Security.Cryptography.Cng (>= 5.0.0-preview.3.20214.6) 864 | System.Security.Cryptography.Pkcs (>= 5.0.0-preview.3.20214.6) 865 | NuGet.Protocol (5.8) 866 | NuGet.Packaging (>= 5.8) 867 | NuGet.Versioning (5.8) 868 | System.Buffers (4.5.1) 869 | System.CodeDom (5.0) 870 | System.Collections.Immutable (5.0) 871 | System.Memory (>= 4.5.4) 872 | System.Formats.Asn1 (5.0) 873 | System.Buffers (>= 4.5.1) 874 | System.Memory (>= 4.5.4) 875 | System.IO (4.3) 876 | Microsoft.NETCore.Platforms (>= 1.1) 877 | Microsoft.NETCore.Targets (>= 1.1) 878 | System.Runtime (>= 4.3) 879 | System.Text.Encoding (>= 4.3) 880 | System.Threading.Tasks (>= 4.3) 881 | System.Memory (4.5.4) 882 | System.Buffers (>= 4.5.1) 883 | System.Numerics.Vectors (>= 4.4) 884 | System.Runtime.CompilerServices.Unsafe (>= 4.5.3) 885 | System.Numerics.Vectors (4.5) 886 | System.Reactive (5.0) 887 | System.Runtime.InteropServices.WindowsRuntime (>= 4.3) 888 | System.Threading.Tasks.Extensions (>= 4.5.4) 889 | System.Reflection (4.3) 890 | Microsoft.NETCore.Platforms (>= 1.1) 891 | Microsoft.NETCore.Targets (>= 1.1) 892 | System.IO (>= 4.3) 893 | System.Reflection.Primitives (>= 4.3) 894 | System.Runtime (>= 4.3) 895 | System.Reflection.Metadata (5.0) 896 | System.Collections.Immutable (>= 5.0) 897 | System.Reflection.Primitives (4.3) 898 | Microsoft.NETCore.Platforms (>= 1.1) 899 | Microsoft.NETCore.Targets (>= 1.1) 900 | System.Runtime (>= 4.3) 901 | System.Reflection.TypeExtensions (4.7) 902 | System.Resources.Extensions (5.0) 903 | System.Memory (>= 4.5.4) 904 | System.Runtime (4.3.1) 905 | Microsoft.NETCore.Platforms (>= 1.1.1) 906 | Microsoft.NETCore.Targets (>= 1.1.3) 907 | System.Runtime.CompilerServices.Unsafe (5.0) 908 | System.Runtime.Handles (4.3) 909 | Microsoft.NETCore.Platforms (>= 1.1) 910 | Microsoft.NETCore.Targets (>= 1.1) 911 | System.Runtime (>= 4.3) 912 | System.Runtime.InteropServices (4.3) 913 | Microsoft.NETCore.Platforms (>= 1.1) 914 | Microsoft.NETCore.Targets (>= 1.1) 915 | System.Reflection (>= 4.3) 916 | System.Reflection.Primitives (>= 4.3) 917 | System.Runtime (>= 4.3) 918 | System.Runtime.Handles (>= 4.3) 919 | System.Runtime.InteropServices.WindowsRuntime (4.3) 920 | System.Runtime (>= 4.3) 921 | System.Security.AccessControl (5.0) 922 | System.Security.Principal.Windows (>= 5.0) 923 | System.Security.Cryptography.Cng (5.0) 924 | System.Security.Cryptography.Pkcs (5.0) 925 | System.Buffers (>= 4.5.1) 926 | System.Formats.Asn1 (>= 5.0) 927 | System.Memory (>= 4.5.4) 928 | System.Security.Cryptography.Cng (>= 5.0) 929 | System.Security.Cryptography.ProtectedData (5.0) 930 | System.Memory (>= 4.5.4) 931 | System.Security.Cryptography.Xml (5.0) 932 | System.Memory (>= 4.5.4) 933 | System.Security.Cryptography.Pkcs (>= 5.0) 934 | System.Security.Permissions (>= 5.0) 935 | System.Security.Permissions (5.0) 936 | System.Security.AccessControl (>= 5.0) 937 | System.Security.Principal.Windows (5.0) 938 | System.Text.Encoding (4.3) 939 | Microsoft.NETCore.Platforms (>= 1.1) 940 | Microsoft.NETCore.Targets (>= 1.1) 941 | System.Runtime (>= 4.3) 942 | System.Text.Encoding.CodePages (5.0) 943 | System.Runtime.CompilerServices.Unsafe (>= 5.0) 944 | System.Threading.Tasks (4.3) 945 | Microsoft.NETCore.Platforms (>= 1.1) 946 | Microsoft.NETCore.Targets (>= 1.1) 947 | System.Runtime (>= 4.3) 948 | System.Threading.Tasks.Dataflow (5.0) 949 | System.Threading.Tasks.Extensions (4.5.4) 950 | System.Runtime.CompilerServices.Unsafe (>= 4.5.3) 951 | -------------------------------------------------------------------------------- /src/SQLDumper.Tool/Program.fs: -------------------------------------------------------------------------------- 1 | module SQLDumper.Tool.Program 2 | 3 | open System 4 | open Fake.Core 5 | open SQLDumper 6 | 7 | // CLI interface definition 8 | let cli = 9 | """ 10 | USAGE: 11 | sqldump (-h | --help) 12 | sqldump [options] 13 | 14 | OPTIONS [options]: 15 | -h --help Shows help 16 | --usego Use GO statements [default: True] 17 | --statements Number of statements in transaction [default: 1000] 18 | --rows Number of rows in transaction [default: 100] 19 | --ignore Tables to ignore when doing SQL dump (use comma for more tables separation) 20 | """ 21 | 22 | [] 23 | module DocoptResult = 24 | let getArgument arg map = 25 | map 26 | |> DocoptResult.tryGetArgument arg 27 | |> Option.defaultWith (fun _ -> failwithf "Missing required argument %s." arg) 28 | 29 | [] 30 | let main argv = 31 | try 32 | let cliArgs = Docopt(cli).Parse(argv) 33 | if cliArgs |> DocoptResult.hasFlag "-h" 34 | then 35 | printfn "%s" cli 36 | 0 37 | else 38 | let connString = cliArgs |> DocoptResult.getArgument "" 39 | let outputFile = cliArgs |> DocoptResult.getArgument "" 40 | let useGo = cliArgs |> DocoptResult.getArgument "--usego" |> Boolean.Parse 41 | let statements = cliArgs |> DocoptResult.getArgument "--statements" |> int 42 | let rows = cliArgs |> DocoptResult.getArgument "--rows" |> int 43 | let ignores = 44 | cliArgs 45 | |> DocoptResult.tryGetArgument "--ignore" 46 | |> Option.map (fun x -> x.Split(",", StringSplitOptions.RemoveEmptyEntries)) 47 | |> Option.map Array.toList 48 | |> Option.defaultValue [] 49 | try 50 | SQLDumper.init connString 51 | |> SQLDumper.useGoStatements useGo 52 | |> SQLDumper.statementsInTransaction statements 53 | |> SQLDumper.rowsInStatement rows 54 | |> SQLDumper.ignoreTables ignores 55 | |> MSSQL.dumpToFile outputFile 56 | |> Async.AwaitTask 57 | |> Async.RunSynchronously 58 | 59 | Console.ForegroundColor <- ConsoleColor.Green 60 | printfn "Database successfully dumped into %s" outputFile 61 | 0 62 | with ex -> 63 | Console.ForegroundColor <- ConsoleColor.Red 64 | eprintfn "Exception occured: %s" ex.Message 65 | 1 66 | with ex -> 67 | Console.ForegroundColor <- ConsoleColor.Red 68 | printfn "Error while parsing command line, usage is:" 69 | printfn "%s" cli 70 | eprintfn "Exception occured: %s" ex.Message 71 | 1 -------------------------------------------------------------------------------- /src/SQLDumper.Tool/SQLDumper.Tool.fsproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Exe 5 | netcoreapp3.1 6 | true 7 | sqldump 8 | Major 9 | SQLDumper.Tool 10 | Dump your MSSQL database into file or stream 11 | https://github.com/Dzoukr/SQLDumper 12 | https://github.com/Dzoukr/SQLDumper/blob/master/LICENSE 13 | fsharp;database;mssql;dump;tools 14 | Roman Provazník 15 | 1.1.0 16 | Using RollForward for dotnet tool 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/SQLDumper.Tool/paket.references: -------------------------------------------------------------------------------- 1 | FSharp.Core 2 | Fake.Core.CommandLineParsing 3 | Microsoft.Data.SqlClient -------------------------------------------------------------------------------- /src/SQLDumper/MSSQL.fs: -------------------------------------------------------------------------------- 1 | module SQLDumper.MSSQL 2 | 3 | open System 4 | open System.Data 5 | open System.Data.Common 6 | open System.Data.SqlTypes 7 | open System.Globalization 8 | open System.IO 9 | open System.Text 10 | open System.Linq 11 | open System.Threading.Tasks 12 | open Dapper 13 | open FSharp.Control.Tasks.V2 14 | open Microsoft.Data.SqlClient 15 | 16 | module internal SqlCommands = 17 | type GetTablesRow = { TABLE_SCHEMA : string; TABLE_NAME : string } 18 | let getTables = 19 | """ 20 | SELECT TABLE_SCHEMA, TABLE_NAME 21 | FROM INFORMATION_SCHEMA.TABLES 22 | WHERE TABLE_TYPE='BASE TABLE' 23 | """ 24 | 25 | type GetColumnsRow = { COLUMN_NAME:string; DATA_TYPE:string; ORDINAL_POSITION:int } 26 | let getColumns = 27 | """ 28 | SELECT c.COLUMN_NAME, c.DATA_TYPE, k.ORDINAL_POSITION 29 | FROM INFORMATION_SCHEMA.COLUMNS c 30 | LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k ON 31 | c.TABLE_SCHEMA = k.TABLE_SCHEMA AND 32 | c.TABLE_NAME = k.TABLE_NAME AND 33 | c.COLUMN_NAME = k.COLUMN_NAME AND 34 | OBJECTPROPERTY(OBJECT_ID(k.CONSTRAINT_SCHEMA + '.' + QUOTENAME(k.CONSTRAINT_NAME)), 'IsPrimaryKey') = 1 35 | WHERE c.TABLE_SCHEMA = @SchemaParam AND c.TABLE_NAME = @TableParam 36 | ORDER BY ISNULL(k.ORDINAL_POSITION, 30000), 1 37 | """ 38 | 39 | module internal Converters = 40 | 41 | let private formatAsN (s:string) = sprintf "N'%s'" s 42 | 43 | 44 | let private toStringCustom isNullCond (value:'a) convertFn = 45 | if isNullCond then "NULL" else value |> convertFn 46 | 47 | let private toStringMap isNullCond (value:'a) mapFn = 48 | toStringCustom isNullCond value ((fun v -> Convert.ToString(v, CultureInfo.InvariantCulture)) >> mapFn) 49 | 50 | let private toString isNullCond (value:'a) = toStringMap isNullCond value id 51 | 52 | let private genericReader (colType:string) (r:DbDataReader) (i:int) = 53 | match r.GetProviderSpecificValue(i) with 54 | | null 55 | | :? DBNull -> "NULL" 56 | | :? INullable as n when n.IsNull -> "NULL" 57 | | :? SqlDouble as v -> toString v.IsNull v.Value 58 | | :? SqlDecimal as v -> toString v.IsNull (v.ToString()) 59 | | :? SqlSingle as v -> toString v.IsNull v.Value 60 | | :? SqlInt64 as v -> toString v.IsNull v.Value 61 | | :? SqlInt32 as v -> toString v.IsNull v.Value 62 | | :? SqlInt16 as v -> toString v.IsNull v.Value 63 | | :? SqlByte as v -> toString v.IsNull v.Value 64 | | :? SqlMoney as v -> toString v.IsNull v.Value 65 | | :? SqlBoolean as v -> toStringCustom v.IsNull v.Value (fun x -> if x then "1" else "0") 66 | | :? SqlString as v -> toStringMap v.IsNull v.Value formatAsN 67 | | :? SqlChars as v -> toStringMap v.IsNull v.Value formatAsN 68 | | :? SqlBinary as v -> toStringCustom v.IsNull v.Value (fun x -> "0x" + BitConverter.ToString(x).Replace("-","")) 69 | | :? SqlXml as v -> toStringMap v.IsNull v.Value formatAsN 70 | | :? SqlGuid as v -> toStringMap v.IsNull v.Value formatAsN 71 | | :? SqlDateTime as v when colType = "datetime" -> 72 | toStringCustom v.IsNull v.Value ((fun x -> x.ToString("yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.InvariantCulture)) >> formatAsN) 73 | | :? SqlDateTime as v when colType = "smalldatetime" -> 74 | toStringCustom v.IsNull v.Value ((fun x -> x.ToString("yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture)) >> formatAsN) 75 | | :? DateTime as v when colType = "datetime2" -> 76 | toStringCustom false v ((fun x -> x.ToString("yyyy-MM-ddTHH:mm:ss.fffffff", CultureInfo.InvariantCulture)) >> formatAsN) 77 | | :? DateTime as v when colType = "date" -> 78 | toStringCustom false v ((fun x -> x.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)) >> formatAsN) 79 | | :? DateTimeOffset as v -> 80 | toStringCustom false v ((fun x -> x.ToString("yyyy-MM-ddTHH:mm:ss.fffffffzzz", CultureInfo.InvariantCulture)) >> formatAsN) 81 | | :? TimeSpan as v -> 82 | toStringCustom false v ((fun x -> x.ToString("c", CultureInfo.InvariantCulture)) >> formatAsN) 83 | | v -> toStringMap false v formatAsN 84 | 85 | let tryGetConverter (t:string) = 86 | match t with 87 | | "timestamp" -> None 88 | | _ -> Some (genericReader t) 89 | 90 | let private safeName (n:string) = sprintf "[%s]" n 91 | 92 | type internal ColumnDefinition = { 93 | Name : string 94 | DataType : string 95 | IsSorted : bool 96 | Converter : DbDataReader -> int -> string 97 | } 98 | 99 | [] 100 | module internal ColumnDefinition = 101 | let toSelectSql (c:ColumnDefinition) = 102 | let name = safeName c.Name 103 | match c.DataType with 104 | | "geometry" | "geography" | "hierarchyid" -> sprintf "%s.ToString() as %s" name name 105 | | _ -> name 106 | 107 | let safeName (c:ColumnDefinition) = c.Name |> safeName 108 | 109 | type internal TableDefinition = { 110 | Schema : string 111 | Name : string 112 | Columns : ColumnDefinition list 113 | } 114 | 115 | [] 116 | module internal TableDefinition = 117 | let safeFullName (td:TableDefinition) = (safeName td.Schema) + "." + (safeName td.Name) 118 | 119 | let private getColumns (conn:IDbConnection) schema name = 120 | task { 121 | let! results = conn.QueryAsync(SqlCommands.getColumns, {| SchemaParam = schema; TableParam = name |}) 122 | return 123 | results 124 | |> Seq.choose (fun x -> 125 | x.DATA_TYPE 126 | |> Converters.tryGetConverter 127 | |> Option.map (fun conv -> { Name = x.COLUMN_NAME; DataType = x.DATA_TYPE; IsSorted = x.ORDINAL_POSITION = 1; Converter = conv }) 128 | ) 129 | |> Seq.toList 130 | } 131 | 132 | let private getTables (conn:IDbConnection) = 133 | task { 134 | let! results = conn.QueryAsync(SqlCommands.getTables) 135 | let mutable tables = ResizeArray<_>() 136 | for tbl in results do 137 | let schema = tbl.TABLE_SCHEMA 138 | let name = tbl.TABLE_NAME 139 | let! cols = getColumns conn schema name 140 | tables.Add({ Name = name; Schema = schema; Columns = cols }) 141 | return tables |> Seq.toList 142 | } 143 | 144 | type internal Writer = { 145 | Go : unit -> Task 146 | EmptyLine : unit -> Task 147 | Line : string -> Task 148 | Append : string -> Task 149 | } 150 | 151 | module internal Writer = 152 | let create (writer:TextWriter) (dump:SQLDumper) = 153 | { 154 | Go = fun _ -> if dump.UseGoStatements then writer.WriteLineAsync("GO") else Task.CompletedTask 155 | EmptyLine = writer.WriteLineAsync 156 | Line = writer.WriteLineAsync 157 | Append = writer.WriteAsync 158 | } 159 | 160 | let private dumpTable (conn:IDbConnection) (dump:SQLDumper) (w:Writer) (table:TableDefinition) = 161 | task { 162 | let tableName = table |> TableDefinition.safeFullName 163 | let colsSelect = table.Columns |> List.map ColumnDefinition.toSelectSql |> String.concat ", " 164 | let colsInsert = table.Columns |> List.map ColumnDefinition.safeName |> String.concat ", " 165 | let cmdText = StringBuilder() 166 | cmdText.Append (sprintf "SELECT %s FROM %s" colsSelect tableName) |> ignore 167 | if table.Columns |> List.exists (fun x -> x.IsSorted) then 168 | table.Columns 169 | |> List.filter (fun x -> x.IsSorted) 170 | |> List.map (fun x -> safeName x.Name) 171 | |> String.concat ", " 172 | |> (fun cols -> 173 | cmdText.Append (sprintf " ORDER BY %s" cols) 174 | ) 175 | |> ignore 176 | 177 | do! w.EmptyLine() 178 | do! w.Line (sprintf "-- Table %s --" tableName) 179 | 180 | let identityFlag (v:string) = 181 | w.Line (sprintf "IF OBJECTPROPERTY(OBJECT_ID('%s'), 'TableHasIdentity') = 1 SET IDENTITY_INSERT %s %s;" tableName tableName v) 182 | 183 | let! reader = conn.ExecuteReaderAsync(cmdText.ToString()) 184 | let mutable rows = 0 185 | while reader.Read() do 186 | if rows%dump.RowsInStatement = 0 then 187 | if rows = 0 then do! identityFlag "ON" else do! w.Line ";" 188 | if dump.StatementsInTransaction = 0 && rows > 0 then do! w.Go() 189 | else if rows / dump.RowsInStatement % dump.StatementsInTransaction = 0 then 190 | if rows > 0 then 191 | do! w.Line "COMMIT;" 192 | do! w.Go() 193 | do! w.EmptyLine() 194 | do! w.Line "BEGIN TRANSACTION;" 195 | do! w.Line(sprintf "INSERT INTO %s (%s) VALUES" tableName colsInsert) 196 | else 197 | do! w.Line ", " 198 | 199 | do! 200 | table.Columns 201 | |> List.mapi (fun i x -> x.Converter (reader :?> DbDataReader) i) 202 | |> String.concat ", " 203 | |> sprintf "(%s)" 204 | |> w.Append 205 | rows <- rows + 1 206 | reader.Close() 207 | if rows > 0 then 208 | do! w.Line ";" 209 | if dump.StatementsInTransaction > 0 then do! w.Line "COMMIT;" 210 | do! identityFlag "OFF" 211 | do! w.Go() 212 | } 213 | 214 | /// Dump MSSQL database into TextWriter instance 215 | let dumpToWriter (writer:TextWriter) (dump:SQLDumper) = 216 | let w = Writer.create writer dump 217 | task { 218 | use conn = new SqlConnection(dump.ConnectionString) 219 | let! tables = getTables conn 220 | // begin 221 | do! w.Line("EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'") 222 | 223 | // process tables 224 | for table in (tables |> List.filter (fun x -> not <| dump.IgnoredTables.Contains(x.Name))) do 225 | do! table |> dumpTable conn dump w 226 | 227 | // end 228 | do! w.EmptyLine() 229 | do! w.Line("EXEC sp_MSforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL'") 230 | do! w.Go() 231 | } 232 | 233 | /// Dump MSSQL database into file 234 | let dumpToFile (filePath:string) (dump:SQLDumper) = 235 | task { 236 | use file = File.CreateText(filePath) 237 | do! dump |> dumpToWriter file 238 | do! file.FlushAsync() 239 | } -------------------------------------------------------------------------------- /src/SQLDumper/SQLDumper.fs: -------------------------------------------------------------------------------- 1 | namespace SQLDumper 2 | 3 | type SQLDumper = { 4 | UseGoStatements : bool 5 | StatementsInTransaction : int 6 | RowsInStatement : int 7 | IgnoredTables : string list 8 | ConnectionString : string 9 | } 10 | 11 | [] 12 | module SQLDumper = 13 | /// Setup SQL dump for connection string 14 | let init connString = { 15 | UseGoStatements = true 16 | StatementsInTransaction = 1000 17 | RowsInStatement = 100 18 | IgnoredTables = [] 19 | ConnectionString = connString 20 | } 21 | 22 | /// Sets connection string 23 | let connectionString str s = { s with ConnectionString = str } 24 | /// Use GO statements? 25 | let useGoStatements flag s = { s with UseGoStatements = flag } 26 | /// Number of statements per transaction 27 | let statementsInTransaction num s = { s with StatementsInTransaction = num } 28 | /// Number of rows per statements 29 | let rowsInStatement num s = { s with RowsInStatement = num } 30 | /// List of tables to ignore during dump 31 | let ignoreTables tables s = { s with IgnoredTables = tables } 32 | -------------------------------------------------------------------------------- /src/SQLDumper/SQLDumper.fsproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netstandard2.0 5 | SQLDumper 6 | Dump your MSSQL database into file or stream 7 | https://github.com/Dzoukr/SQLDumper 8 | https://github.com/Dzoukr/SQLDumper/blob/master/LICENSE 9 | fsharp;database;mssql;dump;tools 10 | Roman Provazník 11 | 1.0.1 12 | Fixing package description 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/SQLDumper/paket.references: -------------------------------------------------------------------------------- 1 | FSharp.Core 2 | Dapper 3 | TaskBuilder.fs 4 | Microsoft.Data.SqlClient --------------------------------------------------------------------------------