From 5901ceeaf57e6c9574323b507c2e1940d2dde2ff Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Tue, 16 Oct 2018 21:25:50 +0100 Subject: [PATCH 01/16] Initial build script commit --- .gitignore | 1 + installer/.editorconfig | 41 + installer/.gitignore | 217 +++++ installer/.paket/paket.bootstrapper.exe | Bin 0 -> 64296 bytes installer/.paket/paket.targets | 41 + installer/README.md | 38 + installer/build.bat | 14 + installer/build/scripts/Build.fsx | 114 +++ installer/build/scripts/BuildConfig.fsx | 108 +++ installer/build/scripts/Commandline.fsx | 434 +++++++++ installer/build/scripts/Products.fsx | 190 ++++ installer/build/scripts/Snapshots.fsx | 65 ++ installer/build/scripts/Targets.fsx | 143 +++ installer/build/scripts/config.yaml | 190 ++++ installer/build/scripts/feed-example.xml | 24 + installer/build/scripts/scripts.fsproj | 98 ++ installer/build/tools/signtool/signtool.exe | Bin 0 -> 363160 bytes installer/build/tools/vagrant/Vagrantfile | 45 + installer/paket.dependencies | 22 + installer/paket.lock | 880 ++++++++++++++++++ installer/src/Installer.sln | 53 ++ installer/src/Installer/App.config | 6 + installer/src/Installer/CustomAction.config | 11 + installer/src/Installer/Installer.csproj | 120 +++ installer/src/Installer/ODBC.ico | Bin 0 -> 21238 bytes installer/src/Installer/ODBCDriver.cs | 55 ++ .../src/Installer/ODBCDriverDataSource.cs | 35 + installer/src/Installer/Program.cs | 66 ++ .../src/Installer/Properties/AssemblyInfo.cs | 36 + installer/src/Installer/WixSharp Setup.exe | Bin 0 -> 6144 bytes installer/src/Installer/leftbanner.bmp | Bin 0 -> 615320 bytes installer/src/Installer/packages.config | 5 + installer/src/Installer/paket.references | 2 + installer/src/Installer/topbanner.bmp | Bin 0 -> 114432 bytes installer/src/Installer/wix/Installer.g.wxs | 79 ++ .../src/Installer/wix/ODBCInstaller.g.wxs | 102 ++ 36 files changed, 3235 insertions(+) create mode 100644 installer/.editorconfig create mode 100644 installer/.gitignore create mode 100644 installer/.paket/paket.bootstrapper.exe create mode 100644 installer/.paket/paket.targets create mode 100644 installer/README.md create mode 100644 installer/build.bat create mode 100644 installer/build/scripts/Build.fsx create mode 100644 installer/build/scripts/BuildConfig.fsx create mode 100644 installer/build/scripts/Commandline.fsx create mode 100644 installer/build/scripts/Products.fsx create mode 100644 installer/build/scripts/Snapshots.fsx create mode 100644 installer/build/scripts/Targets.fsx create mode 100644 installer/build/scripts/config.yaml create mode 100644 installer/build/scripts/feed-example.xml create mode 100644 installer/build/scripts/scripts.fsproj create mode 100644 installer/build/tools/signtool/signtool.exe create mode 100644 installer/build/tools/vagrant/Vagrantfile create mode 100644 installer/paket.dependencies create mode 100644 installer/paket.lock create mode 100644 installer/src/Installer.sln create mode 100644 installer/src/Installer/App.config create mode 100644 installer/src/Installer/CustomAction.config create mode 100644 installer/src/Installer/Installer.csproj create mode 100644 installer/src/Installer/ODBC.ico create mode 100644 installer/src/Installer/ODBCDriver.cs create mode 100644 installer/src/Installer/ODBCDriverDataSource.cs create mode 100644 installer/src/Installer/Program.cs create mode 100644 installer/src/Installer/Properties/AssemblyInfo.cs create mode 100644 installer/src/Installer/WixSharp Setup.exe create mode 100644 installer/src/Installer/leftbanner.bmp create mode 100644 installer/src/Installer/packages.config create mode 100644 installer/src/Installer/paket.references create mode 100644 installer/src/Installer/topbanner.bmp create mode 100644 installer/src/Installer/wix/Installer.g.wxs create mode 100644 installer/src/Installer/wix/ODBCInstaller.g.wxs diff --git a/.gitignore b/.gitignore index 49ba3cdd..26402236 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ driver/*.swp cscope.out .vs +installer/src/Installer/driver/ diff --git a/installer/.editorconfig b/installer/.editorconfig new file mode 100644 index 00000000..6eff684b --- /dev/null +++ b/installer/.editorconfig @@ -0,0 +1,41 @@ +root=true + +[*] +indent_style = tab +indent_size = 4 + +[*.cs] +indent_style = tab +indent_size = 4 + +[*.cshtml] +indent_style = tab +indent_size = 4 + +[*.js] +indent_style = space +indent_size = 2 + +[*.fsx] +indent_style = space +indent_size = 4 + +[*.markdown] +indent_style = space +indent_size = 2 + +[*.xaml] +indent_style = space +indent_size = 2 + +[*.csproj] +indent_style = space +indent_size = 2 + +[*.resx] +indent_style = space +indent_size = 2 + +[*.json] +indent_style = space +indent_size = 2 diff --git a/installer/.gitignore b/installer/.gitignore new file mode 100644 index 00000000..0508d173 --- /dev/null +++ b/installer/.gitignore @@ -0,0 +1,217 @@ +## Project specific ignores + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates +*.msi +!*.Installer.Msi + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +*.wixobj + +# Roslyn cache directories +*.ide/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +#NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding addin-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# If using the old MSBuild-Integrated Package Restore, uncomment this: +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# F# FAKE dir +.fake/ +.fake/* +.fake +packages/* +paket.exe +.paket/* +!.paket/paket.bootstrapper.exe +!.paket/paket.targets + +build/* +!build/scripts +!build/scripts/* +build/scripts/obj +build/tools/vagrant/.vagrant +!build/tools +!build/tools/* +build/scripts/.fake + +.idea + +# NCrunch +*.ncrunchproject +*.ncrunchsolution + +# Integration tests +**/Elastic.Installer.Integration.Tests/Tests/**/Vagrantfile +src/.vs/ +paket-files/ diff --git a/installer/.paket/paket.bootstrapper.exe b/installer/.paket/paket.bootstrapper.exe new file mode 100644 index 0000000000000000000000000000000000000000..b98e000b232408fe0a21730e88f89755f0d7a68c GIT binary patch literal 64296 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 + + + + true + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + /Library/Frameworks/Mono.framework/Commands/mono + mono + + + + $(PaketToolsPath)paket.exe + $(PaketToolsPath)paket.bootstrapper.exe + "$(PaketExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" + "$(PaketBootStrapperExePath)" $(PaketBootStrapperCommandArgs) + $(MonoPath) --runtime=v4.0.30319 $(PaketBootStrapperExePath) $(PaketBootStrapperCommandArgs) + + $(MSBuildProjectDirectory)\paket.references + $(MSBuildStartupDirectory)\paket.references + $(MSBuildProjectFullPath).paket.references + $(PaketCommand) restore --references-files "$(PaketReferences)" + $(PaketBootStrapperCommand) + + RestorePackages; $(BuildDependsOn); + + + + + + + + + + + + + diff --git a/installer/README.md b/installer/README.md new file mode 100644 index 00000000..b25c3e6d --- /dev/null +++ b/installer/README.md @@ -0,0 +1,38 @@ +# odbc-installer +Elasticsearch ODBC MSI installer + +## Minimum requirements + +- Windows 10 64-bit (remain within Microsoft mainstream support lifecycle) +- Excel 2016 (latest) +- VC++2017 redistributables + +## Test using PowerShell + +1. Create the User DSN +``` +Add-OdbcDsn -Name "ED_PS" -DriverName "Elasticsearch Driver" -DsnType "User" -SetPropertyValue @("Server=localhost", "Secure=0") +``` + +2. Allow PowerShell to run scripts +``` +Set-ExecutionPolicy -Scope process -ExecutionPolicy unrestricted +``` + +3. Run script `./select.ps1` +Requires local elasticsearch with index'd data. +Substitute query string. +``` +# save as select.ps1 +$connectstring = "DSN=ED_PS;" +$sql = "SELECT * FROM twitter" + +$conn = New-Object System.Data.Odbc.OdbcConnection($connectstring) +$conn.open() +$cmd = New-Object system.Data.Odbc.OdbcCommand($sql,$conn) +$da = New-Object system.Data.Odbc.OdbcDataAdapter($cmd) +$dt = New-Object system.Data.datatable +$null = $da.fill($dt) +$conn.close() +$dt +``` diff --git a/installer/build.bat b/installer/build.bat new file mode 100644 index 00000000..af5a9e2d --- /dev/null +++ b/installer/build.bat @@ -0,0 +1,14 @@ +@echo off + +.paket\paket.bootstrapper.exe +IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL% + +IF EXIST paket.lock ( + .paket\paket.exe restore + IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL% +) ELSE ( + .paket\paket.exe install + IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL% +) + +"packages\build\FAKE.x64\tools\FAKE.exe" "build\\scripts\\Targets.fsx" "cmdline=%*" diff --git a/installer/build/scripts/Build.fsx b/installer/build/scripts/Build.fsx new file mode 100644 index 00000000..633ca2ab --- /dev/null +++ b/installer/build/scripts/Build.fsx @@ -0,0 +1,114 @@ +#I "../../packages/build/FAKE.x64/tools" + +#r "FakeLib.dll" +#load "Products.fsx" +#load "BuildConfig.fsx" + +open System +open System.Diagnostics +open System.Text +open System.IO +open System.Text.RegularExpressions +open Microsoft.FSharp.Reflection +open Fake +open Fake.AssemblyInfoFile +open Fake.FileHelper +open Fake.Git +open Fake.Testing.XUnit2 +open Products.Products +open Products.Paths +open Products + +module Builder = + + let Sign file (product : ProductVersions) = + tracefn "Skipping signing" + //let release = getBuildParam "release" = "1" + //if release then + // let certificate = getBuildParam "certificate" + // let password = getBuildParam "password" + // let timestampServer = "http://timestamp.comodoca.com" + // let timeout = TimeSpan.FromMinutes 1. + + // let sign () = + // let signToolExe = ToolsDir @@ "signtool/signtool.exe" + // let args = ["sign"; "/f"; certificate; "/p"; password; "/t"; timestampServer; "/d"; product.Title; "/v"; file] |> String.concat " " + // let redactedArgs = args.Replace(password, "") + + // use proc = new Process() + // proc.StartInfo.UseShellExecute <- false + // proc.StartInfo.FileName <- signToolExe + // proc.StartInfo.Arguments <- args + // platformInfoAction proc.StartInfo + // proc.StartInfo.RedirectStandardOutput <- true + // proc.StartInfo.RedirectStandardError <- true + // if isMono then + // proc.StartInfo.StandardOutputEncoding <- Encoding.UTF8 + // proc.StartInfo.StandardErrorEncoding <- Encoding.UTF8 + // proc.ErrorDataReceived.Add(fun d -> if d.Data <> null then traceError d.Data) + // proc.OutputDataReceived.Add(fun d -> if d.Data <> null then trace d.Data) + + // try + // tracefn "%s %s" proc.StartInfo.FileName redactedArgs + // start proc + // with exn -> failwithf "Start of process %s failed. %s" proc.StartInfo.FileName exn.Message + // proc.BeginErrorReadLine() + // proc.BeginOutputReadLine() + // if not <| proc.WaitForExit(int timeout.TotalMilliseconds) then + // try + // proc.Kill() + // with exn -> + // traceError + // <| sprintf "Could not kill process %s %s after timeout." proc.StartInfo.FileName redactedArgs + // failwithf "Process %s %s timed out." proc.StartInfo.FileName redactedArgs + // proc.WaitForExit() + // proc.ExitCode + + // let exitCode = sign() + // if exitCode <> 0 then failwithf "Signing %s returned error exit code: %i" product.Title exitCode + + //let patchAssemblyInformation (product: ProductVersions) (version:Version) = + // let version = version.FullVersion + // let commitHash = Information.getCurrentHash() + // let file = product.ServiceDir @@ "Properties" @@ "AssemblyInfo.cs" + // CreateCSharpAssemblyInfo file + // [Attribute.Title product.Product.AssemblyTitle + // Attribute.Description product.Product.AssemblyDescription + // Attribute.Guid product.Product.AssemblyGuid + // Attribute.Product product.Product.Title + // Attribute.Metadata("GitBuildHash", commitHash) + // Attribute.Company "Elasticsearch BV" + // Attribute.Copyright "Apache License, version 2 (ALv2). Copyright Elasticsearch." + // Attribute.Trademark (sprintf "%s is a trademark of Elasticsearch BV, registered in the U.S. and in other countries." product.Product.Title) + // Attribute.Version version + // Attribute.FileVersion version + // Attribute.InformationalVersion version // Attribute.Version and Attribute.FileVersion normalize the version number, so retain the prelease suffix + // ] + + let BuildMsi (product : ProductVersions) = + if (product.Versions |> List.exists (fun v -> v.Source = Compile)) then + !! (MsiDir @@ "*.csproj") + |> MSBuildRelease MsiBuildDir "Build" + |> ignore + + let outMsiPath (product:ProductVersions) (version:Version) = + OutDir @@ product.Name @@ (sprintf "%s-%s.msi" product.Name version.FullVersion) + + product.Versions + |> List.iter(fun version -> + match version.Source with + | Compile -> + let exitCode = ExecProcess (fun info -> + info.FileName <- sprintf "%sElastic.Installer.Msi" MsiBuildDir + info.WorkingDirectory <- MsiDir + info.Arguments <- [product.Name; version.FullVersion; Path.GetFullPath(InDir)] |> String.concat " " + ) <| TimeSpan.FromMinutes 20. + + if exitCode <> 0 then failwithf "Error building MSI for %s" product.Name + let finalMsi = outMsiPath product version + CopyFile finalMsi (MsiDir @@ (sprintf "%s.msi" product.Name)) + Sign finalMsi product + | _ -> + if not <| fileExists (product.DownloadPath version) then failwithf "No file found at %s" (product.DownloadPath version) + CopyFile (outMsiPath product version) (product.DownloadPath version) + ) \ No newline at end of file diff --git a/installer/build/scripts/BuildConfig.fsx b/installer/build/scripts/BuildConfig.fsx new file mode 100644 index 00000000..c6cea743 --- /dev/null +++ b/installer/build/scripts/BuildConfig.fsx @@ -0,0 +1,108 @@ +#I "../../packages/build/FAKE.x64/tools" +#I "../../packages/build/Fsharp.Data/lib/net45" +#I "../../packages/build/Fsharp.Configuration/lib/net45" +#I "../../packages/semver/lib/net452" + +#r "FakeLib.dll" +#r "Fsharp.Data.dll" +#r "System.Xml.Linq.dll" +#r "FSharp.Configuration.dll" +#r "Semver.dll" + +#load "Products.fsx" + +namespace Scripts + +module BuildConfig = + open System + open System.Collections.Generic + open Fake + open FSharp.Configuration + open Fake.StringHelper + open Products.Products + open Semver + + type TypedConfig = YamlConfig<"config.yaml"> + let private sourceYaml = __SOURCE_DIRECTORY__ "config.yaml" + + //ugly :) + let private writeProductGuids = fun(config: TypedConfig) -> + let file = __SOURCE_DIRECTORY__ "../../src/Installer/Elastic.Installer.Domain" "ProductGuids.cs" + WriteStringToFile false file """using System; +using System.Collections.Generic; + +//THIS IS GENERATED BY OUR BUILD SCRIPT +namespace Elastic.Installer.Domain +{ + public static class ProductGuids + { +""" + WriteStringToFile true file (sprintf " public static Guid ElasticsearchUpgradeCode => new Guid(\"%A\");\r\n" config.elasticsearch.upgrade_code) + WriteStringToFile true file (sprintf " public static Guid KibanaUpgradeCode => new Guid(\"%A\");" config.kibana.upgrade_code) + WriteStringToFile true file """ + public static Dictionary ElasticsearchProductCodes => new Dictionary + { +""" + let dictValues = config.elasticsearch.known_versions |> Seq.map (fun v -> sprintf " { \"%s\", new Guid(\"%A\") }" v.version v.guid) + let guids = dictValues |> String.concat ",\r\n" + WriteStringToFile true file guids + WriteStringToFile true file """ + }; +""" + + WriteStringToFile true file """ + public static Dictionary KibanaProductCodes => new Dictionary + { +""" + let dictValues = config.kibana.known_versions |> Seq.map (fun v -> sprintf " { \"%s\", new Guid(\"%A\") }" v.version v.guid) + let guids = dictValues |> String.concat ",\r\n" + WriteStringToFile true file guids + WriteStringToFile true file """ + }; +""" + WriteStringToFile true file """ + } +} +""" + + let versionGuid (productVersions: ProductVersions list) = + let config = TypedConfig() + config.Load sourceYaml + tracefn "found %i elasticsearch known versions" config.elasticsearch.known_versions.Count + tracefn "found %i kibana known versions" config.kibana.known_versions.Count + + productVersions + |> List.iter(fun p -> + p.Versions + |> List.iter(fun v -> + let version = v.FullVersion + match p.Product with + | Elasticsearch -> + match config.elasticsearch.known_versions |> Seq.tryFind (fun v -> v.version = version) with + | Some _ -> () + | None -> + let newGuid = Guid.NewGuid() + let newVersion = TypedConfig.elasticsearch_Type.known_versions_Item_Type(version=version, guid=newGuid) + config.elasticsearch.known_versions.Add newVersion + | Kibana -> + match config.kibana.known_versions |> Seq.tryFind (fun v -> v.version = version) with + | Some _ -> () + | None -> + let newGuid = Guid.NewGuid() + let newVersion = TypedConfig.kibana_Type.known_versions_Item_Type(version=version, guid=newGuid) + config.kibana.known_versions.Add newVersion + ) + ) + + let elasticsearchVersions = config.elasticsearch.known_versions + |> Seq.sortBy(fun v -> SemVersion.Parse v.version) + + config.elasticsearch.known_versions <- new List(elasticsearchVersions) + + let kibanaVersions = config.kibana.known_versions + |> Seq.sortBy(fun v -> SemVersion.Parse v.version) + + config.kibana.known_versions <- new List(kibanaVersions) + + config.Save sourceYaml + // writeProductGuids config diff --git a/installer/build/scripts/Commandline.fsx b/installer/build/scripts/Commandline.fsx new file mode 100644 index 00000000..6c3cb9fc --- /dev/null +++ b/installer/build/scripts/Commandline.fsx @@ -0,0 +1,434 @@ +#I "../../packages/build/FAKE.x64/tools" +#I @"../../packages/build/Fsharp.Data/lib/net45" +#I @"../../packages/build/FSharp.Text.RegexProvider/lib/net40" + +#r @"FakeLib.dll" +#r "Fsharp.Data.dll" +#r "Fsharp.Text.RegexProvider.dll" +#r "System.Xml.Linq.dll" +#load "Products.fsx" +#load "Snapshots.fsx" + +open System +open System.Collections.Generic +open System.IO +open System.Text.RegularExpressions +open System.Net +open Fake +open FSharp.Data +open FSharp.Text.RegexProvider +open Products.Products +open Products.Paths +open Snapshots + +ServicePointManager.SecurityProtocol <- SecurityProtocolType.Ssl3 ||| SecurityProtocolType.Tls ||| SecurityProtocolType.Tls11 ||| SecurityProtocolType.Tls12; +ServicePointManager.ServerCertificateValidationCallback <- (fun _ _ _ _ -> true) + +module Commandline = + open Fake.DotNet.NuGet.NuGet + + let usage = """ +USAGE: + +build.bat [Target] [Products] [Versions] [Target specific params] [skiptests] + +Target: +------- + +* buildinstallers + - default target if none provided. Builds installers for products + +* clean + - cleans build output folders + +* unittest + - build and unit test + +* downloaddriverfiles + - downloads the products if not already downloaded, and unzips them + if not already unzipped + +* release [Products] [Versions] [CertFile] [PasswordFile] + - create a release versions of each MSI by building and then signing the service executable and installer for each. + - when CertFile and PasswordFile are specified, these will be used for signing otherwise the values in ELASTIC_CERT_FILE + and ELASTIC_CERT_PASSWORD environment variables will be used + + Example: build.bat release es 5.5.3 C:/path_to_cert_file C:/path_to_password_file + +* integrate [Products] [Versions] [VagrantProvider] [TestTargets] [switches] [skiptests] - + - run integration tests. Can filter tests by wildcard [TestTargets], + which match against the directory names of tests + + Example: build.bat integrate es 5.5.1,5.5.2 local * skiptests + +* help or ? + - show this usage summary + +Products: +--------- + +optional comma separated collection of products to build. can use + +* a +* all + - build all products +* e +* es +* elasticsearch + - build elasticsearch +* k +* kibana + - build kibana + +Versions: +--------- + +optional version(s) to build. Multiple versions can be specified, separated by commas. + +When specified, for build targets other than release, the product version zip files will +be downloaded and extracted to build/in directory if they don't already exist. + +A release version can be downloaded for integration tests by prefixing the version with r: e.g. r:5.5.2 +A build candidate version can be downloaded for integration tests by prefixing the version with [buildhash]: e.g. e824d65e:5.6.0 + +when not specified + - for build targets other than release, the latest non-prelease version of each product will be downloaded + - for release, the build/in directory will be checked and a single version found there will be used + +TestTargets: +------------ + +Wildcard pattern for integration tests to target within test directories +in /src/Tests/Elastic.Installer.Integration.Tests/Tests. + +When not specified, defaults to * + +VagrantProvider: +---------------- + +The provider that vagrant should use to bring up vagrant boxes + - local: use Virtualbox on the local machine + - azure: use Azure provider to provision a machine on Azure for each integration test scenario + - quick-azure: use Azure provider to provision a single machine on Azure on which to run all integration tests sequentially + +skiptests: +---------- + +Whether to skip unit tests. + +switches: +--------- + +Integration tests against a local vagrant provider support several switches + * --snapshots: use snapshot builds instead of staging builds + * -gui: launch vagrant with a GUI + * -nodestroy: do not destroy the vagrant box after the test has run + * -plugins:: a list of plugin zips that exist within + the build/in directory, that should be installed + within integration tests instead of downloading. The plugin + zip names must match the installer version. + +""" + + [] + let private feedUrl = "https://www.elastic.co/downloads/past-releases/feed" + [] + let private feedExample = "feed-example.xml" + + type DownloadFeed = XmlProvider< feedExample > + + type VersionRegex = Regex< @"^(?:\s*(?.*?)\s*)?((?\w*)\:)?(?(?\d+)\.(?\d+)\.(?\d+)(?:\-(?[\w\-]+))?)", noMethodPrefix=true > + + let private parseSource = function + | "r" -> Released + | hash when isNotNullOrEmpty hash -> BuildCandidate hash + | _ -> Compile + + let parseVersion version = + let m = VersionRegex().Match version + if m.Success |> not then failwithf "Could not parse version from %s" version + let source = parseSource m.Source.Value + + let rawValue = + match source with + | Compile -> m.Version.Value + | _ -> sprintf "%s:%s" m.Source.Value m.Version.Value + + { Product = m.Product.Value; + FullVersion = m.Version.Value; + Major = m.Major.Value |> int; + Minor = m.Minor.Value |> int; + Patch = m.Patch.Value |> int; + Prerelease = m.Prerelease.Value; + Source = source; + RawValue = rawValue; } + + let private args = getBuildParamOrDefault "cmdline" "buildinstallers" |> split ' ' + let private skipTests = args |> List.exists (fun x -> x = "skiptests") + let private snapshots = args |> List.exists (fun x -> x = "--snapshots") + let private gui = args |> List.exists (fun x -> x = "-gui") + let private noDestroy = args |> List.exists (fun x -> x = "-nodestroy") + let private plugins = args |> List.exists (startsWith "-plugins:") + let private filteredArgs = args |> List.filter (fun x -> match x with + | "skiptests" + | "-gui" + | "--snapshots" + | "-nodestroy" -> false + | y when startsWith "-plugins:" y -> false + | _ -> true) + + let private lastSnapshotVersion (product : Product) = + let latestVersion = Snapshots.GetVersions() + |> Seq.map (fun x -> Snapshots.GetSnapshotBuilds x) + |> Seq.head + |> Seq.head + let version = parseVersion latestVersion + tracefn "Extracted %s version %s from '%s'" product.Name version.FullVersion latestVersion + [version] + + let private lastFeedVersion (product : Product) = + let itemIsProduct itemText = + let m = parseVersion itemText + m.Product = product.Title && (isNullOrWhiteSpace m.Prerelease) + tracefn "Loading download feed data from %s" feedUrl + let feed = DownloadFeed.Load feedUrl + let firstLink = feed.Channel.Items |> Seq.find (fun item -> itemIsProduct item.Title) + let version = parseVersion firstLink.Title + tracefn "Extracted %s version %s from '%s'" product.Name version.FullVersion firstLink.Title + [version] + + let private lastVersion (product : Product ) = + tracefn "Use snapshots: %b" snapshots + if snapshots then + lastSnapshotVersion product + else + lastFeedVersion product + + let private versionFromInDir (product : Product) = + let extractVersion (fileInfo:FileInfo) = + Regex.Replace(fileInfo.Name, "^" + product.Name + "\-(.*)\.zip$", "$1") + + let zips = InDir + |> directoryInfo + |> filesInDirMatching ("es*" + product.Name + "*.zip") + + tracefn "%A" (Seq.head zips) + + + match zips.Length with + | 0 -> failwithf "No %s zip file found in %s" product.Name InDir + | 1 -> + let version = zips.[0] |> extractVersion |> parseVersion + tracefn "Extracted %s from %s" version.FullVersion zips.[0].FullName + [version] + | _ -> failwithf "Expecting one %s zip file in %s but found %i" product.Name InDir zips.Length + + let private (|IsTarget|_|) (candidate: string) = + match candidate.ToLowerInvariant() with + | "buildinstallers" + | "test" + | "clean" + | "downloaddriverfiles" + | "unittest" + | "release" + | "integrate" -> Some candidate + | _ -> None + + let target = + match (filteredArgs |> List.tryHead) with + | Some t -> + match (t.ToLowerInvariant()) with + | IsTarget t -> t + | "help" + | "?" -> "help" + | _ -> "buildinstallers" + | _ -> "buildinstallers" + + let arguments = + match filteredArgs with + | IsTarget head :: tail -> head :: tail + | [] -> [target] + | _ -> target :: filteredArgs + + let private (|IsVersionList|_|) candidate = + let versionStrings = splitStr "," candidate + let versions = new List() + + versionStrings + |> List.iter(fun v -> + let m = VersionRegex().Match v + match m.Success with + | true -> versions.Add({ Product = m.Product.Value; + FullVersion = m.Version.Value; + Major = m.Major.Value |> int; + Minor = m.Minor.Value |> int; + Patch = m.Patch.Value |> int; + Prerelease = m.Prerelease.Value; + Source = parseSource m.Source.Value; + RawValue = v; }) + | _ -> () + ) + match versions with + | v when v.Count = versionStrings.Length -> Some (List.ofSeq v) + | _ -> None + + let private (|IsProductList|_|) candidate = + let products = splitStr "," candidate + let productFromValue value = + match value with + | "all" + | "a" -> All + | "odbc" + | "o" -> [Odbc] + | _ -> [] + + if products.Length <> 0 then + products + |> List.map productFromValue + |> List.concat + |> List.distinct + |> Some + else None + + let private (|IsVagrantProvider|_|) candidate = + match candidate with + | "local" + | "azure" + | "quick-azure" -> Some candidate + | _ -> None + + let private certAndPasswordFromEnvVariables () = + trace "getting signing cert and password from environment variables" + //[("ELASTIC_CERT_FILE", "certificate");("ELASTIC_CERT_PASSWORD", "password")] + //|> List.iter(fun (v, b) -> + // let ev = Environment.GetEnvironmentVariable(v, EnvironmentVariableTarget.Machine) + // if isNullOrWhiteSpace ev then failwithf "Expecting non-null value for %s environment variable" v + // setBuildParam b ev + // ) + + let private certAndPasswordFromFile certFile passwordFile = + trace "getting signing cert and password from file arguments" + //match (fileExists certFile, fileExists passwordFile) with + //| (true, true) -> + // setBuildParam "certificate" certFile + // passwordFile |> File.ReadAllText |> setBuildParam "password" + //| (false, _) -> failwithf "certificate file does not exist at %s" certFile + //| (_, false) -> failwithf "password file does not exist at %s" passwordFile + + let parse () = + setEnvironVar "FAKEBUILD" "1" + let products = match arguments with + | ["release"] -> + setBuildParam "release" "1" + certAndPasswordFromEnvVariables () + All |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + | ["release"; IsProductList products ] -> + setBuildParam "release" "1" + certAndPasswordFromEnvVariables () + products |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + | ["release"; IsVersionList versions ] -> + setBuildParam "release" "1" + certAndPasswordFromEnvVariables () + All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["release"; IsProductList products; IsVersionList versions ] -> + setBuildParam "release" "1" + certAndPasswordFromEnvVariables () + products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["release"; IsProductList products; IsVersionList versions; certFile; passwordFile ] -> + setBuildParam "release" "1" + certAndPasswordFromFile certFile passwordFile + products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["release"; IsVersionList versions; certFile; passwordFile ] -> + setBuildParam "release" "1" + certAndPasswordFromFile certFile passwordFile + All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["release"; IsProductList products; certFile; passwordFile ] -> + setBuildParam "release" "1" + certAndPasswordFromFile certFile passwordFile + products |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + | ["release"; certFile; passwordFile ] -> + setBuildParam "release" "1" + certAndPasswordFromFile certFile passwordFile + All |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + + | ["integrate"; IsProductList products; IsVersionList versions; IsVagrantProvider provider; testTargets] -> + setBuildParam "testtargets" testTargets + setBuildParam "vagrantprovider" provider + products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["integrate"; IsProductList products; IsVersionList versions; testTargets] -> + setBuildParam "testtargets" testTargets + products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + + | ["integrate"; IsProductList products; IsVersionList versions; IsVagrantProvider provider] -> + setBuildParam "vagrantprovider" provider + products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["integrate"; IsProductList products; IsVersionList versions] -> + products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + + | ["integrate"; IsVersionList versions; IsVagrantProvider provider; testTargets] -> + setBuildParam "testtargets" testTargets + setBuildParam "vagrantprovider" provider + All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["integrate"; IsVersionList versions; testTargets] -> + setBuildParam "testtargets" testTargets + All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + + | ["integrate"; IsProductList products; IsVagrantProvider provider; testTargets] -> + setBuildParam "testtargets" testTargets + setBuildParam "vagrantprovider" provider + products |> List.map (ProductVersions.CreateFromProduct lastVersion) + | ["integrate"; IsProductList products; testTargets] -> + setBuildParam "testtargets" testTargets + products |> List.map (ProductVersions.CreateFromProduct lastVersion) + | ["integrate"; IsProductList products; IsVagrantProvider provider] -> + setBuildParam "vagrantprovider" provider + products |> List.map (ProductVersions.CreateFromProduct lastVersion) + | ["integrate"; IsProductList products] -> + products |> List.map (ProductVersions.CreateFromProduct lastVersion) + | ["integrate"; IsVersionList versions; IsVagrantProvider provider] -> + setBuildParam "vagrantprovider" provider + All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["integrate"; IsVersionList versions] -> + All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | ["integrate"; IsVagrantProvider provider; testTargets] -> + setBuildParam "testtargets" testTargets + setBuildParam "vagrantprovider" provider + All |> List.map (ProductVersions.CreateFromProduct lastVersion) + | ["integrate"; IsVagrantProvider provider] -> + setBuildParam "vagrantprovider" provider + All |> List.map (ProductVersions.CreateFromProduct lastVersion) + | ["integrate"; testTargets] -> + setBuildParam "testtargets" testTargets + All |> List.map (ProductVersions.CreateFromProduct lastVersion) + | [IsProductList products; IsVersionList versions] -> + products |> List.map(ProductVersions.CreateFromProduct <| fun _ -> versions) + | [IsProductList products] -> + products |> List.map(ProductVersions.CreateFromProduct lastVersion) + | [IsVersionList versions] -> + All |> List.map(ProductVersions.CreateFromProduct <| fun _ -> versions) + | [IsTarget target; IsVersionList versions] -> + All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | [IsTarget target; IsProductList products] -> + products |> List.map (ProductVersions.CreateFromProduct lastVersion) + | [IsTarget target; IsProductList products; IsVersionList versions] -> + products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) + | [IsTarget target] -> + All |> List.map (ProductVersions.CreateFromProduct lastVersion) + | [] -> + All |> List.map (ProductVersions.CreateFromProduct lastVersion) + | _ -> + traceError usage + exit 2 + + setBuildParam "target" target + if skipTests then setBuildParam "skiptests" "1" + if gui then setBuildParam "gui" "$true" + if snapshots then setBuildParam "snapshots" "$true" + if noDestroy then setBuildParam "no-destroy" "$false" + if plugins then + let pluginPaths = args + |> List.find (startsWith "-plugins:") + |> split ':' + |> List.last + setBuildParam "plugins" pluginPaths + products diff --git a/installer/build/scripts/Products.fsx b/installer/build/scripts/Products.fsx new file mode 100644 index 00000000..e12f64b7 --- /dev/null +++ b/installer/build/scripts/Products.fsx @@ -0,0 +1,190 @@ +#I "../../packages/build/FAKE.x64/tools" + +#r "FakeLib.dll" +#load "Snapshots.fsx" + +open System +open System.Globalization +open System.IO +open Fake +open Fake.FileHelper +open Snapshots + +module Paths = + let BuildDir = "./build/" + let ToolsDir = BuildDir @@ "tools/" + let InDir = BuildDir @@ "in/" + let OutDir = BuildDir @@ "out/" + let ResultsDir = BuildDir @@ "results/" + + let SrcDir = "./src/" + let MsiDir = SrcDir @@ "Installer/" + let MsiBuildDir = MsiDir @@ "bin/Release/" + + let IntegrationTestsDir = FullName "./src/Tests/Odbc.Installer.Integration.Tests" + let UnitTestsDir = "src/Tests/Odbc.Tests" + + let ArtifactDownloadsUrl = "https://artifacts.elastic.co/downloads" + + let StagingDownloadsUrl product hash fullVersion = + sprintf "https://staging.elastic.co/%s-%s/downloads/%s/%s-%s.msi" fullVersion hash product product fullVersion + + let SnapshotDownloadsUrl product versionNumber hash fullVersion = + sprintf "https://snapshots.elastic.co/%s-%s/downloads/%s/%s-%s.msi" versionNumber hash product product fullVersion + +module Products = + open Paths + + type Product = + | Odbc + + member this.Name = + match this with + | Odbc -> "odbc" + + member this.AssemblyTitle = + match this with + | Odbc -> "ODBC Driver" + + member this.AssemblyDescription = + match this with + | Odbc -> "Elasticsearch ODBC Driver." + + member this.AssemblyGuid = + match this with + | Odbc -> "44555887-c439-470c-944d-8866ec3d7067" + + member this.Title = + CultureInfo.InvariantCulture.TextInfo.ToTitleCase this.Name + + let All = [Odbc] + + type Source = + | Compile + | Released + | BuildCandidate of hash:string + + member this.Description = + match this with + | Compile -> "compiled from source" + | Released -> "official release" + | BuildCandidate hash -> sprintf "build candidate %s" hash + + type Version = { + Product : string; + FullVersion : string; + Major : int; + Minor : int; + Patch : int; + Prerelease : string; + Source : Source; + RawValue: string; + } + + let lastSnapshotVersionAsset (product:Product, version:Version) = + let latestAsset = Snapshots.GetVersionsFiltered version.Major version.Minor version.Patch version.Prerelease + |> Seq.map (fun x -> (x, (Snapshots.GetSnapshotBuilds x) |> Seq.head)) + |> Seq.map (fun xy -> Snapshots.GetSnapshotBuildAssets product.Name (fst xy) (snd xy)) + |> Seq.head + latestAsset + + type ProductVersions (product:Product, versions:Version list) = + member this.Product = product + member this.Versions = versions + member this.Name = product.Name + member this.Title = product.Title + + member private this.DownloadUrl (version:Version) = + match version.Source with + | Compile -> + match product with + | Odbc -> + sprintf "%s/kibana/kibana-%s-windows-x86.zip" ArtifactDownloadsUrl version.FullVersion + | Released -> + sprintf "%s/%s/%s-%s.msi" ArtifactDownloadsUrl this.Name this.Name version.FullVersion + | BuildCandidate hash -> + if (version.FullVersion.EndsWith("snapshot", StringComparison.OrdinalIgnoreCase)) then + SnapshotDownloadsUrl this.Name (sprintf "%i.%i.%i" version.Major version.Minor version.Patch) hash version.FullVersion + else StagingDownloadsUrl this.Name hash version.FullVersion + + member private this.ZipFile (version:Version) = + let fullPathInDir = InDir |> Path.GetFullPath + Path.Combine(fullPathInDir, sprintf "%s-%s.zip" this.Name version.FullVersion) + + member private this.ExtractedDirectory (version:Version) = + let fullPathInDir = InDir |> Path.GetFullPath + Path.Combine(fullPathInDir, sprintf "%s-%s" this.Name version.FullVersion) + + member this.BinDirs = + this.Versions + |> List.filter (fun v -> v.Source = Compile) + |> List.map(fun v -> InDir @@ sprintf "%s-%s/bin/" this.Name v.FullVersion) + + member this.DownloadPath (version:Version) = + let fullPathInDir = InDir |> Path.GetFullPath + let releaseFile version dir = + let downloadUrl = this.DownloadUrl version + Path.Combine(fullPathInDir, dir, Path.GetFileName downloadUrl) + match version.Source with + | Compile -> this.ZipFile version + | Released -> releaseFile version "releases" + | BuildCandidate hash -> releaseFile version hash + + member this.Download () = + this.Versions + |> List.iter (fun version -> + let useSnapshots = getBuildParamOrDefault "snapshots" "$false" + let zipFile = this.DownloadPath version + let extractedDirectory = this.ExtractedDirectory version + + if (useSnapshots = "$true") then + if (File.Exists(zipFile)) then + tracefn "Deleting snapshot zip file: %s" zipFile + File.Delete(zipFile) + if (Directory.Exists(extractedDirectory)) then + tracefn "Deleting snapshot existing directory: %s" extractedDirectory + Directory.Delete(extractedDirectory, true) + + match (this.DownloadUrl version, zipFile) with + | (_, file) when fileExists file -> + tracefn "Already downloaded %s to %s" this.Name file + | (url, file) -> + tracefn "Downloading %s from %s" this.Name url + let targetDirectory = file |> Path.GetDirectoryName + if (directoryExists targetDirectory |> not) then CreateDir targetDirectory + use webClient = new System.Net.WebClient() + (url, file) |> webClient.DownloadFile + tracefn "Done downloading %s from %s to %s" this.Name url file + + match version.Source with + | Compile -> + if directoryExists extractedDirectory |> not + then + tracefn "Unzipping %s %s" this.Name zipFile + Unzip InDir zipFile + match this.Product with + | Kibana -> + let original = sprintf "kibana-%s-windows-x86" version.FullVersion + if directoryExists original |> not then + Rename (InDir @@ (sprintf "kibana-%s" version.FullVersion)) (InDir @@ original) + | _ -> () + + // Snapshots need renaming as folder inside zip is named differently + // An example: The hosted zip filename is: + // https://snapshots.elastic.co/7.0.0-alpha1-ea57ee52/downloads/elasticsearch/elasticsearch-7.0.0-alpha1-SNAPSHOT.zip + // This is downloaded locally into the in dir as: elasticsearch-7.0.0-alpha1-ea57ee52.zip + // When extracted it creates a folder called: elasticsearch-7.0.0-alpha1-snapshot + // This is then renamed to elasticsearch-7.0.0-alpha1-ea57ee52 + if (useSnapshots = "$true") then + let existing = InDir @@ (sprintf "%s-%s" product.Name (Snapshots.GetVersionsFiltered version.Major version.Minor version.Patch version.Prerelease |> Seq.head)) + let target = InDir @@ (sprintf "%s-%s" product.Name version.FullVersion) + Rename target existing + + else tracefn "Extracted directory %s already exists" extractedDirectory + | _ -> () + ) + + static member CreateFromProduct (productToVersion:Product -> Version list) (product: Product) = + ProductVersions(product, productToVersion product) + + diff --git a/installer/build/scripts/Snapshots.fsx b/installer/build/scripts/Snapshots.fsx new file mode 100644 index 00000000..9c170e07 --- /dev/null +++ b/installer/build/scripts/Snapshots.fsx @@ -0,0 +1,65 @@ +#I "../../packages/build/FAKE.x64/tools" +#I @"../../packages/build/Fsharp.Data/lib/net45" +#I @"../../packages/build/FSharp.Text.RegexProvider/lib/net40" + +#r @"FakeLib.dll" +#r "Fsharp.Data.dll" +#r "Fsharp.Text.RegexProvider.dll" +#r "System.Xml.Linq.dll" + +open System +open System.Net +open FSharp.Data +open Fake + +ServicePointManager.SecurityProtocol <- SecurityProtocolType.Ssl3 ||| SecurityProtocolType.Tls ||| SecurityProtocolType.Tls11 ||| SecurityProtocolType.Tls12; +ServicePointManager.ServerCertificateValidationCallback <- (fun _ _ _ _ -> true) + +module Snapshots = + + let private urlBase = "https://artifacts-api.elastic.co/v1/versions" + + let GetVersions() = + use webClient = new System.Net.WebClient() + let versions = webClient.DownloadString urlBase |> JsonValue.Parse + let arrayValue = versions.GetProperty "versions" + arrayValue.AsArray() + |> Seq.rev + |> Seq.map (fun x -> x.AsString()) + + let getPrerelease (prerelease:string) = + (splitStr "-" prerelease) |> Seq.head + + let getSnapshotName major minor patch prerelease = + if isNullOrWhiteSpace (prerelease) then + sprintf "%d.%d.%d-SNAPSHOT" major minor patch + else + let prerelease = getPrerelease prerelease + sprintf "%d.%d.%d-%s-SNAPSHOT" major minor patch prerelease + + let GetVersionsFiltered major minor patch prerelease = + use webClient = new System.Net.WebClient() + let versions = webClient.DownloadString urlBase |> JsonValue.Parse + let arrayValue = versions.GetProperty "versions" + arrayValue.AsArray() + |> Seq.rev + |> Seq.map (fun x -> x.AsString()) + |> Seq.filter (fun x -> x = getSnapshotName major minor patch prerelease) + + let GetSnapshotBuilds version = ( + use webClient = new System.Net.WebClient() + let url = sprintf "%s/%s/builds" urlBase version + let versions = webClient.DownloadString url |> JsonValue.Parse + let arrayValue = versions.GetProperty "builds" + arrayValue.AsArray() + |> Seq.map (fun x -> x.AsString()) + ) + + let GetSnapshotBuildAssets product version build = ( + use webClient = new System.Net.WebClient() + let url = sprintf "%s/%s/builds/%s" urlBase version build + let versions = webClient.DownloadString url |> JsonValue.Parse + let assets = ((((versions.GetProperty "build").GetProperty "projects").GetProperty product).GetProperty "packages") + let asset = sprintf "%s-%s.zip" product version + ((assets.GetProperty asset).GetProperty "url").InnerText() + ) \ No newline at end of file diff --git a/installer/build/scripts/Targets.fsx b/installer/build/scripts/Targets.fsx new file mode 100644 index 00000000..683b367c --- /dev/null +++ b/installer/build/scripts/Targets.fsx @@ -0,0 +1,143 @@ +#I "../../packages/build/FAKE.x64/tools" +#I "../../packages/build/System.Management.Automation/lib/net45" + +#r "FakeLib.dll" +#r "System.Management.Automation.dll" +#load "Products.fsx" +#load "Build.fsx" +#load "BuildConfig.fsx" +#load "Commandline.fsx" + +open System +open System.Management.Automation +open Fake +open Products +open Products.Products +open Products.Paths +open Build.Builder +open Commandline +open Fake.Runtime.Trace + +let productsToBuild = Commandline.parse() + +let productDescriptions = productsToBuild + |> List.map(fun p -> + p.Versions + |> List.map(fun v -> sprintf "%s %s (%s)" p.Title v.FullVersion v.Source.Description) + ) + |> List.concat + |> String.concat Environment.NewLine + +if (getBuildParam "target" |> toLower <> "help") then + traceHeader (sprintf "Products:%s%s%s" Environment.NewLine Environment.NewLine productDescriptions) + +Target "Clean" (fun _ -> + CleanDirs [MsiBuildDir; OutDir; ResultsDir] + productsToBuild + |> List.iter(fun p -> CleanDirs [OutDir @@ p.Name;]) +) + +Target "DownloadDriverFiles" (fun () -> + productsToBuild + |> List.iter (fun p -> p.Download()) +) + +Target "UnitTest" (fun () -> + //let unitTestBuildDir = UnitTestsDir @@ "bin" @@ "Release" + + //!! (UnitTestsDir @@ "*.csproj") + //|> MSBuildRelease unitTestBuildDir "Build" + //|> Log "MsiBuild-Output: " + + //!! (unitTestBuildDir @@ "*Tests.dll") + //|> xUnit2 (fun p -> { p with HtmlOutputPath = Some (ResultsDir @@ "xunit.html") }) + + tracefn "Skipping tests" +) + +Target "BuildInstallers" (fun () -> + productsToBuild |> List.iter (fun p -> BuildMsi p) +) + +Target "Release" (fun () -> + trace "Build in Release mode. Services and MSIs will be signed." +) + +Target "Integrate" (fun () -> + // TODO: Get the version for each different project + let versions = productsToBuild.Head.Versions + |> List.map(fun v -> v.RawValue) + + // last version in the list is the _target_ version + let version = versions |> List.last + let integrationTestsTargets = getBuildParamOrDefault "testtargets" "*" + let vagrantProvider = getBuildParamOrDefault "vagrantprovider" "local" + let gui = getBuildParamOrDefault "gui" "$false" + let noDestroy = getBuildParamOrDefault "no-destroy" "$true" + let plugins = getBuildParamOrDefault "plugins" "" + + // copy any plugins specified to build/out + if isNotNullOrEmpty plugins then + let pluginNames = plugins.Split([|',';';'|], StringSplitOptions.RemoveEmptyEntries) + versions + |> List.map(fun v -> Commandline.parseVersion v) + |> List.collect(fun s -> + pluginNames + |> Array.map(fun p -> Paths.InDir (sprintf "%s-%s.zip" p s.FullVersion)) + |> Array.toList + ) + |> List.iter(fun p -> + match fileExists p with + | true -> CopyFile Paths.OutDir p + | false -> traceFAKE "%s does not exist. Will install from public url" p + ) + + let previousVersions = + match versions.Length with + | 1 -> "@()" + | _ -> versions.[0..versions.Length - 2] + |> List.map(fun v -> sprintf "'%s'" v) + |> String.concat "," + |> sprintf "@(%s)" + + let script = sprintf @"cd '%s'; .\Bootstrapper.ps1 -Tests '%s' -Version '%s' -PreviousVersions %s -VagrantProvider '%s' -Gui:%s -VagrantDestroy:%s" + IntegrationTestsDir + integrationTestsTargets + version + previousVersions + vagrantProvider + gui + noDestroy + + trace (sprintf "Running Powershell script: '%s'" script) + use p = PowerShell.Create() + use output = new PSDataCollection() + output.DataAdded.Add(fun data -> trace (sprintf "%O" output.[data.Index])) + p.Streams.Verbose.DataAdded.Add(fun data -> trace (sprintf "%O" p.Streams.Verbose.[data.Index])) + p.Streams.Debug.DataAdded.Add(fun data -> trace (sprintf "%O" p.Streams.Debug.[data.Index])) + p.Streams.Progress.DataAdded.Add(fun data -> trace (sprintf "%O" p.Streams.Progress.[data.Index])) + p.Streams.Warning.DataAdded.Add(fun data -> traceError (sprintf "%O" p.Streams.Warning.[data.Index])) + p.Streams.Error.DataAdded.Add(fun data -> traceError (sprintf "%O" p.Streams.Error.[data.Index])) + let async = + p.AddScript(script).BeginInvoke(null, output) + |> Async.AwaitIAsyncResult + |> Async.Ignore + Async.RunSynchronously async + + if (p.InvocationStateInfo.State = PSInvocationState.Failed) then + failwith "PowerShell completed abnormally due to an error" +) + + +Target "Help" (fun () -> trace Commandline.usage) + +"Clean" + // ==> "DownloadDriverFiles" + =?> ("UnitTest", (not ((getBuildParam "skiptests") = "1"))) + ==> "BuildInstallers" + ==> "Release" + +//"BuildInstallers" +// ==> "Integrate" + +RunTargetOrDefault "BuildInstallers" \ No newline at end of file diff --git a/installer/build/scripts/config.yaml b/installer/build/scripts/config.yaml new file mode 100644 index 00000000..512bb246 --- /dev/null +++ b/installer/build/scripts/config.yaml @@ -0,0 +1,190 @@ +elasticsearch: + upgrade_code: daaa2cba-a1ed-4f29-afbf-5478617b00f6 + known_versions: + - version: 5.0.0-alpha1 + guid: 53e2a74c-26c1-4dd7-b6fb-4f91af321b28 + - version: 5.0.0-alpha2 + guid: a3be3c9c-00f0-4896-beb1-fea1c57bdd02 + - version: 5.0.0-alpha3 + guid: 6035f515-1dfe-4a79-9ef5-7bb9384551b6 + - version: 5.0.0-alpha4 + guid: e979c387-45df-4bbb-aca5-82aec7b54f0e + - version: 5.0.0-alpha5 + guid: c516704e-13ef-4ab8-9b27-c846d1e499b2 + - version: 5.0.0-beta1 + guid: 498c0857-e6fc-48ec-b210-c70586861e49 + - version: 5.0.0-rc1 + guid: 61847728-349e-4f2a-9965-cf8667d4558c + - version: 5.0.0 + guid: cf632ca6-8588-4e94-9661-99cafcc974ac + - version: 5.0.1 + guid: ab0244de-5a08-4812-97da-0c46c2f87eb9 + - version: 5.0.2 + guid: fbca0778-901d-4d2e-bf01-01001cc48e54 + - version: 5.1.1 + guid: 82292245-25f0-41c1-88ee-0892b733a7e3 + - version: 5.1.2 + guid: 21a99b00-bf06-4440-b35b-0d2e368089ae + - version: 5.2.0 + guid: c7758e8d-5268-4baa-a6ae-58c8071725ec + - version: 5.2.1 + guid: d8092759-699f-4889-9edf-92a96857125d + - version: 5.2.2 + guid: 6de3e5d5-bfe7-4422-bacf-ec2982d87122 + - version: 5.3.0 + guid: c954cde9-6960-49a9-a7b4-a065d498d037 + - version: 5.3.1 + guid: f508ab7b-066b-474f-aa0c-44d43c72d264 + - version: 5.3.2 + guid: 8bc18570-a189-4304-8c85-1f2d7db3d839 + - version: 5.4.0 + guid: 8279eff6-3a85-4b37-ac5a-3c5136bb5465 + - version: 5.4.1 + guid: 127c0984-c0fe-4f6d-acf9-4c15101bd627 + - version: 5.4.2 + guid: 13ad87cd-18f3-481e-a278-545d873f7353 + - version: 5.4.3 + guid: 481906c0-70ca-4a4c-bb66-a6e25ed22b94 + - version: 5.5.0 + guid: 344f09a4-5bf8-4d44-8e86-2130c263b08f + - version: 5.5.1 + guid: 2beb1fc0-042a-49fb-af3d-285a80f3c737 + - version: 5.5.2 + guid: 2105d4cc-ac3e-4cf0-9214-fe4d9857f801 + - version: 5.5.3 + guid: 1f75dce6-5c9e-43c4-ad23-72d94bfec22d + - version: 5.6.0 + guid: 72029505-94e9-4c29-a604-1da02d9d0402 + - version: 5.6.1 + guid: 5e6f4d7a-9220-4432-9e5f-c9a9ab184dea + - version: 5.6.2 + guid: 650ba327-fac0-4276-a8c2-a3b5d458773c + - version: 5.6.3 + guid: 4f50ce6b-f115-46c3-8902-d915250c3370 + - version: 5.6.4 + guid: 1a2e2c53-1753-4b63-98f8-013c3e67e223 + - version: 5.6.5 + guid: a8a40576-e918-4431-b4ee-a690882a35aa + - version: 5.6.6 + guid: 30dc148d-655e-4a0b-91a3-3f4d7b134a53 + - version: 5.6.7 + guid: 05abedf2-1809-447f-9247-7736e8687fe9 + - version: 5.6.8 + guid: e2bb9379-a5bd-4710-a4fd-cbf28b94944a + - version: 5.6.9 + guid: a3ad5bbc-30ee-4b91-ab1e-c75ca5f7f599 + - version: 5.6.10 + guid: 4ed6485c-1b3e-4bc9-8462-4da714630511 + - version: 5.6.11 + guid: 6aa47f6c-e8f1-4ae7-9df0-b07a90b2447f + - version: 6.0.0-beta1 + guid: f234f31d-f25c-4e64-8d3e-868f7b7ece97 + - version: 6.0.0-beta2 + guid: 50f217e3-97b7-47ba-95f7-685f7db0c8aa + - version: 6.0.0-rc1 + guid: 23c31d4d-6990-4c2e-92c5-4dd3348d3e07 + - version: 6.0.0-rc2 + guid: 576ef794-b3e3-4640-b717-1ed7d820d06e + - version: 6.0.0 + guid: e962ab93-6e24-4128-bacb-93422cdcd50d + - version: 6.0.1 + guid: 0cf2db3b-dab9-4721-a5bb-e3b343ee02e1 + - version: 6.0.2 + guid: 4379e718-4661-471b-9125-d83e2396f580 + - version: 6.1.0 + guid: 7280a702-8532-4341-ac9e-38b221d14c1c + - version: 6.1.1 + guid: 0b5c8e9d-a23a-428e-a1bc-26924fced6b9 + - version: 6.1.2 + guid: e861bc6e-5eee-46e1-9bb5-73d70e3c1be8 + - version: 6.1.3 + guid: c850d041-38e2-4066-88bf-9386775802da + - version: 6.1.4 + guid: 1de011b5-03ed-4da6-8fc0-d3a68a458d8b + - version: 6.2.0 + guid: bc4c5bb2-89a4-4958-a652-e0ff25b2df69 + - version: 6.2.1 + guid: bbb6bd0e-b892-4493-aab2-cac9c1ac73ae + - version: 6.2.2 + guid: cb8b1af5-e480-4e68-8222-375a997fb64e + - version: 6.2.3 + guid: d1f2b623-fc8d-455d-9026-5234d3a0a8f8 + - version: 6.2.4 + guid: 8ea010c4-6ee9-4565-88be-733b630626a1 + - version: 6.3.0 + guid: 183c1455-1bdf-4e9c-a07b-bfba13447735 + - version: 6.3.1 + guid: 1c17c35c-b09f-4c5d-a271-0ba0f03d591f + - version: 6.3.2 + guid: d0fc7098-4a42-479a-82de-e7f3966d11da + - version: 6.4.0 + guid: 3c08c055-faa4-4ab3-8adf-cef89a95fd5d + - version: 6.4.1 + guid: 57c3993a-ecd0-4f3f-bd52-51541591c78e + - version: 6.4.2 + guid: 8def2aae-cbe7-4db6-87d9-f95d5334dbf1 + - version: 6.5.0 + guid: bb1e8abb-36ba-4c27-9c7d-813a1d79bfd3 + - version: 6.5.1 + guid: 2a3b25d6-d38b-4b34-b861-e5983f9a4f1b + - version: 6.5.2 + guid: ab616add-f96b-4be9-af81-22ddb889e556 + - version: 6.6.0 + guid: 7590b87f-1147-4c0b-b565-7dafc518ae7b + - version: 6.6.1 + guid: d72b04b3-82ab-4819-8281-a56e30048df3 + - version: 6.6.2 + guid: b4053321-48a8-4112-8fcd-047d25c96962 + - version: 6.7.0 + guid: 80e7847d-5153-48b0-a011-d1cae0983fa4 + - version: 6.7.1 + guid: 73e22e50-daff-4a3d-bf31-829fd8c05694 + - version: 6.7.2 + guid: 0b5a3943-37c7-47f3-af9d-16e7c93b5060 + - version: 7.0.0-alpha1 + guid: 303b8268-6caa-4b82-aa3a-2b3e7197a0a3 +kibana: + upgrade_code: 6a2e6f51-5145-4c1a-8d05-2190ae213367 + known_versions: + - version: 5.0.0-rc1 + guid: 23049947-d309-46f1-988b-49f62ed76630 + - version: 5.0.0 + guid: 2136a182-7b96-42f3-b23a-42fead9e9b5d + - version: 5.0.1 + guid: 2c8d840a-f91b-4ecb-b66a-02e01ad649c1 + - version: 5.0.2 + guid: 44c6b2cc-f1e0-4db1-8f25-8f0b3fde5d29 + - version: 5.1.1 + guid: 059d0ca3-6448-4da3-97b6-83662aa754dc + - version: 5.1.2 + guid: ad02e1c6-d675-48d1-8fbc-37270e3c0eab + - version: 5.2.0 + guid: 71281af0-9b66-4126-9172-63c9b45a0ef7 + - version: 5.2.1 + guid: 6ae97b24-ff8a-4689-8257-3fc86b392f7d + - version: 5.2.2 + guid: df74fae8-ad4f-4865-af61-d6ee4943d6b0 + - version: 5.3.0 + guid: e098f523-e2e9-436e-a3d8-6e72270305c4 + - version: 5.3.1 + guid: 704b40e1-85b2-42d9-bff2-ad27838a24cb + - version: 5.3.2 + guid: 00001dc9-417b-48de-93a4-741dbf930b0b + - version: 5.4.0 + guid: b6b05d55-e64e-4ed8-8faf-31518777f54d + - version: 5.4.1 + guid: 7441600b-2d85-4da6-8e49-a52aed0ca11f + - version: 5.5.0 + guid: fe335f86-1cd3-42a5-905d-46af5eb5d267 + - version: 5.5.1 + guid: 44f33065-4532-4aee-9bbb-e681c32845ef + - version: 5.5.2 + guid: fc7519ca-27ee-416e-bb6d-37bfe3218b99 + - version: 5.5.3 + guid: d968c8bd-2388-4103-bd58-4966c2338718 + - version: 5.6.0 + guid: c3409b89-7793-4231-942c-6c998523d08f + - version: 6.0.0-beta1 + guid: b9d8d2c7-9e73-4936-ac76-1626dc25d7b9 + - version: 6.0.0-beta2 + guid: da8a7f2e-077f-493d-8986-b02656489b90 diff --git a/installer/build/scripts/feed-example.xml b/installer/build/scripts/feed-example.xml new file mode 100644 index 00000000..fd5ed0ab --- /dev/null +++ b/installer/build/scripts/feed-example.xml @@ -0,0 +1,24 @@ + + + + <![CDATA[Elasticsearch]]> + + https://www.elastic.co + RSS for Node + Sat, 28 Oct 2017 12:49:17 GMT + Sat, 28 Oct 2017 12:49:16 GMT + + + <![CDATA[Logstash Contrib 1.4.5]]> + https://www.elastic.co/downloads/past-releases/logstash-1-4-5 + https://www.elastic.co/downloads/past-releases/logstash-1-4-5 + + + <![CDATA[Elasticsearch 5.6.3]]> + + https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-3 + https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-3 + Tue, 10 Oct 2017 18:00:01 GMT + + + \ No newline at end of file diff --git a/installer/build/scripts/scripts.fsproj b/installer/build/scripts/scripts.fsproj new file mode 100644 index 00000000..469891b4 --- /dev/null +++ b/installer/build/scripts/scripts.fsproj @@ -0,0 +1,98 @@ + + + + + Debug + AnyCPU + 2.0 + {86f63532-e509-49a1-8d83-a4651e073b16} + Library + build + make + v4.6 + 4.4.1.0 + make + + + true + full + false + false + bin\Debug\ + DEBUG;TRACE + 3 + bin\Debug\build.XML + + + pdbonly + true + true + bin\Release\ + TRACE + 3 + bin\Release\build.XML + + + + + True + + + + + + + + + + + + + + + + + 11 + + + true + full + false + false + bin\Debug\ + DEBUG;TRACE + 3 + bin\Debug\build.XML + x86 + + + pdbonly + true + true + bin\Release\ + TRACE + 3 + bin\Release\build.XML + x86 + + + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets + + + + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets + + + + + + \ No newline at end of file diff --git a/installer/build/tools/signtool/signtool.exe b/installer/build/tools/signtool/signtool.exe new file mode 100644 index 0000000000000000000000000000000000000000..c61894390c3eea70d1c8094c942e3e6342ec559a GIT binary patch literal 363160 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≫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 1.6.1) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.6)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) + System.Configuration.ConfigurationManager (>= 4.4) - restriction: || (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) + System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.6)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) + System.ValueTuple (>= 4.4) - restriction: || (&& (>= net45) (< net47) (< netstandard1.6)) (&& (< net45) (>= netstandard1.3) (< netstandard1.6)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) + Microsoft.NETCore.Platforms (2.1.1) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< 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)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net461) (< netstandard1.6)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.6) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.3) (>= win8)) (&& (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< netstandard1.0) (>= netstandard1.6) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.6) (>= win8)) (&& (< netstandard1.0) (>= netstandard1.6) (< win8)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (>= wp8)) (&& (< netstandard1.3) (>= netstandard1.6) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.6) (>= wp8)) (>= uap10.1) + Microsoft.NETCore.Targets (2.1) - restriction: || (&& (>= dnxcore50) (>= netstandard1.1)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + 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) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.IO.Compression (4.3.2) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Net.Http (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + 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) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + semver (2.0.4) + System.Runtime (>= 4.1) - restriction: && (< net452) (>= netstandard1.1) + System.Runtime.Extensions (>= 4.1) - restriction: && (< net452) (>= netstandard1.1) + System.Runtime.InteropServices (>= 4.1) - restriction: && (< net452) (>= netstandard1.1) + System.Text.RegularExpressions (>= 4.1) - restriction: && (< net452) (>= netstandard1.1) + System.AppContext (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Buffers (4.5) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netstandard1.1)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netcoreapp2.0) (>= xamarinios)) (&& (>= netcoreapp2.0) (>= xamarinmac)) (&& (>= netcoreapp2.0) (>= xamarintvos)) (&& (>= netcoreapp2.0) (>= xamarinwatchos)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) + System.Runtime (>= 4.3) - restriction: && (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) + System.Threading (>= 4.3) - restriction: && (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) + System.Console (4.3.1) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.DiagnosticSource (4.5.1) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + System.Collections (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Reflection (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81)) + System.Globalization.Calendars (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.Compression (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.IO.Compression (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Buffers (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Collections (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Threading (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.Compression.ZipFile (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Buffers (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Expressions (4.3) - restriction: || (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Collections (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Linq (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< 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) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Extensions (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Primitives (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.TypeExtensions (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Memory (4.5.1) - restriction: || (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) + System.Buffers (>= 4.4) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Numerics.Vectors (>= 4.4) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (>= net461) + System.Runtime.CompilerServices.Unsafe (>= 4.5) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Net.Http (4.3.4) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Globalization (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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.Compression (>= 4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Threading.Tasks (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.3)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= dnxcore50) (&& (< 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) - restriction: || (>= dnxcore50) (&& (< 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) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Net.Sockets (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Numerics.Vectors (4.5) - restriction: || (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= net461) (>= netcoreapp2.0)) + System.ObjectModel (4.3) - restriction: || (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Collections (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6)) (&& (< net45) (>= net46) (< netstandard1.3)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net452) (>= netstandard1.1)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= dnxcore50) (&& (< 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) - restriction: || (>= dnxcore50) (&& (< 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.Extensions (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net452) (>= netstandard1.1)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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.InteropServices (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net452) (>= netstandard1.1)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) + System.Reflection (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) + System.Reflection.Primitives (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1) + System.Runtime.Handles (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) + System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.3) (>= win8)) (&& (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< netstandard1.0) (>= netstandard1.6) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.6) (>= win8)) (&& (< netstandard1.0) (>= netstandard1.6) (< win8)) (&& (< netstandard1.3) (>= netstandard1.6) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Extensions (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Numerics (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= net461) (< netstandard1.5)) (&& (< net45) (>= net461) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net461) (< netstandard1.5) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= net461) (< netstandard1.5)) (&& (< net45) (>= net461) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net463) (< netstandard1.4)) (&& (< net45) (>= net463) (< netstandard1.5)) (&& (< net45) (>= net463) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net463) (< netstandard1.6)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net461) (< netstandard1.5) (>= uap10.0)) (&& (>= net463) (< netstandard1.5) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.OpenSsl (4.5) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.IO (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Resources.ResourceManager (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Runtime (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Runtime.Extensions (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Runtime.Handles (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Runtime.InteropServices (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Runtime.Numerics (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Text.Encoding (>= 4.3) - restriction: && (>= netstandard1.6) (< netstandard2.0) + System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.2)) (&& (< net45) (>= net46) (< netstandard1.3) (>= netstandard1.6)) (&& (< net45) (>= net46) (>= netstandard1.4) (< netstandard1.5)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net46) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= net46) (< netstandard1.5) (>= netstandard1.6)) (&& (< net45) (>= net46) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.5) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization.Calendars (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.FileSystem (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Numerics (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.RegularExpressions (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net452) (>= netstandard1.1)) (&& (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp1.1) + System.Runtime.Extensions (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< 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: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading.Timer (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (>= dnxcore50) (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.ValueTuple (4.5) - restriction: || (&& (>= net45) (< net47) (< netstandard1.6)) (&& (< net45) (>= netstandard1.3) (< netstandard1.6)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) + NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + WixSharp.bin (1.9.2) + WixSharp.wix.bin (3.11) + xunit (2.4) + xunit.analyzers (>= 0.10) + xunit.assert (2.4) + xunit.core (2.4) + xunit.abstractions (2.0.3) - restriction: >= netstandard1.1 + NETStandard.Library (>= 1.6) - restriction: && (< net35) (>= netstandard1.0) (< netstandard2.0) + xunit.analyzers (0.10) + xunit.assert (2.4) + NETStandard.Library (>= 1.6.1) - restriction: && (< net452) (>= netstandard1.1) (< netstandard2.0) + xunit.core (2.4) + xunit.extensibility.core (2.4) + xunit.extensibility.execution (2.4) + xunit.extensibility.core (2.4) + NETStandard.Library (>= 1.6.1) - restriction: && (< net452) (>= netstandard1.1) (< netstandard2.0) + xunit.abstractions (>= 2.0.2) - restriction: >= netstandard1.1 + xunit.extensibility.execution (2.4) + NETStandard.Library (>= 1.6.1) - restriction: && (< net452) (>= netstandard1.1) (< netstandard2.0) + xunit.extensibility.core (2.4) - restriction: >= netstandard1.1 + remote: https://www.nuget.org/api/v2 + NETStandard.Library (2.0.3) - restriction: || (&& (< net35) (>= netstandard1.1) (< netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard1.6)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< net452) (>= netstandard1.1) (< netstandard2.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) + Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.AppContext (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Console (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.Compression (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.Compression.ZipFile (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.FileSystem (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Linq (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Linq.Expressions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Http (>= 4.3.2) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Sockets (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.ObjectModel (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading.Timer (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Xml.XDocument (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Collections.Concurrent (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Configuration.ConfigurationManager (4.5) - restriction: || (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) + System.Security.Cryptography.ProtectedData (>= 4.5) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) + System.Security.Permissions (>= 4.5) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Tools (4.3) - restriction: || (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Tracing (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Globalization (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.3)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net463) (< netstandard1.4)) (&& (< net45) (>= net463) (< netstandard1.5)) (&& (< net45) (>= net463) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net463) (< netstandard1.6)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net463) (< netstandard1.5) (>= uap10.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO.FileSystem (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + 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) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (4.3) - restriction: || (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (4.3) - restriction: || (&& (>= dnxcore50) (>= netstandard1.1)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (>= netcoreapp1.1) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Emit (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (4.3) - restriction: || (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (4.3) - restriction: || (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.6) (< win8)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.6) (< portable-net45+win8)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Primitives (4.3) - restriction: || (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< 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.2) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (>= netcoreapp1.1) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.TypeExtensions (4.5.1) - restriction: || (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.6)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (&& (< monoandroid) (< netstandard1.3)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (&& (< monoandroid) (< netstandard1.3)) + System.Resources.ResourceManager (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.CompilerServices.Unsafe (4.5.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (>= net45) (< netstandard1.5) (>= uap10.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios)) (&& (>= net46) (< netstandard1.0)) (&& (>= net46) (< netstandard1.4) (>= wpa81)) (&& (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (>= net46) (>= wp8)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netstandard1.1)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (>= netcoreapp2.0) (>= xamarinios)) (&& (>= netcoreapp2.0) (>= xamarinmac)) (&& (>= netcoreapp2.0) (>= xamarintvos)) (&& (>= netcoreapp2.0) (>= xamarinwatchos)) (&& (< netstandard1.0) (>= uap10.0) (< win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.2) (>= netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.2) (>= netstandard1.6) (< win8) (>= wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (>= wp8)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.4) (>= wp8)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (>= wp8)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.6) (>= wp8)) (&& (>= netstandard2.0) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard2.0) (< portable-net45+win8+wpa81)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (>= wp8)) + System.Runtime.Handles (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.1)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (>= netcoreapp1.1) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + 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.Security.AccessControl (4.5) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 4.5) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Cryptography.Cng (4.5) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= net461) (< netstandard1.5)) (&& (< net45) (>= net463) (< netstandard1.4)) (&& (< net45) (>= net463) (< netstandard1.5)) (&& (< net45) (>= net463) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net463) (< netstandard1.6)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net461) (< netstandard1.5) (>= uap10.0)) (&& (>= net463) (< netstandard1.5) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + 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 (4.5) - restriction: || (&& (< net45) (>= netstandard2.0) (< xamarinios)) (>= netcoreapp2.0) + System.Memory (>= 4.5) - restriction: && (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) + System.Security.Permissions (4.5) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) + System.Security.AccessControl (>= 4.5) - restriction: || (>= net461) (>= netstandard2.0) + System.Security.Principal.Windows (4.5.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.Text.Encoding (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.3)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (4.3) - restriction: || (&& (>= dnxcore50) (>= net46)) (&& (>= dnxcore50) (>= netstandard1.3)) (&& (>= dnxcore50) (>= netstandard1.4)) (&& (>= dnxcore50) (>= netstandard1.5)) (&& (>= dnxcore50) (>= netstandard1.6)) (&& (>= dnxcore50) (>= uap10.0)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.3)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks.Extensions (4.5.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.CompilerServices.Unsafe (>= 4.5) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (>= net45) (&& (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.ReaderWriter (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Xml.XDocument (4.3) - restriction: || (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + +GROUP build +NUGET + remote: https://www.nuget.org/api/v2 + FAKE.x64 (5.8.4) + FSharp.Configuration (1.5) + FSharp.Core (>= 4.0.0.1) + FSharp.Core (4.5.2) + FSharp.Data (3.0) + FSharp.Core (>= 4.0.0.1) - restriction: >= net45 + FSharp.Core (>= 4.3.4) - restriction: && (< net45) (>= netstandard2.0) + FSharp.Text.RegexProvider (1.0) + Microsoft.Management.Infrastructure (1.0) - restriction: >= netcoreapp2.1 + NETStandard.Library (>= 1.6.1) - restriction: && (< net451) (>= netstandard1.6) + System.Runtime.CompilerServices.VisualC (>= 4.3) - restriction: && (< net451) (>= netstandard1.6) + System.Runtime.Serialization.Xml (>= 4.3) - restriction: && (< net451) (>= netstandard1.6) + System.Security.SecureString (>= 4.3) - restriction: && (< net451) (>= netstandard1.6) + System.Threading.ThreadPool (>= 4.3) - restriction: && (< net451) (>= netstandard1.6) + Microsoft.NETCore.Platforms (2.1.1) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Targets (2.1) - restriction: >= netcoreapp2.1 + Microsoft.PowerShell.CoreCLR.Eventing (6.1) - restriction: >= netcoreapp2.1 + System.Security.Principal.Windows (>= 4.5) - restriction: >= netcoreapp2.1 + Microsoft.PowerShell.Native (6.1) - restriction: >= netcoreapp2.1 + Microsoft.Win32.Registry (4.5) - restriction: >= netcoreapp2.1 + System.Security.AccessControl (>= 4.5) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 4.5) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.Registry.AccessControl (4.5) - restriction: >= netcoreapp2.1 + Microsoft.Win32.Registry (>= 4.5) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= net461) (>= uap10.1) + System.Security.AccessControl (>= 4.5) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= net461) + NETStandard.Library (2.0.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= wp8) + Newtonsoft.Json (11.0.2) - restriction: >= netcoreapp2.1 + System.CodeDom (4.5) - restriction: >= netcoreapp2.1 + System.Collections (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Collections.Concurrent (4.3) - restriction: >= netcoreapp2.1 + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Configuration.ConfigurationManager (4.5) - restriction: >= netcoreapp2.1 + System.Security.Cryptography.ProtectedData (>= 4.5) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) + System.Security.Permissions (>= 4.5) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Tools (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Tracing (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.DirectoryServices (4.5) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.IO.FileSystem.AccessControl (>= 4.5) - restriction: || (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) (>= uap10.1) + System.Security.AccessControl (>= 4.5) - restriction: || (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) + System.Security.Principal.Windows (>= 4.5) - restriction: || (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) + System.Globalization (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO.FileSystem (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.AccessControl (4.5) - restriction: >= netcoreapp2.1 + System.Security.AccessControl (>= 4.5) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= net461) + System.Security.Principal.Windows (>= 4.5) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= net461) + System.IO.FileSystem.Primitives (4.3) - restriction: >= netcoreapp2.1 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (4.3) - restriction: >= netcoreapp2.1 + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Management (4.5) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + Microsoft.Win32.Registry (>= 4.5) - restriction: >= netcoreapp2.0 + System.CodeDom (>= 4.5) - restriction: || (&& (< net45) (>= netstandard2.0)) (>= netcoreapp2.0) + System.Management.Automation (6.1) + Microsoft.Management.Infrastructure (>= 1.0) - restriction: >= netcoreapp2.1 + Microsoft.PowerShell.CoreCLR.Eventing (>= 6.1) - restriction: >= netcoreapp2.1 + Microsoft.PowerShell.Native (>= 6.1.0-rc.1) - restriction: >= netcoreapp2.1 + Microsoft.Win32.Registry.AccessControl (>= 4.5) - restriction: >= netcoreapp2.1 + Newtonsoft.Json (>= 11.0.2) - restriction: >= netcoreapp2.1 + System.Configuration.ConfigurationManager (>= 4.5) - restriction: >= netcoreapp2.1 + System.DirectoryServices (>= 4.5) - restriction: >= netcoreapp2.1 + System.IO.FileSystem.AccessControl (>= 4.5) - restriction: >= netcoreapp2.1 + System.Management (>= 4.5) - restriction: >= netcoreapp2.1 + System.Security.AccessControl (>= 4.5) - restriction: >= netcoreapp2.1 + System.Security.Cryptography.Pkcs (>= 4.5) - restriction: >= netcoreapp2.1 + System.Security.Permissions (>= 4.5) - restriction: >= netcoreapp2.1 + System.Text.Encoding.CodePages (>= 4.5) - restriction: >= netcoreapp2.1 + System.Private.DataContractSerialization (4.3) - restriction: >= netcoreapp2.1 + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) (>= net46) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) (>= net46) + System.Xml.XmlSerializer (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Reflection (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Emit (4.3) - restriction: >= netcoreapp2.1 + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (4.3) - restriction: >= netcoreapp2.1 + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (4.3) - restriction: >= netcoreapp2.1 + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Primitives (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.TypeExtensions (4.5.1) - restriction: >= netcoreapp2.1 + System.Resources.ResourceManager (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.CompilerServices.Unsafe (4.5.2) - restriction: >= netcoreapp2.1 + System.Runtime.CompilerServices.VisualC (4.3) - restriction: >= netcoreapp2.1 + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Handles (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Runtime.Serialization.Primitives (4.3) - restriction: >= netcoreapp2.1 + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Serialization.Xml (4.3) - restriction: >= netcoreapp2.1 + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Private.DataContractSerialization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Security.AccessControl (4.5) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 4.5) - restriction: || (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Cryptography.Cng (4.5) - restriction: >= netcoreapp2.1 + System.Security.Cryptography.Pkcs (4.5.1) - restriction: >= netcoreapp2.1 + System.Security.Cryptography.Cng (>= 4.5) - restriction: >= netcoreapp2.1 + System.Security.Cryptography.Primitives (4.3) - restriction: >= netcoreapp2.1 + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.ProtectedData (4.5) - restriction: >= netcoreapp2.1 + System.Security.Permissions (4.5) - restriction: >= netcoreapp2.1 + System.Security.AccessControl (>= 4.5) - restriction: || (>= net461) (>= netstandard2.0) + System.Security.Principal.Windows (4.5.1) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.Security.SecureString (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - 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.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.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding.CodePages (4.5) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.Runtime.CompilerServices.Unsafe (>= 4.5) - restriction: || (&& (< net46) (>= netstandard2.0) (< xamarinios)) (>= net461) (>= netcoreapp2.0) + System.Text.Encoding.Extensions (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.RegularExpressions (4.3) - restriction: >= netcoreapp2.1 + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wp8+wpa81) + System.Threading (4.3) - restriction: >= netcoreapp2.1 + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (4.3) - restriction: >= netcoreapp2.1 + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks.Extensions (4.5.1) - restriction: >= netcoreapp2.1 + System.Threading.ThreadPool (4.3) - restriction: >= netcoreapp2.1 + 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.Xml.ReaderWriter (4.3.1) - restriction: >= netcoreapp2.1 + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Xml.XDocument (4.3) - restriction: >= netcoreapp2.1 + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Xml.XmlDocument (4.3) - restriction: >= netcoreapp2.1 + 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) + System.Xml.XmlSerializer (4.3) - restriction: >= netcoreapp2.1 + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Emit (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Xml.XmlDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + xunit.runner.console (2.2) diff --git a/installer/src/Installer.sln b/installer/src/Installer.sln new file mode 100644 index 00000000..812d5791 --- /dev/null +++ b/installer/src/Installer.sln @@ -0,0 +1,53 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27004.2009 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Installer", "Installer\Installer.csproj", "{44555887-C439-470C-944D-8866EC3D7067}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{A424684D-86E2-4AF5-B707-E8E3FBDB696B}" + ProjectSection(SolutionItems) = preProject + ..\.editorconfig = ..\.editorconfig + ..\.gitignore = ..\.gitignore + ..\build.bat = ..\build.bat + ..\paket.dependencies = ..\paket.dependencies + ..\README.md = ..\README.md + EndProjectSection +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "scripts", "..\build\scripts\scripts.fsproj", "{86F63532-E509-49A1-8D83-A4651E073B16}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {44555887-C439-470C-944D-8866EC3D7067}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {44555887-C439-470C-944D-8866EC3D7067}.Debug|Any CPU.Build.0 = Debug|Any CPU + {44555887-C439-470C-944D-8866EC3D7067}.Debug|x86.ActiveCfg = Debug|Any CPU + {44555887-C439-470C-944D-8866EC3D7067}.Debug|x86.Build.0 = Debug|Any CPU + {44555887-C439-470C-944D-8866EC3D7067}.Release|Any CPU.ActiveCfg = Release|Any CPU + {44555887-C439-470C-944D-8866EC3D7067}.Release|Any CPU.Build.0 = Release|Any CPU + {44555887-C439-470C-944D-8866EC3D7067}.Release|x86.ActiveCfg = Release|Any CPU + {44555887-C439-470C-944D-8866EC3D7067}.Release|x86.Build.0 = Release|Any CPU + {86F63532-E509-49A1-8D83-A4651E073B16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {86F63532-E509-49A1-8D83-A4651E073B16}.Debug|Any CPU.Build.0 = Debug|Any CPU + {86F63532-E509-49A1-8D83-A4651E073B16}.Debug|x86.ActiveCfg = Debug|x86 + {86F63532-E509-49A1-8D83-A4651E073B16}.Debug|x86.Build.0 = Debug|x86 + {86F63532-E509-49A1-8D83-A4651E073B16}.Release|Any CPU.ActiveCfg = Release|Any CPU + {86F63532-E509-49A1-8D83-A4651E073B16}.Release|Any CPU.Build.0 = Release|Any CPU + {86F63532-E509-49A1-8D83-A4651E073B16}.Release|x86.ActiveCfg = Release|x86 + {86F63532-E509-49A1-8D83-A4651E073B16}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {86F63532-E509-49A1-8D83-A4651E073B16} = {A424684D-86E2-4AF5-B707-E8E3FBDB696B} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {78F9D006-91C7-4606-9335-40A1869FD7F2} + EndGlobalSection +EndGlobal diff --git a/installer/src/Installer/App.config b/installer/src/Installer/App.config new file mode 100644 index 00000000..e707b322 --- /dev/null +++ b/installer/src/Installer/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/installer/src/Installer/CustomAction.config b/installer/src/Installer/CustomAction.config new file mode 100644 index 00000000..c53cbde7 --- /dev/null +++ b/installer/src/Installer/CustomAction.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/installer/src/Installer/Installer.csproj b/installer/src/Installer/Installer.csproj new file mode 100644 index 00000000..dc41dd6f --- /dev/null +++ b/installer/src/Installer/Installer.csproj @@ -0,0 +1,120 @@ + + + + + Debug + AnyCPU + {44555887-C439-470C-944D-8866EC3D7067} + Exe + Properties + ODBCInstaller + WixSharp Setup + v4.5 + 512 + + + + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + ..\..\packages\WixSharp.bin\lib\BootstrapperCore.dll + True + True + + + ..\..\packages\WixSharp.bin\lib\Microsoft.Deployment.WindowsInstaller.dll + True + True + + + ..\..\packages\WixSharp.bin\lib\WixSharp.dll + True + True + + + ..\..\packages\WixSharp.bin\lib\WixSharp.Msi.dll + True + True + + + ..\..\packages\WixSharp.bin\lib\WixSharp.UI.dll + True + True + + + + \ No newline at end of file diff --git a/installer/src/Installer/ODBC.ico b/installer/src/Installer/ODBC.ico new file mode 100644 index 0000000000000000000000000000000000000000..a3c48809eeb0fe75a706c7be0e02ca9f62db843c GIT binary patch literal 21238 zcmeI4ONbOl7{_ZJ-ST%)wkd2p+r%F)BMbNFI`l z2f?G_LBSkU5E0_zpjkm88clqlE>YA&d?G69?&SCH=~~L!n(5w|o}DSyhTm3oJ-+(> zUv>A+bWgQ0ZDxX*J=>7ZHv6U-^RY3ex3{$4wb+iN*RmZxZcI!E z=>pgU2jLn#gCY#VLpTq+VJ*yoiBR*VzAzbnSXHb}jxZOmNK zo$vsvjaR8|h<;aL19U>-rZymd7sFYQjY{^@mcPJ;<|Pl2HlHJLoyJ}PHz2M3H0`A0 z2q>l_e6VGty^!_Tu77*6KSkrYoAyD+>=|&|XPJM5?e&m@;Z1p%1Un$h@myQ?u)QuG zXLxL7C=>IcA8vu-p9MFua~%%DGI&e3b%Jt@uQ{370A^rwDnvT%n5~e0xv1O3d_npH z6rit0)K`2DtKkD^gNjmB2RYaU#SD3gtv}!^&=_7H;<{<1$05t{t*wjLou_epo66yR z_y=sCtkW&=I3rw$%V&}P+raVnW4l9Rm2WD8W{=9=Hv! zA<38Lw7CS^U>+!*sm3gCq<%3SqzhmZ9E5A|4CKooJcRS0IIjhrOB12oFOA7T+hZ6Y5ABdIvYj-huTY|gRODmqe&0#z)pme7Xos9^$tL79hQ=xu zu*ulEPtgkn(EW^P>n$bjUrZVow=U~E-xKs5r5p4;Z5NyXeTR7h?)Rxz?B9iRun#uF zQs}JLCs(U4U$6c0{`jnWJFDOT=su3CbF}$4^gj(7AzwaLnth*Uw=9i~G;Q#&3-q1) zDU4QUn)bTqaSWD2TN&w%)t9f-Gn#-OkhBKFw}f75#cPY3+oV>N(x#u2x^(r=NZcp_!j+>W#NP6ReOn zpJunLTtEHV;R@92L$mtpy#Lzja<%&Mww+DsyES0#_wjv^)uPm=*)4P1(pS&-blx;; z?&=v=&zfhsdTP-B3pO4Hgq}kmg*7mtT>EJC`}&7o<{s<5eCYa;{P$^g%aZzsUhiu4 z+4wb ze}$hv!h55MgR9k-$KJPr=(jQc9e<~!je$?ITZXM)1JkcK{Fb5qBLV7H3|6O!fjif} zJa#Sxs{gNy^#2#AejNk)$$HhzH|K5{HU z-@n8$Scr`@YjaxhJdjVXpr+qHNxwGwe+R9qFO6Tij@9)0w^+Z{S?v!z1~vcwF^+-O z7HZvIns~Qb8(jx#{{5@;Yr}@t`dtVt2GU;l@1IK%h+;4uds%=rw0b09)Gjy ztN-i;p*N)z{q`!)Lu4 zqZ`)4E;s>thsYCfW1(x0A0yOE?ZJy6rG;o;??cem6Q_M8b0#($Ilx%STQn@q z<)z#xrPd9b=7-%X)py4GY18ul)~-!s`RUyr)@gOyI1I<75DChUh~Gd|ZXM4L$KB3@ XofkV#kpaz{oku&bj8yVBn)m+!5Ndo^ literal 0 HcmV?d00001 diff --git a/installer/src/Installer/ODBCDriver.cs b/installer/src/Installer/ODBCDriver.cs new file mode 100644 index 00000000..5690451c --- /dev/null +++ b/installer/src/Installer/ODBCDriver.cs @@ -0,0 +1,55 @@ +using System.Linq; +using WixSharp; + +namespace ODBCInstaller +{ + partial class Program + { + public class ODBCDriver : GenericNestedEntity, IGenericEntity + { + [Xml] + new public string Id + { + get => base.Id; + set => Id = value; + } + + [Xml] + new public string Name; + + public ODBCDriver(string name) + { + this.Name = name; + this.Children = Enumerable.Empty().ToArray(); + } + + public ODBCDriver(string name, IGenericEntity element) + { + this.Name = name; + this.Children = new[] { element }; + } + + public void Process(ProcessingContext context) + { + // http://wixtoolset.org/documentation/manual/v3/xsd/wix/odbcdriver.html + + var driver = this.ToXElement("ODBCDriver"); + + var newContext = new ProcessingContext + { + Project = context.Project, + Parent = this, + XParent = driver, + FeatureComponents = context.FeatureComponents, + }; + + foreach (var child in this.Children) + { + child.Process(newContext); + } + + context.XParent.AddElement(driver); + } + } + } +} \ No newline at end of file diff --git a/installer/src/Installer/ODBCDriverDataSource.cs b/installer/src/Installer/ODBCDriverDataSource.cs new file mode 100644 index 00000000..da922ab1 --- /dev/null +++ b/installer/src/Installer/ODBCDriverDataSource.cs @@ -0,0 +1,35 @@ +using WixSharp; + +namespace ODBCInstaller +{ + partial class Program + { + public class ODBCDriverDataSource : GenericNestedEntity, IGenericEntity + { + [Xml] + new public string Id + { + get => base.Id; + set => Id = value; + } + + [Xml] + new public string Name; + + [Xml] + public string Registration; + + public ODBCDriverDataSource(string name, string registration) + { + this.Name = name; + this.Registration = registration; + } + + public void Process(ProcessingContext context) + { + // http://wixtoolset.org/documentation/manual/v3/xsd/wix/odbcdatasource.html + context.XParent.AddElement(this.ToXElement("ODBCDataSource")); + } + } + } +} \ No newline at end of file diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs new file mode 100644 index 00000000..21115f36 --- /dev/null +++ b/installer/src/Installer/Program.cs @@ -0,0 +1,66 @@ +using System; +using System.Linq; +using System.Diagnostics; +using WixSharp; + +namespace ODBCInstaller +{ + partial class Program + { + static void Main() + { + const string PreRelease = "-alpha8"; + var odbcVersion = FileVersionInfo.GetVersionInfo(System.IO.Path.GetFullPath("driver\\esodbc7u.dll")); + var VersionString = $"{odbcVersion.ProductVersion }{PreRelease}"; + + var driverDirectory = "driver\\"; + var driverFilename = System.IO.Path.Combine(driverDirectory, "esodbc7u.dll"); + + var files = System.IO.Directory.GetFiles(driverDirectory) + .Where(f => f.EndsWith(driverFilename) == false) + .Select(f => new File(f)) + .Concat(new[] { new File(driverFilename, new ODBCDriver("Elasticsearch Driver")) } ) + .Cast() + .ToArray(); + + var installDirectory = $@"%ProgramFiles%\Elastic\ODBCDriver\{VersionString}"; + var components = new Dir(installDirectory, files); + + var project = new Project("ODBCDriverInstaller", components) + { + Platform = Platform.x64, + InstallScope = InstallScope.perMachine, + Version = new Version(odbcVersion.ProductMajorPart, odbcVersion.ProductMinorPart, odbcVersion.ProductBuildPart, odbcVersion.ProductPrivatePart), + GUID = new Guid("e87c5d53-fddf-4539-9447-49032ed527bb"), + UI = WUI.WixUI_InstallDir, + BannerImage = "topbanner.bmp", + BackgroundImage = "leftbanner.bmp", + Name = "Elasticsearch ODBC Driver", + Description = $"{odbcVersion.FileDescription} ({VersionString})", + ControlPanelInfo = new ProductInfo + { + ProductIcon = "ODBC.ico", + Manufacturer = odbcVersion.CompanyName, + UrlInfoAbout = "https://www.elastic.co/products/stack/elasticsearch-sql", + HelpLink = "https://discuss.elastic.co/c/elasticsearch" + }, + OutFileName = $"elasticsearch-odbc-driver-{VersionString}", + + // http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html + MajorUpgrade = new MajorUpgrade + { + AllowDowngrades = false, + AllowSameVersionUpgrades = false, + Disallow = true, + DisallowUpgradeErrorMessage = "An existing version is already installed, please uninstall this version before continuing.", + DowngradeErrorMessage = "A more recent version is already installed, please uninstall this version before continuing.", + } + }; + + project.Attributes.Add("Manufacturer", odbcVersion.CompanyName); + project.WixVariables.Add("WixUILicenseRtf", "driver\\LICENSE.rtf"); + + project.BuildMsi(); + } + } +} \ No newline at end of file diff --git a/installer/src/Installer/Properties/AssemblyInfo.cs b/installer/src/Installer/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..266ed97e --- /dev/null +++ b/installer/src/Installer/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ODBCInstaller")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ODBCInstaller")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("44555887-c439-470c-944d-8866ec3d7067")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/installer/src/Installer/WixSharp Setup.exe b/installer/src/Installer/WixSharp Setup.exe new file mode 100644 index 0000000000000000000000000000000000000000..e31ea6816ff98106e64aeb525f5bd4cec99963f0 GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/installer/src/Installer/packages.config b/installer/src/Installer/packages.config new file mode 100644 index 00000000..179e9efa --- /dev/null +++ b/installer/src/Installer/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/installer/src/Installer/paket.references b/installer/src/Installer/paket.references new file mode 100644 index 00000000..84bfab24 --- /dev/null +++ b/installer/src/Installer/paket.references @@ -0,0 +1,2 @@ +WixSharp.bin +WixSharp.wix.bin \ No newline at end of file diff --git a/installer/src/Installer/topbanner.bmp b/installer/src/Installer/topbanner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cd06854c7475cc83f2fedf2c92abeef84f163fb6 GIT binary patch literal 114432 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/installer/src/Installer/wix/ODBCInstaller.g.wxs b/installer/src/Installer/wix/ODBCInstaller.g.wxs new file mode 100644 index 00000000..be7e70a3 --- /dev/null +++ b/installer/src/Installer/wix/ODBCInstaller.g.wxs @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From ac02542a95854368b991db6a57f8fc5d33e118a7 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 17 Oct 2018 23:44:54 +0100 Subject: [PATCH 02/16] First pass cleaning up build scripts --- installer/build/scripts/Build.fsx | 13 +- installer/build/scripts/BuildConfig.fsx | 108 ------ installer/build/scripts/Commandline.fsx | 316 +----------------- installer/build/scripts/Products.fsx | 103 +----- installer/build/scripts/Snapshots.fsx | 65 ---- installer/build/scripts/Targets.fsx | 96 +----- installer/build/scripts/config.yaml | 190 ----------- installer/build/scripts/scripts.fsproj | 3 - installer/src/Installer/Installer.csproj | 38 +-- installer/src/Installer/Program.cs | 29 +- installer/src/Installer/packages.config | 5 - installer/src/Installer/wix/Installer.g.wxs | 79 ----- .../src/Installer/wix/ODBCInstaller.g.wxs | 102 ------ 13 files changed, 55 insertions(+), 1092 deletions(-) delete mode 100644 installer/build/scripts/BuildConfig.fsx delete mode 100644 installer/build/scripts/Snapshots.fsx delete mode 100644 installer/build/scripts/config.yaml delete mode 100644 installer/src/Installer/packages.config delete mode 100644 installer/src/Installer/wix/Installer.g.wxs delete mode 100644 installer/src/Installer/wix/ODBCInstaller.g.wxs diff --git a/installer/build/scripts/Build.fsx b/installer/build/scripts/Build.fsx index 633ca2ab..13347655 100644 --- a/installer/build/scripts/Build.fsx +++ b/installer/build/scripts/Build.fsx @@ -2,7 +2,6 @@ #r "FakeLib.dll" #load "Products.fsx" -#load "BuildConfig.fsx" open System open System.Diagnostics @@ -86,6 +85,7 @@ module Builder = // ] let BuildMsi (product : ProductVersions) = + if (product.Versions |> List.exists (fun v -> v.Source = Compile)) then !! (MsiDir @@ "*.csproj") |> MSBuildRelease MsiBuildDir "Build" @@ -99,16 +99,13 @@ module Builder = match version.Source with | Compile -> let exitCode = ExecProcess (fun info -> - info.FileName <- sprintf "%sElastic.Installer.Msi" MsiBuildDir + info.FileName <- sprintf "%sOdbcInstaller" MsiBuildDir info.WorkingDirectory <- MsiDir info.Arguments <- [product.Name; version.FullVersion; Path.GetFullPath(InDir)] |> String.concat " " ) <| TimeSpan.FromMinutes 20. if exitCode <> 0 then failwithf "Error building MSI for %s" product.Name - let finalMsi = outMsiPath product version - CopyFile finalMsi (MsiDir @@ (sprintf "%s.msi" product.Name)) - Sign finalMsi product - | _ -> - if not <| fileExists (product.DownloadPath version) then failwithf "No file found at %s" (product.DownloadPath version) - CopyFile (outMsiPath product version) (product.DownloadPath version) + // let finalMsi = outMsiPath product version + // CopyFile finalMsi (MsiDir @@ (sprintf "%s.msi" product.Name)) + // Sign finalMsi product ) \ No newline at end of file diff --git a/installer/build/scripts/BuildConfig.fsx b/installer/build/scripts/BuildConfig.fsx deleted file mode 100644 index c6cea743..00000000 --- a/installer/build/scripts/BuildConfig.fsx +++ /dev/null @@ -1,108 +0,0 @@ -#I "../../packages/build/FAKE.x64/tools" -#I "../../packages/build/Fsharp.Data/lib/net45" -#I "../../packages/build/Fsharp.Configuration/lib/net45" -#I "../../packages/semver/lib/net452" - -#r "FakeLib.dll" -#r "Fsharp.Data.dll" -#r "System.Xml.Linq.dll" -#r "FSharp.Configuration.dll" -#r "Semver.dll" - -#load "Products.fsx" - -namespace Scripts - -module BuildConfig = - open System - open System.Collections.Generic - open Fake - open FSharp.Configuration - open Fake.StringHelper - open Products.Products - open Semver - - type TypedConfig = YamlConfig<"config.yaml"> - let private sourceYaml = __SOURCE_DIRECTORY__ "config.yaml" - - //ugly :) - let private writeProductGuids = fun(config: TypedConfig) -> - let file = __SOURCE_DIRECTORY__ "../../src/Installer/Elastic.Installer.Domain" "ProductGuids.cs" - WriteStringToFile false file """using System; -using System.Collections.Generic; - -//THIS IS GENERATED BY OUR BUILD SCRIPT -namespace Elastic.Installer.Domain -{ - public static class ProductGuids - { -""" - WriteStringToFile true file (sprintf " public static Guid ElasticsearchUpgradeCode => new Guid(\"%A\");\r\n" config.elasticsearch.upgrade_code) - WriteStringToFile true file (sprintf " public static Guid KibanaUpgradeCode => new Guid(\"%A\");" config.kibana.upgrade_code) - WriteStringToFile true file """ - public static Dictionary ElasticsearchProductCodes => new Dictionary - { -""" - let dictValues = config.elasticsearch.known_versions |> Seq.map (fun v -> sprintf " { \"%s\", new Guid(\"%A\") }" v.version v.guid) - let guids = dictValues |> String.concat ",\r\n" - WriteStringToFile true file guids - WriteStringToFile true file """ - }; -""" - - WriteStringToFile true file """ - public static Dictionary KibanaProductCodes => new Dictionary - { -""" - let dictValues = config.kibana.known_versions |> Seq.map (fun v -> sprintf " { \"%s\", new Guid(\"%A\") }" v.version v.guid) - let guids = dictValues |> String.concat ",\r\n" - WriteStringToFile true file guids - WriteStringToFile true file """ - }; -""" - WriteStringToFile true file """ - } -} -""" - - let versionGuid (productVersions: ProductVersions list) = - let config = TypedConfig() - config.Load sourceYaml - tracefn "found %i elasticsearch known versions" config.elasticsearch.known_versions.Count - tracefn "found %i kibana known versions" config.kibana.known_versions.Count - - productVersions - |> List.iter(fun p -> - p.Versions - |> List.iter(fun v -> - let version = v.FullVersion - match p.Product with - | Elasticsearch -> - match config.elasticsearch.known_versions |> Seq.tryFind (fun v -> v.version = version) with - | Some _ -> () - | None -> - let newGuid = Guid.NewGuid() - let newVersion = TypedConfig.elasticsearch_Type.known_versions_Item_Type(version=version, guid=newGuid) - config.elasticsearch.known_versions.Add newVersion - | Kibana -> - match config.kibana.known_versions |> Seq.tryFind (fun v -> v.version = version) with - | Some _ -> () - | None -> - let newGuid = Guid.NewGuid() - let newVersion = TypedConfig.kibana_Type.known_versions_Item_Type(version=version, guid=newGuid) - config.kibana.known_versions.Add newVersion - ) - ) - - let elasticsearchVersions = config.elasticsearch.known_versions - |> Seq.sortBy(fun v -> SemVersion.Parse v.version) - - config.elasticsearch.known_versions <- new List(elasticsearchVersions) - - let kibanaVersions = config.kibana.known_versions - |> Seq.sortBy(fun v -> SemVersion.Parse v.version) - - config.kibana.known_versions <- new List(kibanaVersions) - - config.Save sourceYaml - // writeProductGuids config diff --git a/installer/build/scripts/Commandline.fsx b/installer/build/scripts/Commandline.fsx index 6c3cb9fc..7880e473 100644 --- a/installer/build/scripts/Commandline.fsx +++ b/installer/build/scripts/Commandline.fsx @@ -6,137 +6,48 @@ #r "Fsharp.Data.dll" #r "Fsharp.Text.RegexProvider.dll" #r "System.Xml.Linq.dll" + #load "Products.fsx" -#load "Snapshots.fsx" open System -open System.Collections.Generic open System.IO open System.Text.RegularExpressions open System.Net open Fake -open FSharp.Data open FSharp.Text.RegexProvider open Products.Products open Products.Paths -open Snapshots ServicePointManager.SecurityProtocol <- SecurityProtocolType.Ssl3 ||| SecurityProtocolType.Tls ||| SecurityProtocolType.Tls11 ||| SecurityProtocolType.Tls12; ServicePointManager.ServerCertificateValidationCallback <- (fun _ _ _ _ -> true) module Commandline = - open Fake.DotNet.NuGet.NuGet let usage = """ USAGE: -build.bat [Target] [Products] [Versions] [Target specific params] [skiptests] +build.bat [Target] [Target specific params] [skiptests] Target: ------- -* buildinstallers - - default target if none provided. Builds installers for products +* buildinstaller + - default target if none provided. Builds ODBC installer * clean - cleans build output folders -* unittest - - build and unit test - -* downloaddriverfiles - - downloads the products if not already downloaded, and unzips them - if not already unzipped - -* release [Products] [Versions] [CertFile] [PasswordFile] - - create a release versions of each MSI by building and then signing the service executable and installer for each. +* release [CertFile] [PasswordFile] + - create a release version of the MSI by building and then signing the installer. - when CertFile and PasswordFile are specified, these will be used for signing otherwise the values in ELASTIC_CERT_FILE and ELASTIC_CERT_PASSWORD environment variables will be used - Example: build.bat release es 5.5.3 C:/path_to_cert_file C:/path_to_password_file - -* integrate [Products] [Versions] [VagrantProvider] [TestTargets] [switches] [skiptests] - - - run integration tests. Can filter tests by wildcard [TestTargets], - which match against the directory names of tests - - Example: build.bat integrate es 5.5.1,5.5.2 local * skiptests + Example: build.bat release C:/path_to_cert_file C:/path_to_password_file * help or ? - show this usage summary -Products: ---------- - -optional comma separated collection of products to build. can use - -* a -* all - - build all products -* e -* es -* elasticsearch - - build elasticsearch -* k -* kibana - - build kibana - -Versions: ---------- - -optional version(s) to build. Multiple versions can be specified, separated by commas. - -When specified, for build targets other than release, the product version zip files will -be downloaded and extracted to build/in directory if they don't already exist. - -A release version can be downloaded for integration tests by prefixing the version with r: e.g. r:5.5.2 -A build candidate version can be downloaded for integration tests by prefixing the version with [buildhash]: e.g. e824d65e:5.6.0 - -when not specified - - for build targets other than release, the latest non-prelease version of each product will be downloaded - - for release, the build/in directory will be checked and a single version found there will be used - -TestTargets: ------------- - -Wildcard pattern for integration tests to target within test directories -in /src/Tests/Elastic.Installer.Integration.Tests/Tests. - -When not specified, defaults to * - -VagrantProvider: ----------------- - -The provider that vagrant should use to bring up vagrant boxes - - local: use Virtualbox on the local machine - - azure: use Azure provider to provision a machine on Azure for each integration test scenario - - quick-azure: use Azure provider to provision a single machine on Azure on which to run all integration tests sequentially - -skiptests: ----------- - -Whether to skip unit tests. - -switches: ---------- - -Integration tests against a local vagrant provider support several switches - * --snapshots: use snapshot builds instead of staging builds - * -gui: launch vagrant with a GUI - * -nodestroy: do not destroy the vagrant box after the test has run - * -plugins:: a list of plugin zips that exist within - the build/in directory, that should be installed - within integration tests instead of downloading. The plugin - zip names must match the installer version. - """ - - [] - let private feedUrl = "https://www.elastic.co/downloads/past-releases/feed" - [] - let private feedExample = "feed-example.xml" - - type DownloadFeed = XmlProvider< feedExample > - type VersionRegex = Regex< @"^(?:\s*(?.*?)\s*)?((?\w*)\:)?(?(?\d+)\.(?\d+)\.(?\d+)(?:\-(?[\w\-]+))?)", noMethodPrefix=true > let private parseSource = function @@ -163,46 +74,7 @@ Integration tests against a local vagrant provider support several switches Source = source; RawValue = rawValue; } - let private args = getBuildParamOrDefault "cmdline" "buildinstallers" |> split ' ' - let private skipTests = args |> List.exists (fun x -> x = "skiptests") - let private snapshots = args |> List.exists (fun x -> x = "--snapshots") - let private gui = args |> List.exists (fun x -> x = "-gui") - let private noDestroy = args |> List.exists (fun x -> x = "-nodestroy") - let private plugins = args |> List.exists (startsWith "-plugins:") - let private filteredArgs = args |> List.filter (fun x -> match x with - | "skiptests" - | "-gui" - | "--snapshots" - | "-nodestroy" -> false - | y when startsWith "-plugins:" y -> false - | _ -> true) - - let private lastSnapshotVersion (product : Product) = - let latestVersion = Snapshots.GetVersions() - |> Seq.map (fun x -> Snapshots.GetSnapshotBuilds x) - |> Seq.head - |> Seq.head - let version = parseVersion latestVersion - tracefn "Extracted %s version %s from '%s'" product.Name version.FullVersion latestVersion - [version] - - let private lastFeedVersion (product : Product) = - let itemIsProduct itemText = - let m = parseVersion itemText - m.Product = product.Title && (isNullOrWhiteSpace m.Prerelease) - tracefn "Loading download feed data from %s" feedUrl - let feed = DownloadFeed.Load feedUrl - let firstLink = feed.Channel.Items |> Seq.find (fun item -> itemIsProduct item.Title) - let version = parseVersion firstLink.Title - tracefn "Extracted %s version %s from '%s'" product.Name version.FullVersion firstLink.Title - [version] - - let private lastVersion (product : Product ) = - tracefn "Use snapshots: %b" snapshots - if snapshots then - lastSnapshotVersion product - else - lastFeedVersion product + let private args = getBuildParamOrDefault "cmdline" "buildinstaller" |> split ' ' let private versionFromInDir (product : Product) = let extractVersion (fileInfo:FileInfo) = @@ -212,9 +84,6 @@ Integration tests against a local vagrant provider support several switches |> directoryInfo |> filesInDirMatching ("es*" + product.Name + "*.zip") - tracefn "%A" (Seq.head zips) - - match zips.Length with | 0 -> failwithf "No %s zip file found in %s" product.Name InDir | 1 -> @@ -225,80 +94,29 @@ Integration tests against a local vagrant provider support several switches let private (|IsTarget|_|) (candidate: string) = match candidate.ToLowerInvariant() with - | "buildinstallers" - | "test" + | "buildinstaller" | "clean" - | "downloaddriverfiles" - | "unittest" - | "release" - | "integrate" -> Some candidate + | "release" -> Some candidate | _ -> None let target = - match (filteredArgs |> List.tryHead) with + match (args |> List.tryHead) with | Some t -> match (t.ToLowerInvariant()) with | IsTarget t -> t | "help" | "?" -> "help" - | _ -> "buildinstallers" - | _ -> "buildinstallers" + | _ -> "buildinstaller" + | _ -> "buildinstaller" let arguments = - match filteredArgs with + match args with | IsTarget head :: tail -> head :: tail | [] -> [target] - | _ -> target :: filteredArgs - - let private (|IsVersionList|_|) candidate = - let versionStrings = splitStr "," candidate - let versions = new List() - - versionStrings - |> List.iter(fun v -> - let m = VersionRegex().Match v - match m.Success with - | true -> versions.Add({ Product = m.Product.Value; - FullVersion = m.Version.Value; - Major = m.Major.Value |> int; - Minor = m.Minor.Value |> int; - Patch = m.Patch.Value |> int; - Prerelease = m.Prerelease.Value; - Source = parseSource m.Source.Value; - RawValue = v; }) - | _ -> () - ) - match versions with - | v when v.Count = versionStrings.Length -> Some (List.ofSeq v) - | _ -> None - - let private (|IsProductList|_|) candidate = - let products = splitStr "," candidate - let productFromValue value = - match value with - | "all" - | "a" -> All - | "odbc" - | "o" -> [Odbc] - | _ -> [] - - if products.Length <> 0 then - products - |> List.map productFromValue - |> List.concat - |> List.distinct - |> Some - else None - - let private (|IsVagrantProvider|_|) candidate = - match candidate with - | "local" - | "azure" - | "quick-azure" -> Some candidate - | _ -> None + | _ -> target :: args let private certAndPasswordFromEnvVariables () = - trace "getting signing cert and password from environment variables" + trace "Getting signing cert and password from environment variables" //[("ELASTIC_CERT_FILE", "certificate");("ELASTIC_CERT_PASSWORD", "password")] //|> List.iter(fun (v, b) -> // let ev = Environment.GetEnvironmentVariable(v, EnvironmentVariableTarget.Machine) @@ -307,7 +125,7 @@ Integration tests against a local vagrant provider support several switches // ) let private certAndPasswordFromFile certFile passwordFile = - trace "getting signing cert and password from file arguments" + trace "Getting signing cert and password from file arguments" //match (fileExists certFile, fileExists passwordFile) with //| (true, true) -> // setBuildParam "certificate" certFile @@ -322,113 +140,13 @@ Integration tests against a local vagrant provider support several switches setBuildParam "release" "1" certAndPasswordFromEnvVariables () All |> List.map (ProductVersions.CreateFromProduct versionFromInDir) - | ["release"; IsProductList products ] -> - setBuildParam "release" "1" - certAndPasswordFromEnvVariables () - products |> List.map (ProductVersions.CreateFromProduct versionFromInDir) - | ["release"; IsVersionList versions ] -> - setBuildParam "release" "1" - certAndPasswordFromEnvVariables () - All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["release"; IsProductList products; IsVersionList versions ] -> - setBuildParam "release" "1" - certAndPasswordFromEnvVariables () - products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["release"; IsProductList products; IsVersionList versions; certFile; passwordFile ] -> - setBuildParam "release" "1" - certAndPasswordFromFile certFile passwordFile - products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["release"; IsVersionList versions; certFile; passwordFile ] -> - setBuildParam "release" "1" - certAndPasswordFromFile certFile passwordFile - All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["release"; IsProductList products; certFile; passwordFile ] -> - setBuildParam "release" "1" - certAndPasswordFromFile certFile passwordFile - products |> List.map (ProductVersions.CreateFromProduct versionFromInDir) | ["release"; certFile; passwordFile ] -> setBuildParam "release" "1" certAndPasswordFromFile certFile passwordFile All |> List.map (ProductVersions.CreateFromProduct versionFromInDir) - - | ["integrate"; IsProductList products; IsVersionList versions; IsVagrantProvider provider; testTargets] -> - setBuildParam "testtargets" testTargets - setBuildParam "vagrantprovider" provider - products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["integrate"; IsProductList products; IsVersionList versions; testTargets] -> - setBuildParam "testtargets" testTargets - products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - - | ["integrate"; IsProductList products; IsVersionList versions; IsVagrantProvider provider] -> - setBuildParam "vagrantprovider" provider - products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["integrate"; IsProductList products; IsVersionList versions] -> - products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - - | ["integrate"; IsVersionList versions; IsVagrantProvider provider; testTargets] -> - setBuildParam "testtargets" testTargets - setBuildParam "vagrantprovider" provider - All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["integrate"; IsVersionList versions; testTargets] -> - setBuildParam "testtargets" testTargets - All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - - | ["integrate"; IsProductList products; IsVagrantProvider provider; testTargets] -> - setBuildParam "testtargets" testTargets - setBuildParam "vagrantprovider" provider - products |> List.map (ProductVersions.CreateFromProduct lastVersion) - | ["integrate"; IsProductList products; testTargets] -> - setBuildParam "testtargets" testTargets - products |> List.map (ProductVersions.CreateFromProduct lastVersion) - | ["integrate"; IsProductList products; IsVagrantProvider provider] -> - setBuildParam "vagrantprovider" provider - products |> List.map (ProductVersions.CreateFromProduct lastVersion) - | ["integrate"; IsProductList products] -> - products |> List.map (ProductVersions.CreateFromProduct lastVersion) - | ["integrate"; IsVersionList versions; IsVagrantProvider provider] -> - setBuildParam "vagrantprovider" provider - All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["integrate"; IsVersionList versions] -> - All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | ["integrate"; IsVagrantProvider provider; testTargets] -> - setBuildParam "testtargets" testTargets - setBuildParam "vagrantprovider" provider - All |> List.map (ProductVersions.CreateFromProduct lastVersion) - | ["integrate"; IsVagrantProvider provider] -> - setBuildParam "vagrantprovider" provider - All |> List.map (ProductVersions.CreateFromProduct lastVersion) - | ["integrate"; testTargets] -> - setBuildParam "testtargets" testTargets - All |> List.map (ProductVersions.CreateFromProduct lastVersion) - | [IsProductList products; IsVersionList versions] -> - products |> List.map(ProductVersions.CreateFromProduct <| fun _ -> versions) - | [IsProductList products] -> - products |> List.map(ProductVersions.CreateFromProduct lastVersion) - | [IsVersionList versions] -> - All |> List.map(ProductVersions.CreateFromProduct <| fun _ -> versions) - | [IsTarget target; IsVersionList versions] -> - All |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | [IsTarget target; IsProductList products] -> - products |> List.map (ProductVersions.CreateFromProduct lastVersion) - | [IsTarget target; IsProductList products; IsVersionList versions] -> - products |> List.map (ProductVersions.CreateFromProduct <| fun _ -> versions) - | [IsTarget target] -> - All |> List.map (ProductVersions.CreateFromProduct lastVersion) - | [] -> - All |> List.map (ProductVersions.CreateFromProduct lastVersion) | _ -> traceError usage exit 2 setBuildParam "target" target - if skipTests then setBuildParam "skiptests" "1" - if gui then setBuildParam "gui" "$true" - if snapshots then setBuildParam "snapshots" "$true" - if noDestroy then setBuildParam "no-destroy" "$false" - if plugins then - let pluginPaths = args - |> List.find (startsWith "-plugins:") - |> split ':' - |> List.last - setBuildParam "plugins" pluginPaths products diff --git a/installer/build/scripts/Products.fsx b/installer/build/scripts/Products.fsx index e12f64b7..d7b096fa 100644 --- a/installer/build/scripts/Products.fsx +++ b/installer/build/scripts/Products.fsx @@ -1,14 +1,10 @@ #I "../../packages/build/FAKE.x64/tools" #r "FakeLib.dll" -#load "Snapshots.fsx" -open System open System.Globalization open System.IO open Fake -open Fake.FileHelper -open Snapshots module Paths = let BuildDir = "./build/" @@ -21,17 +17,6 @@ module Paths = let MsiDir = SrcDir @@ "Installer/" let MsiBuildDir = MsiDir @@ "bin/Release/" - let IntegrationTestsDir = FullName "./src/Tests/Odbc.Installer.Integration.Tests" - let UnitTestsDir = "src/Tests/Odbc.Tests" - - let ArtifactDownloadsUrl = "https://artifacts.elastic.co/downloads" - - let StagingDownloadsUrl product hash fullVersion = - sprintf "https://staging.elastic.co/%s-%s/downloads/%s/%s-%s.msi" fullVersion hash product product fullVersion - - let SnapshotDownloadsUrl product versionNumber hash fullVersion = - sprintf "https://snapshots.elastic.co/%s-%s/downloads/%s/%s-%s.msi" versionNumber hash product product fullVersion - module Products = open Paths @@ -81,32 +66,12 @@ module Products = RawValue: string; } - let lastSnapshotVersionAsset (product:Product, version:Version) = - let latestAsset = Snapshots.GetVersionsFiltered version.Major version.Minor version.Patch version.Prerelease - |> Seq.map (fun x -> (x, (Snapshots.GetSnapshotBuilds x) |> Seq.head)) - |> Seq.map (fun xy -> Snapshots.GetSnapshotBuildAssets product.Name (fst xy) (snd xy)) - |> Seq.head - latestAsset - type ProductVersions (product:Product, versions:Version list) = member this.Product = product member this.Versions = versions member this.Name = product.Name member this.Title = product.Title - member private this.DownloadUrl (version:Version) = - match version.Source with - | Compile -> - match product with - | Odbc -> - sprintf "%s/kibana/kibana-%s-windows-x86.zip" ArtifactDownloadsUrl version.FullVersion - | Released -> - sprintf "%s/%s/%s-%s.msi" ArtifactDownloadsUrl this.Name this.Name version.FullVersion - | BuildCandidate hash -> - if (version.FullVersion.EndsWith("snapshot", StringComparison.OrdinalIgnoreCase)) then - SnapshotDownloadsUrl this.Name (sprintf "%i.%i.%i" version.Major version.Minor version.Patch) hash version.FullVersion - else StagingDownloadsUrl this.Name hash version.FullVersion - member private this.ZipFile (version:Version) = let fullPathInDir = InDir |> Path.GetFullPath Path.Combine(fullPathInDir, sprintf "%s-%s.zip" this.Name version.FullVersion) @@ -120,71 +85,5 @@ module Products = |> List.filter (fun v -> v.Source = Compile) |> List.map(fun v -> InDir @@ sprintf "%s-%s/bin/" this.Name v.FullVersion) - member this.DownloadPath (version:Version) = - let fullPathInDir = InDir |> Path.GetFullPath - let releaseFile version dir = - let downloadUrl = this.DownloadUrl version - Path.Combine(fullPathInDir, dir, Path.GetFileName downloadUrl) - match version.Source with - | Compile -> this.ZipFile version - | Released -> releaseFile version "releases" - | BuildCandidate hash -> releaseFile version hash - - member this.Download () = - this.Versions - |> List.iter (fun version -> - let useSnapshots = getBuildParamOrDefault "snapshots" "$false" - let zipFile = this.DownloadPath version - let extractedDirectory = this.ExtractedDirectory version - - if (useSnapshots = "$true") then - if (File.Exists(zipFile)) then - tracefn "Deleting snapshot zip file: %s" zipFile - File.Delete(zipFile) - if (Directory.Exists(extractedDirectory)) then - tracefn "Deleting snapshot existing directory: %s" extractedDirectory - Directory.Delete(extractedDirectory, true) - - match (this.DownloadUrl version, zipFile) with - | (_, file) when fileExists file -> - tracefn "Already downloaded %s to %s" this.Name file - | (url, file) -> - tracefn "Downloading %s from %s" this.Name url - let targetDirectory = file |> Path.GetDirectoryName - if (directoryExists targetDirectory |> not) then CreateDir targetDirectory - use webClient = new System.Net.WebClient() - (url, file) |> webClient.DownloadFile - tracefn "Done downloading %s from %s to %s" this.Name url file - - match version.Source with - | Compile -> - if directoryExists extractedDirectory |> not - then - tracefn "Unzipping %s %s" this.Name zipFile - Unzip InDir zipFile - match this.Product with - | Kibana -> - let original = sprintf "kibana-%s-windows-x86" version.FullVersion - if directoryExists original |> not then - Rename (InDir @@ (sprintf "kibana-%s" version.FullVersion)) (InDir @@ original) - | _ -> () - - // Snapshots need renaming as folder inside zip is named differently - // An example: The hosted zip filename is: - // https://snapshots.elastic.co/7.0.0-alpha1-ea57ee52/downloads/elasticsearch/elasticsearch-7.0.0-alpha1-SNAPSHOT.zip - // This is downloaded locally into the in dir as: elasticsearch-7.0.0-alpha1-ea57ee52.zip - // When extracted it creates a folder called: elasticsearch-7.0.0-alpha1-snapshot - // This is then renamed to elasticsearch-7.0.0-alpha1-ea57ee52 - if (useSnapshots = "$true") then - let existing = InDir @@ (sprintf "%s-%s" product.Name (Snapshots.GetVersionsFiltered version.Major version.Minor version.Patch version.Prerelease |> Seq.head)) - let target = InDir @@ (sprintf "%s-%s" product.Name version.FullVersion) - Rename target existing - - else tracefn "Extracted directory %s already exists" extractedDirectory - | _ -> () - ) - static member CreateFromProduct (productToVersion:Product -> Version list) (product: Product) = - ProductVersions(product, productToVersion product) - - + ProductVersions(product, productToVersion product) \ No newline at end of file diff --git a/installer/build/scripts/Snapshots.fsx b/installer/build/scripts/Snapshots.fsx deleted file mode 100644 index 9c170e07..00000000 --- a/installer/build/scripts/Snapshots.fsx +++ /dev/null @@ -1,65 +0,0 @@ -#I "../../packages/build/FAKE.x64/tools" -#I @"../../packages/build/Fsharp.Data/lib/net45" -#I @"../../packages/build/FSharp.Text.RegexProvider/lib/net40" - -#r @"FakeLib.dll" -#r "Fsharp.Data.dll" -#r "Fsharp.Text.RegexProvider.dll" -#r "System.Xml.Linq.dll" - -open System -open System.Net -open FSharp.Data -open Fake - -ServicePointManager.SecurityProtocol <- SecurityProtocolType.Ssl3 ||| SecurityProtocolType.Tls ||| SecurityProtocolType.Tls11 ||| SecurityProtocolType.Tls12; -ServicePointManager.ServerCertificateValidationCallback <- (fun _ _ _ _ -> true) - -module Snapshots = - - let private urlBase = "https://artifacts-api.elastic.co/v1/versions" - - let GetVersions() = - use webClient = new System.Net.WebClient() - let versions = webClient.DownloadString urlBase |> JsonValue.Parse - let arrayValue = versions.GetProperty "versions" - arrayValue.AsArray() - |> Seq.rev - |> Seq.map (fun x -> x.AsString()) - - let getPrerelease (prerelease:string) = - (splitStr "-" prerelease) |> Seq.head - - let getSnapshotName major minor patch prerelease = - if isNullOrWhiteSpace (prerelease) then - sprintf "%d.%d.%d-SNAPSHOT" major minor patch - else - let prerelease = getPrerelease prerelease - sprintf "%d.%d.%d-%s-SNAPSHOT" major minor patch prerelease - - let GetVersionsFiltered major minor patch prerelease = - use webClient = new System.Net.WebClient() - let versions = webClient.DownloadString urlBase |> JsonValue.Parse - let arrayValue = versions.GetProperty "versions" - arrayValue.AsArray() - |> Seq.rev - |> Seq.map (fun x -> x.AsString()) - |> Seq.filter (fun x -> x = getSnapshotName major minor patch prerelease) - - let GetSnapshotBuilds version = ( - use webClient = new System.Net.WebClient() - let url = sprintf "%s/%s/builds" urlBase version - let versions = webClient.DownloadString url |> JsonValue.Parse - let arrayValue = versions.GetProperty "builds" - arrayValue.AsArray() - |> Seq.map (fun x -> x.AsString()) - ) - - let GetSnapshotBuildAssets product version build = ( - use webClient = new System.Net.WebClient() - let url = sprintf "%s/%s/builds/%s" urlBase version build - let versions = webClient.DownloadString url |> JsonValue.Parse - let assets = ((((versions.GetProperty "build").GetProperty "projects").GetProperty product).GetProperty "packages") - let asset = sprintf "%s-%s.zip" product version - ((assets.GetProperty asset).GetProperty "url").InnerText() - ) \ No newline at end of file diff --git a/installer/build/scripts/Targets.fsx b/installer/build/scripts/Targets.fsx index 683b367c..e6695bf5 100644 --- a/installer/build/scripts/Targets.fsx +++ b/installer/build/scripts/Targets.fsx @@ -5,7 +5,6 @@ #r "System.Management.Automation.dll" #load "Products.fsx" #load "Build.fsx" -#load "BuildConfig.fsx" #load "Commandline.fsx" open System @@ -37,25 +36,7 @@ Target "Clean" (fun _ -> |> List.iter(fun p -> CleanDirs [OutDir @@ p.Name;]) ) -Target "DownloadDriverFiles" (fun () -> - productsToBuild - |> List.iter (fun p -> p.Download()) -) - -Target "UnitTest" (fun () -> - //let unitTestBuildDir = UnitTestsDir @@ "bin" @@ "Release" - - //!! (UnitTestsDir @@ "*.csproj") - //|> MSBuildRelease unitTestBuildDir "Build" - //|> Log "MsiBuild-Output: " - - //!! (unitTestBuildDir @@ "*Tests.dll") - //|> xUnit2 (fun p -> { p with HtmlOutputPath = Some (ResultsDir @@ "xunit.html") }) - - tracefn "Skipping tests" -) - -Target "BuildInstallers" (fun () -> +Target "BuildInstaller" (fun () -> productsToBuild |> List.iter (fun p -> BuildMsi p) ) @@ -63,81 +44,10 @@ Target "Release" (fun () -> trace "Build in Release mode. Services and MSIs will be signed." ) -Target "Integrate" (fun () -> - // TODO: Get the version for each different project - let versions = productsToBuild.Head.Versions - |> List.map(fun v -> v.RawValue) - - // last version in the list is the _target_ version - let version = versions |> List.last - let integrationTestsTargets = getBuildParamOrDefault "testtargets" "*" - let vagrantProvider = getBuildParamOrDefault "vagrantprovider" "local" - let gui = getBuildParamOrDefault "gui" "$false" - let noDestroy = getBuildParamOrDefault "no-destroy" "$true" - let plugins = getBuildParamOrDefault "plugins" "" - - // copy any plugins specified to build/out - if isNotNullOrEmpty plugins then - let pluginNames = plugins.Split([|',';';'|], StringSplitOptions.RemoveEmptyEntries) - versions - |> List.map(fun v -> Commandline.parseVersion v) - |> List.collect(fun s -> - pluginNames - |> Array.map(fun p -> Paths.InDir (sprintf "%s-%s.zip" p s.FullVersion)) - |> Array.toList - ) - |> List.iter(fun p -> - match fileExists p with - | true -> CopyFile Paths.OutDir p - | false -> traceFAKE "%s does not exist. Will install from public url" p - ) - - let previousVersions = - match versions.Length with - | 1 -> "@()" - | _ -> versions.[0..versions.Length - 2] - |> List.map(fun v -> sprintf "'%s'" v) - |> String.concat "," - |> sprintf "@(%s)" - - let script = sprintf @"cd '%s'; .\Bootstrapper.ps1 -Tests '%s' -Version '%s' -PreviousVersions %s -VagrantProvider '%s' -Gui:%s -VagrantDestroy:%s" - IntegrationTestsDir - integrationTestsTargets - version - previousVersions - vagrantProvider - gui - noDestroy - - trace (sprintf "Running Powershell script: '%s'" script) - use p = PowerShell.Create() - use output = new PSDataCollection() - output.DataAdded.Add(fun data -> trace (sprintf "%O" output.[data.Index])) - p.Streams.Verbose.DataAdded.Add(fun data -> trace (sprintf "%O" p.Streams.Verbose.[data.Index])) - p.Streams.Debug.DataAdded.Add(fun data -> trace (sprintf "%O" p.Streams.Debug.[data.Index])) - p.Streams.Progress.DataAdded.Add(fun data -> trace (sprintf "%O" p.Streams.Progress.[data.Index])) - p.Streams.Warning.DataAdded.Add(fun data -> traceError (sprintf "%O" p.Streams.Warning.[data.Index])) - p.Streams.Error.DataAdded.Add(fun data -> traceError (sprintf "%O" p.Streams.Error.[data.Index])) - let async = - p.AddScript(script).BeginInvoke(null, output) - |> Async.AwaitIAsyncResult - |> Async.Ignore - Async.RunSynchronously async - - if (p.InvocationStateInfo.State = PSInvocationState.Failed) then - failwith "PowerShell completed abnormally due to an error" -) - - Target "Help" (fun () -> trace Commandline.usage) "Clean" - // ==> "DownloadDriverFiles" - =?> ("UnitTest", (not ((getBuildParam "skiptests") = "1"))) - ==> "BuildInstallers" + ==> "BuildInstaller" ==> "Release" -//"BuildInstallers" -// ==> "Integrate" - -RunTargetOrDefault "BuildInstallers" \ No newline at end of file +RunTargetOrDefault "BuildInstaller" \ No newline at end of file diff --git a/installer/build/scripts/config.yaml b/installer/build/scripts/config.yaml deleted file mode 100644 index 512bb246..00000000 --- a/installer/build/scripts/config.yaml +++ /dev/null @@ -1,190 +0,0 @@ -elasticsearch: - upgrade_code: daaa2cba-a1ed-4f29-afbf-5478617b00f6 - known_versions: - - version: 5.0.0-alpha1 - guid: 53e2a74c-26c1-4dd7-b6fb-4f91af321b28 - - version: 5.0.0-alpha2 - guid: a3be3c9c-00f0-4896-beb1-fea1c57bdd02 - - version: 5.0.0-alpha3 - guid: 6035f515-1dfe-4a79-9ef5-7bb9384551b6 - - version: 5.0.0-alpha4 - guid: e979c387-45df-4bbb-aca5-82aec7b54f0e - - version: 5.0.0-alpha5 - guid: c516704e-13ef-4ab8-9b27-c846d1e499b2 - - version: 5.0.0-beta1 - guid: 498c0857-e6fc-48ec-b210-c70586861e49 - - version: 5.0.0-rc1 - guid: 61847728-349e-4f2a-9965-cf8667d4558c - - version: 5.0.0 - guid: cf632ca6-8588-4e94-9661-99cafcc974ac - - version: 5.0.1 - guid: ab0244de-5a08-4812-97da-0c46c2f87eb9 - - version: 5.0.2 - guid: fbca0778-901d-4d2e-bf01-01001cc48e54 - - version: 5.1.1 - guid: 82292245-25f0-41c1-88ee-0892b733a7e3 - - version: 5.1.2 - guid: 21a99b00-bf06-4440-b35b-0d2e368089ae - - version: 5.2.0 - guid: c7758e8d-5268-4baa-a6ae-58c8071725ec - - version: 5.2.1 - guid: d8092759-699f-4889-9edf-92a96857125d - - version: 5.2.2 - guid: 6de3e5d5-bfe7-4422-bacf-ec2982d87122 - - version: 5.3.0 - guid: c954cde9-6960-49a9-a7b4-a065d498d037 - - version: 5.3.1 - guid: f508ab7b-066b-474f-aa0c-44d43c72d264 - - version: 5.3.2 - guid: 8bc18570-a189-4304-8c85-1f2d7db3d839 - - version: 5.4.0 - guid: 8279eff6-3a85-4b37-ac5a-3c5136bb5465 - - version: 5.4.1 - guid: 127c0984-c0fe-4f6d-acf9-4c15101bd627 - - version: 5.4.2 - guid: 13ad87cd-18f3-481e-a278-545d873f7353 - - version: 5.4.3 - guid: 481906c0-70ca-4a4c-bb66-a6e25ed22b94 - - version: 5.5.0 - guid: 344f09a4-5bf8-4d44-8e86-2130c263b08f - - version: 5.5.1 - guid: 2beb1fc0-042a-49fb-af3d-285a80f3c737 - - version: 5.5.2 - guid: 2105d4cc-ac3e-4cf0-9214-fe4d9857f801 - - version: 5.5.3 - guid: 1f75dce6-5c9e-43c4-ad23-72d94bfec22d - - version: 5.6.0 - guid: 72029505-94e9-4c29-a604-1da02d9d0402 - - version: 5.6.1 - guid: 5e6f4d7a-9220-4432-9e5f-c9a9ab184dea - - version: 5.6.2 - guid: 650ba327-fac0-4276-a8c2-a3b5d458773c - - version: 5.6.3 - guid: 4f50ce6b-f115-46c3-8902-d915250c3370 - - version: 5.6.4 - guid: 1a2e2c53-1753-4b63-98f8-013c3e67e223 - - version: 5.6.5 - guid: a8a40576-e918-4431-b4ee-a690882a35aa - - version: 5.6.6 - guid: 30dc148d-655e-4a0b-91a3-3f4d7b134a53 - - version: 5.6.7 - guid: 05abedf2-1809-447f-9247-7736e8687fe9 - - version: 5.6.8 - guid: e2bb9379-a5bd-4710-a4fd-cbf28b94944a - - version: 5.6.9 - guid: a3ad5bbc-30ee-4b91-ab1e-c75ca5f7f599 - - version: 5.6.10 - guid: 4ed6485c-1b3e-4bc9-8462-4da714630511 - - version: 5.6.11 - guid: 6aa47f6c-e8f1-4ae7-9df0-b07a90b2447f - - version: 6.0.0-beta1 - guid: f234f31d-f25c-4e64-8d3e-868f7b7ece97 - - version: 6.0.0-beta2 - guid: 50f217e3-97b7-47ba-95f7-685f7db0c8aa - - version: 6.0.0-rc1 - guid: 23c31d4d-6990-4c2e-92c5-4dd3348d3e07 - - version: 6.0.0-rc2 - guid: 576ef794-b3e3-4640-b717-1ed7d820d06e - - version: 6.0.0 - guid: e962ab93-6e24-4128-bacb-93422cdcd50d - - version: 6.0.1 - guid: 0cf2db3b-dab9-4721-a5bb-e3b343ee02e1 - - version: 6.0.2 - guid: 4379e718-4661-471b-9125-d83e2396f580 - - version: 6.1.0 - guid: 7280a702-8532-4341-ac9e-38b221d14c1c - - version: 6.1.1 - guid: 0b5c8e9d-a23a-428e-a1bc-26924fced6b9 - - version: 6.1.2 - guid: e861bc6e-5eee-46e1-9bb5-73d70e3c1be8 - - version: 6.1.3 - guid: c850d041-38e2-4066-88bf-9386775802da - - version: 6.1.4 - guid: 1de011b5-03ed-4da6-8fc0-d3a68a458d8b - - version: 6.2.0 - guid: bc4c5bb2-89a4-4958-a652-e0ff25b2df69 - - version: 6.2.1 - guid: bbb6bd0e-b892-4493-aab2-cac9c1ac73ae - - version: 6.2.2 - guid: cb8b1af5-e480-4e68-8222-375a997fb64e - - version: 6.2.3 - guid: d1f2b623-fc8d-455d-9026-5234d3a0a8f8 - - version: 6.2.4 - guid: 8ea010c4-6ee9-4565-88be-733b630626a1 - - version: 6.3.0 - guid: 183c1455-1bdf-4e9c-a07b-bfba13447735 - - version: 6.3.1 - guid: 1c17c35c-b09f-4c5d-a271-0ba0f03d591f - - version: 6.3.2 - guid: d0fc7098-4a42-479a-82de-e7f3966d11da - - version: 6.4.0 - guid: 3c08c055-faa4-4ab3-8adf-cef89a95fd5d - - version: 6.4.1 - guid: 57c3993a-ecd0-4f3f-bd52-51541591c78e - - version: 6.4.2 - guid: 8def2aae-cbe7-4db6-87d9-f95d5334dbf1 - - version: 6.5.0 - guid: bb1e8abb-36ba-4c27-9c7d-813a1d79bfd3 - - version: 6.5.1 - guid: 2a3b25d6-d38b-4b34-b861-e5983f9a4f1b - - version: 6.5.2 - guid: ab616add-f96b-4be9-af81-22ddb889e556 - - version: 6.6.0 - guid: 7590b87f-1147-4c0b-b565-7dafc518ae7b - - version: 6.6.1 - guid: d72b04b3-82ab-4819-8281-a56e30048df3 - - version: 6.6.2 - guid: b4053321-48a8-4112-8fcd-047d25c96962 - - version: 6.7.0 - guid: 80e7847d-5153-48b0-a011-d1cae0983fa4 - - version: 6.7.1 - guid: 73e22e50-daff-4a3d-bf31-829fd8c05694 - - version: 6.7.2 - guid: 0b5a3943-37c7-47f3-af9d-16e7c93b5060 - - version: 7.0.0-alpha1 - guid: 303b8268-6caa-4b82-aa3a-2b3e7197a0a3 -kibana: - upgrade_code: 6a2e6f51-5145-4c1a-8d05-2190ae213367 - known_versions: - - version: 5.0.0-rc1 - guid: 23049947-d309-46f1-988b-49f62ed76630 - - version: 5.0.0 - guid: 2136a182-7b96-42f3-b23a-42fead9e9b5d - - version: 5.0.1 - guid: 2c8d840a-f91b-4ecb-b66a-02e01ad649c1 - - version: 5.0.2 - guid: 44c6b2cc-f1e0-4db1-8f25-8f0b3fde5d29 - - version: 5.1.1 - guid: 059d0ca3-6448-4da3-97b6-83662aa754dc - - version: 5.1.2 - guid: ad02e1c6-d675-48d1-8fbc-37270e3c0eab - - version: 5.2.0 - guid: 71281af0-9b66-4126-9172-63c9b45a0ef7 - - version: 5.2.1 - guid: 6ae97b24-ff8a-4689-8257-3fc86b392f7d - - version: 5.2.2 - guid: df74fae8-ad4f-4865-af61-d6ee4943d6b0 - - version: 5.3.0 - guid: e098f523-e2e9-436e-a3d8-6e72270305c4 - - version: 5.3.1 - guid: 704b40e1-85b2-42d9-bff2-ad27838a24cb - - version: 5.3.2 - guid: 00001dc9-417b-48de-93a4-741dbf930b0b - - version: 5.4.0 - guid: b6b05d55-e64e-4ed8-8faf-31518777f54d - - version: 5.4.1 - guid: 7441600b-2d85-4da6-8e49-a52aed0ca11f - - version: 5.5.0 - guid: fe335f86-1cd3-42a5-905d-46af5eb5d267 - - version: 5.5.1 - guid: 44f33065-4532-4aee-9bbb-e681c32845ef - - version: 5.5.2 - guid: fc7519ca-27ee-416e-bb6d-37bfe3218b99 - - version: 5.5.3 - guid: d968c8bd-2388-4103-bd58-4966c2338718 - - version: 5.6.0 - guid: c3409b89-7793-4231-942c-6c998523d08f - - version: 6.0.0-beta1 - guid: b9d8d2c7-9e73-4936-ac76-1626dc25d7b9 - - version: 6.0.0-beta2 - guid: da8a7f2e-077f-493d-8986-b02656489b90 diff --git a/installer/build/scripts/scripts.fsproj b/installer/build/scripts/scripts.fsproj index 469891b4..603d6902 100644 --- a/installer/build/scripts/scripts.fsproj +++ b/installer/build/scripts/scripts.fsproj @@ -43,13 +43,10 @@ - - - 11 diff --git a/installer/src/Installer/Installer.csproj b/installer/src/Installer/Installer.csproj index dc41dd6f..9bf21241 100644 --- a/installer/src/Installer/Installer.csproj +++ b/installer/src/Installer/Installer.csproj @@ -8,13 +8,11 @@ Exe Properties ODBCInstaller - WixSharp Setup + ODBCInstaller v4.5 512 - - - true + AnyCPU @@ -50,45 +48,17 @@ - - - - + - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - ..\..\packages\WixSharp.bin\lib\BootstrapperCore.dll @@ -116,5 +86,5 @@ True - + \ No newline at end of file diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index 21115f36..b6466c74 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -7,11 +7,32 @@ namespace ODBCInstaller { partial class Program { - static void Main() - { - const string PreRelease = "-alpha8"; + static void Main(string[] args) + { + // Remove the platform suffix + const string platformSuffix = "-windows-x86_64"; + var releaseString = args[1]; + if (string.IsNullOrEmpty(releaseString) == false && + releaseString.EndsWith(platformSuffix)) + { + releaseString = releaseString.Replace(platformSuffix, string.Empty); + } + + var preRelease = string.Empty; + // Is this a pre-release? + if (releaseString.Contains("-")) + { + var versionSplit = releaseString.Split('-'); + if (versionSplit.Length > 2) + { + throw new ArgumentException("Unexpected version string: " + args[1]); + } + + preRelease = "-" + versionSplit[1]; + } + var odbcVersion = FileVersionInfo.GetVersionInfo(System.IO.Path.GetFullPath("driver\\esodbc7u.dll")); - var VersionString = $"{odbcVersion.ProductVersion }{PreRelease}"; + var VersionString = $"{odbcVersion.ProductVersion}{preRelease}"; var driverDirectory = "driver\\"; var driverFilename = System.IO.Path.Combine(driverDirectory, "esodbc7u.dll"); diff --git a/installer/src/Installer/packages.config b/installer/src/Installer/packages.config deleted file mode 100644 index 179e9efa..00000000 --- a/installer/src/Installer/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/installer/src/Installer/wix/Installer.g.wxs b/installer/src/Installer/wix/Installer.g.wxs deleted file mode 100644 index 74229d6e..00000000 --- a/installer/src/Installer/wix/Installer.g.wxs +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/installer/src/Installer/wix/ODBCInstaller.g.wxs b/installer/src/Installer/wix/ODBCInstaller.g.wxs deleted file mode 100644 index be7e70a3..00000000 --- a/installer/src/Installer/wix/ODBCInstaller.g.wxs +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 1d4ecd768d7a9fc58c6eb7dd41d3c4cdfbbe5410 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Thu, 18 Oct 2018 13:10:09 +0100 Subject: [PATCH 03/16] First local working build script --- installer/build/scripts/Build.fsx | 70 ++++++++------------- installer/build/scripts/Commandline.fsx | 31 ++++----- installer/build/scripts/Products.fsx | 29 --------- installer/build/scripts/Targets.fsx | 5 +- installer/src/Installer/Program.cs | 50 +++++++++------ installer/src/Installer/WixSharp Setup.exe | Bin 6144 -> 0 bytes 6 files changed, 71 insertions(+), 114 deletions(-) delete mode 100644 installer/src/Installer/WixSharp Setup.exe diff --git a/installer/build/scripts/Build.fsx b/installer/build/scripts/Build.fsx index 13347655..586156ae 100644 --- a/installer/build/scripts/Build.fsx +++ b/installer/build/scripts/Build.fsx @@ -5,23 +5,17 @@ open System open System.Diagnostics -open System.Text open System.IO -open System.Text.RegularExpressions -open Microsoft.FSharp.Reflection open Fake -open Fake.AssemblyInfoFile -open Fake.FileHelper -open Fake.Git -open Fake.Testing.XUnit2 open Products.Products open Products.Paths open Products module Builder = + open Fake.FileHelper let Sign file (product : ProductVersions) = - tracefn "Skipping signing" + tracefn "SKIP: Signing file" //let release = getBuildParam "release" = "1" //if release then // let certificate = getBuildParam "certificate" @@ -65,47 +59,35 @@ module Builder = // let exitCode = sign() // if exitCode <> 0 then failwithf "Signing %s returned error exit code: %i" product.Title exitCode - - //let patchAssemblyInformation (product: ProductVersions) (version:Version) = - // let version = version.FullVersion - // let commitHash = Information.getCurrentHash() - // let file = product.ServiceDir @@ "Properties" @@ "AssemblyInfo.cs" - // CreateCSharpAssemblyInfo file - // [Attribute.Title product.Product.AssemblyTitle - // Attribute.Description product.Product.AssemblyDescription - // Attribute.Guid product.Product.AssemblyGuid - // Attribute.Product product.Product.Title - // Attribute.Metadata("GitBuildHash", commitHash) - // Attribute.Company "Elasticsearch BV" - // Attribute.Copyright "Apache License, version 2 (ALv2). Copyright Elasticsearch." - // Attribute.Trademark (sprintf "%s is a trademark of Elasticsearch BV, registered in the U.S. and in other countries." product.Product.Title) - // Attribute.Version version - // Attribute.FileVersion version - // Attribute.InformationalVersion version // Attribute.Version and Attribute.FileVersion normalize the version number, so retain the prelease suffix - // ] let BuildMsi (product : ProductVersions) = - if (product.Versions |> List.exists (fun v -> v.Source = Compile)) then - !! (MsiDir @@ "*.csproj") - |> MSBuildRelease MsiBuildDir "Build" - |> ignore - - let outMsiPath (product:ProductVersions) (version:Version) = - OutDir @@ product.Name @@ (sprintf "%s-%s.msi" product.Name version.FullVersion) + !! (MsiDir @@ "*.csproj") + |> MSBuildRelease MsiBuildDir "Build" + |> ignore product.Versions |> List.iter(fun version -> - match version.Source with - | Compile -> - let exitCode = ExecProcess (fun info -> - info.FileName <- sprintf "%sOdbcInstaller" MsiBuildDir - info.WorkingDirectory <- MsiDir - info.Arguments <- [product.Name; version.FullVersion; Path.GetFullPath(InDir)] |> String.concat " " - ) <| TimeSpan.FromMinutes 20. + + let zipfileName = InDir + |> directoryInfo + |> filesInDirMatching ("*.zip") + |> Seq.head + + let exitCode = ExecProcess (fun info -> + info.FileName <- sprintf "%sOdbcInstaller" MsiBuildDir + info.WorkingDirectory <- MsiDir + info.Arguments <- [version.FullVersion; zipfileName.FullName] |> String.concat " " + ) <| TimeSpan.FromMinutes 20. - if exitCode <> 0 then failwithf "Error building MSI for %s" product.Name - // let finalMsi = outMsiPath product version - // CopyFile finalMsi (MsiDir @@ (sprintf "%s.msi" product.Name)) - // Sign finalMsi product + if exitCode <> 0 then failwithf "Error building MSI for %s" product.Name + + let MsiFiles = MsiDir + |> directoryInfo + |> filesInDirMatching ("*.msi") + |> Seq.map (fun f -> f.FullName) + + CopyFiles OutDir MsiFiles + // CopyFile finalMsi (MsiDir @@ (sprintf "%s.msi" product.Name)) + // Sign finalMsi product ) \ No newline at end of file diff --git a/installer/build/scripts/Commandline.fsx b/installer/build/scripts/Commandline.fsx index 7880e473..d78725ab 100644 --- a/installer/build/scripts/Commandline.fsx +++ b/installer/build/scripts/Commandline.fsx @@ -50,20 +50,9 @@ Target: """ type VersionRegex = Regex< @"^(?:\s*(?.*?)\s*)?((?\w*)\:)?(?(?\d+)\.(?\d+)\.(?\d+)(?:\-(?[\w\-]+))?)", noMethodPrefix=true > - let private parseSource = function - | "r" -> Released - | hash when isNotNullOrEmpty hash -> BuildCandidate hash - | _ -> Compile - let parseVersion version = let m = VersionRegex().Match version if m.Success |> not then failwithf "Could not parse version from %s" version - let source = parseSource m.Source.Value - - let rawValue = - match source with - | Compile -> m.Version.Value - | _ -> sprintf "%s:%s" m.Source.Value m.Version.Value { Product = m.Product.Value; FullVersion = m.Version.Value; @@ -71,8 +60,7 @@ Target: Minor = m.Minor.Value |> int; Patch = m.Patch.Value |> int; Prerelease = m.Prerelease.Value; - Source = source; - RawValue = rawValue; } + RawValue = m.Version.Value; } let private args = getBuildParamOrDefault "cmdline" "buildinstaller" |> split ' ' @@ -82,13 +70,18 @@ Target: let zips = InDir |> directoryInfo - |> filesInDirMatching ("es*" + product.Name + "*.zip") + |> filesInDirMatching ("*.zip") match zips.Length with | 0 -> failwithf "No %s zip file found in %s" product.Name InDir | 1 -> let version = zips.[0] |> extractVersion |> parseVersion - tracefn "Extracted %s from %s" version.FullVersion zips.[0].FullName + tracefn "Extracted version information %s from %s" version.FullVersion zips.[0].FullName + + // Unzip the files + Unzip InDir zips.[0].FullName + tracefn "Unzipped files in %s" zips.[0].FullName + [version] | _ -> failwithf "Expecting one %s zip file in %s but found %i" product.Name InDir zips.Length @@ -116,7 +109,7 @@ Target: | _ -> target :: args let private certAndPasswordFromEnvVariables () = - trace "Getting signing cert and password from environment variables" + trace "SKIP: Getting signing cert and password from environment variables" //[("ELASTIC_CERT_FILE", "certificate");("ELASTIC_CERT_PASSWORD", "password")] //|> List.iter(fun (v, b) -> // let ev = Environment.GetEnvironmentVariable(v, EnvironmentVariableTarget.Machine) @@ -125,7 +118,7 @@ Target: // ) let private certAndPasswordFromFile certFile passwordFile = - trace "Getting signing cert and password from file arguments" + trace "SKIP: Getting signing cert and password from file arguments" //match (fileExists certFile, fileExists passwordFile) with //| (true, true) -> // setBuildParam "certificate" certFile @@ -139,11 +132,11 @@ Target: | ["release"] -> setBuildParam "release" "1" certAndPasswordFromEnvVariables () - All |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) | ["release"; certFile; passwordFile ] -> setBuildParam "release" "1" certAndPasswordFromFile certFile passwordFile - All |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) | _ -> traceError usage exit 2 diff --git a/installer/build/scripts/Products.fsx b/installer/build/scripts/Products.fsx index d7b096fa..ccfff01f 100644 --- a/installer/build/scripts/Products.fsx +++ b/installer/build/scripts/Products.fsx @@ -3,7 +3,6 @@ #r "FakeLib.dll" open System.Globalization -open System.IO open Fake module Paths = @@ -11,7 +10,6 @@ module Paths = let ToolsDir = BuildDir @@ "tools/" let InDir = BuildDir @@ "in/" let OutDir = BuildDir @@ "out/" - let ResultsDir = BuildDir @@ "results/" let SrcDir = "./src/" let MsiDir = SrcDir @@ "Installer/" @@ -42,19 +40,6 @@ module Products = member this.Title = CultureInfo.InvariantCulture.TextInfo.ToTitleCase this.Name - let All = [Odbc] - - type Source = - | Compile - | Released - | BuildCandidate of hash:string - - member this.Description = - match this with - | Compile -> "compiled from source" - | Released -> "official release" - | BuildCandidate hash -> sprintf "build candidate %s" hash - type Version = { Product : string; FullVersion : string; @@ -62,7 +47,6 @@ module Products = Minor : int; Patch : int; Prerelease : string; - Source : Source; RawValue: string; } @@ -72,18 +56,5 @@ module Products = member this.Name = product.Name member this.Title = product.Title - member private this.ZipFile (version:Version) = - let fullPathInDir = InDir |> Path.GetFullPath - Path.Combine(fullPathInDir, sprintf "%s-%s.zip" this.Name version.FullVersion) - - member private this.ExtractedDirectory (version:Version) = - let fullPathInDir = InDir |> Path.GetFullPath - Path.Combine(fullPathInDir, sprintf "%s-%s" this.Name version.FullVersion) - - member this.BinDirs = - this.Versions - |> List.filter (fun v -> v.Source = Compile) - |> List.map(fun v -> InDir @@ sprintf "%s-%s/bin/" this.Name v.FullVersion) - static member CreateFromProduct (productToVersion:Product -> Version list) (product: Product) = ProductVersions(product, productToVersion product) \ No newline at end of file diff --git a/installer/build/scripts/Targets.fsx b/installer/build/scripts/Targets.fsx index e6695bf5..29df9a34 100644 --- a/installer/build/scripts/Targets.fsx +++ b/installer/build/scripts/Targets.fsx @@ -8,7 +8,6 @@ #load "Commandline.fsx" open System -open System.Management.Automation open Fake open Products open Products.Products @@ -22,7 +21,7 @@ let productsToBuild = Commandline.parse() let productDescriptions = productsToBuild |> List.map(fun p -> p.Versions - |> List.map(fun v -> sprintf "%s %s (%s)" p.Title v.FullVersion v.Source.Description) + |> List.map(fun v -> sprintf "%s %s (%s)" p.Title v.FullVersion "Compile") ) |> List.concat |> String.concat Environment.NewLine @@ -31,7 +30,7 @@ if (getBuildParam "target" |> toLower <> "help") then traceHeader (sprintf "Products:%s%s%s" Environment.NewLine Environment.NewLine productDescriptions) Target "Clean" (fun _ -> - CleanDirs [MsiBuildDir; OutDir; ResultsDir] + CleanDirs [MsiBuildDir; OutDir;] productsToBuild |> List.iter(fun p -> CleanDirs [OutDir @@ p.Name;]) ) diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index b6466c74..5ca4a79d 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -11,7 +11,7 @@ static void Main(string[] args) { // Remove the platform suffix const string platformSuffix = "-windows-x86_64"; - var releaseString = args[1]; + var releaseString = args[0]; if (string.IsNullOrEmpty(releaseString) == false && releaseString.EndsWith(platformSuffix)) { @@ -25,47 +25,51 @@ static void Main(string[] args) var versionSplit = releaseString.Split('-'); if (versionSplit.Length > 2) { - throw new ArgumentException("Unexpected version string: " + args[1]); + throw new ArgumentException("Unexpected version string: " + args[0]); } preRelease = "-" + versionSplit[1]; } - var odbcVersion = FileVersionInfo.GetVersionInfo(System.IO.Path.GetFullPath("driver\\esodbc7u.dll")); - var VersionString = $"{odbcVersion.ProductVersion}{preRelease}"; + // Get the input files + var zipFilepath = args[1]; + var zipContentsDirectory = new System.IO.DirectoryInfo(zipFilepath.Replace(".zip", string.Empty)).FullName; + var driverFileInfo = GetDriverFileInfo(zipContentsDirectory); + var driverFilePath = System.IO.Path.Combine(zipContentsDirectory, driverFileInfo.FileName); - var driverDirectory = "driver\\"; - var driverFilename = System.IO.Path.Combine(driverDirectory, "esodbc7u.dll"); + // Append any prerelease flags onto the version string + var msiVersionString = $"{driverFileInfo.ProductVersion}{preRelease}"; + var msiFileName = new System.IO.FileInfo(zipFilepath).Name.Replace(".zip", string.Empty); - var files = System.IO.Directory.GetFiles(driverDirectory) - .Where(f => f.EndsWith(driverFilename) == false) + var files = System.IO.Directory.GetFiles(zipContentsDirectory) + .Where(f => f.EndsWith(driverFilePath) == false) .Select(f => new File(f)) - .Concat(new[] { new File(driverFilename, new ODBCDriver("Elasticsearch Driver")) } ) + .Concat(new[] { new File(driverFilePath, new ODBCDriver("Elasticsearch Driver")) }) .Cast() .ToArray(); - var installDirectory = $@"%ProgramFiles%\Elastic\ODBCDriver\{VersionString}"; + var installDirectory = $@"%ProgramFiles%\Elastic\ODBCDriver\{msiVersionString}"; var components = new Dir(installDirectory, files); var project = new Project("ODBCDriverInstaller", components) { Platform = Platform.x64, InstallScope = InstallScope.perMachine, - Version = new Version(odbcVersion.ProductMajorPart, odbcVersion.ProductMinorPart, odbcVersion.ProductBuildPart, odbcVersion.ProductPrivatePart), + Version = new Version(driverFileInfo.ProductMajorPart, driverFileInfo.ProductMinorPart, driverFileInfo.ProductBuildPart, driverFileInfo.ProductPrivatePart), GUID = new Guid("e87c5d53-fddf-4539-9447-49032ed527bb"), UI = WUI.WixUI_InstallDir, BannerImage = "topbanner.bmp", BackgroundImage = "leftbanner.bmp", Name = "Elasticsearch ODBC Driver", - Description = $"{odbcVersion.FileDescription} ({VersionString})", + Description = $"{driverFileInfo.FileDescription} ({msiVersionString})", ControlPanelInfo = new ProductInfo { ProductIcon = "ODBC.ico", - Manufacturer = odbcVersion.CompanyName, + Manufacturer = driverFileInfo.CompanyName, UrlInfoAbout = "https://www.elastic.co/products/stack/elasticsearch-sql", HelpLink = "https://discuss.elastic.co/c/elasticsearch" }, - OutFileName = $"elasticsearch-odbc-driver-{VersionString}", + OutFileName = msiFileName, // http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html MajorUpgrade = new MajorUpgrade @@ -73,15 +77,23 @@ static void Main(string[] args) AllowDowngrades = false, AllowSameVersionUpgrades = false, Disallow = true, - DisallowUpgradeErrorMessage = "An existing version is already installed, please uninstall this version before continuing.", - DowngradeErrorMessage = "A more recent version is already installed, please uninstall this version before continuing.", + DisallowUpgradeErrorMessage = "An existing version is already installed, please uninstall before continuing.", + DowngradeErrorMessage = "A more recent version is already installed, please uninstall before continuing.", } }; - project.Attributes.Add("Manufacturer", odbcVersion.CompanyName); - project.WixVariables.Add("WixUILicenseRtf", "driver\\LICENSE.rtf"); + project.Attributes.Add("Manufacturer", driverFileInfo.CompanyName); + project.WixVariables.Add("WixUILicenseRtf", System.IO.Path.Combine(zipContentsDirectory, "LICENSE.rtf")); project.BuildMsi(); } - } + + private static FileVersionInfo GetDriverFileInfo(string zipContentsDirectory) + { + return System.IO.Directory.GetFiles(zipContentsDirectory) + .Where(f => f.EndsWith(".dll")) + .Select(f => FileVersionInfo.GetVersionInfo(f)) + .Single(f => f.FileDescription == "ODBC Unicode driver for Elasticsearch"); + } + } } \ No newline at end of file diff --git a/installer/src/Installer/WixSharp Setup.exe b/installer/src/Installer/WixSharp Setup.exe deleted file mode 100644 index e31ea6816ff98106e64aeb525f5bd4cec99963f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 zcmeHLU2Ggz6+Sa|HuffQ{gc@F&v+A)q{*)BcoRE`o!H)Wg2|5)uYaI1b!KO-*OSc7 zZ0^juc8ViMh@!Swas)3(1=I>q`$iFni1H&4g;;rH7#Unt&OAY)6CH)s~TEGLoC>7NE1)^H{xBMyi6^_Nv8`98)kittUPbu`-y zzr#cd>UczNk5wAl!c>Qb_^Trh%r!06q1w{O52CVtu|B9|QE8MF53?M8rKO2~V>N3l ze|I%&8~@uXmiL5c?ja=MaHwf2a|aJ4)wzb{oa1tO$%ids48bSt5wya z@{!UZ)&^7v1CUDvauVO9SdM}(>cuxKDuNcv;j;3U8ls;_{5pMEeS-c3)e!xRTEUMi z0=G!~mc$zpUy%5FsqHguLG{#|l5R@ACtYOFAT)e?70e2xU?c~#&6iOmwnB{oTX zT4EnCM2u>I3NTEEWZMSV3E`XQlHOx}QG%$~QkD9w+9PY1G{L_^JJluBv(2LR+}1^D ztC|*71xs1fwgJO*5Lip?5|2yllQ<~xvc%6w)PY;blJpIUUj^==mnGf??x)v*A$pC* z)mC7W+Cjgd`${M1r`1k+m&WNN=sxu%-6o~tH2oI(wHVQ&dJdcjT?QVeE5MsH3A_fp zLoZ7DoH|J#&|lRwZKf36fb@YfM{}~r7;T`hP>dSrYrq}!Bj8?o3wVfr1MHA^Qer~# z&(R;iPf5-di3WWL&UMuH-^ZKtGV_?GMFeD3NI>b~Hbd7GUgkNJ~wk&llKQr0tEZd++e&3Qh{#uBb=Gug_E zon;Q=mO*`{Nf(DkCI=nQ*C96PY~C`dUpKC2xSMy(!K|KPs5{UP=rfkh=%SuwQnk;= zH&ec4J;BzhiW+{3un z3KOm~Wo7bQ7hzc|PBPEnR&J#b?&U07wisr%J}W72ZR1NE@iqLlf`pr!<5p(+p`vU~ zcjlJc4Cfu+$}-U>`bk^1<(Emvt=ZJH&U0Fd`T1Oo%`z&?$r;PhZR;i`A#d5{1;u_&te4Jv2@A6_FNlVW-uIF2ZS7a528yj?d#@$?s@fpitYsA46FkX@e%Lv;z z)-=@N(3s9Gv8+4_1}2$9>1$ZaLX2n>$pJ*zpCj5ogzv4N5UE{4M5AMSv)j&jHcja2erX+9G*q# z2pz>+P;u~e_!*_+kRJy>ik-ZRjseq<2+c11j-#gR@DaJ3gQiIzIOOQQ(vc~AyqVo5O?hNUT@rqvaxN> z162cqI`r~tsAhd=OZ~iBQ&V^eOAXYZppTlGsvq2(7~2-V_k2}n{x83J>g~jvI65g+ zO5rB4Tjc){wQ-#5xr?qdFl#WmYmQ8F_Zd&!%3XohNkJoy1EqaYd-FBz zNLxD&Z3h+F7mpu3dbF#nGit;;jz{C2ZASEXJZ?t2x{e)VMu*wib_|*u(M3B>d-w%; zuXy(nX>cd{cnNonmv9gpP9;;XUVZ(9`MDR9-`_mk`AqEnH-rm`6B8*n&kZ)=nrS0y z6>=M&z*S*lh0hai`r3rtaVCm8Utt5znfUJhgUh|by+sV+BSC9|T3d?un?N#|aQVP2 zlgUIL9~g_7wm56!_S-^QucZEWL6!Fi4cA>4h>TNcmx`W=g)0 zO#ci0_wZpZ^%5oVE|z3P9OM}G^hw|Vww@HWqap0_lXzc529vjS`f=s`e+2yoeHVQ= zT`*LMcTrNZEqP;dFD_<6ku}98D#|_*twyk+iap(vnNDn`Vrvb`cPhV$k5qwAKD2^u zcCDoasndoG6a3=H65>rs2C-Icuxi{V_rG=d#6r|Bat^pPtRy+Dve{ z=!qcxL^S3Yu8D(aPh@oDOtdSa;fmy#y6rlwCo;#p$mvs?!kfa~df`H&!Gz=WL~xis z;ThAo#CXxHWpLMXr~IhlW>4r|Ha629(XzT@O)<|eTxNp)U`*3W#s*C$53?(L5-BmF zIk Date: Thu, 18 Oct 2018 13:25:43 +0100 Subject: [PATCH 04/16] Remove redundant references --- installer/build/scripts/Targets.fsx | 2 -- installer/paket.dependencies | 2 -- 2 files changed, 4 deletions(-) diff --git a/installer/build/scripts/Targets.fsx b/installer/build/scripts/Targets.fsx index 29df9a34..f655fb09 100644 --- a/installer/build/scripts/Targets.fsx +++ b/installer/build/scripts/Targets.fsx @@ -1,8 +1,6 @@ #I "../../packages/build/FAKE.x64/tools" -#I "../../packages/build/System.Management.Automation/lib/net45" #r "FakeLib.dll" -#r "System.Management.Automation.dll" #load "Products.fsx" #load "Build.fsx" #load "Commandline.fsx" diff --git a/installer/paket.dependencies b/installer/paket.dependencies index 6c1e918a..00e4dc51 100644 --- a/installer/paket.dependencies +++ b/installer/paket.dependencies @@ -2,7 +2,6 @@ source https://api.nuget.org/v3/index.json nuget WixSharp.bin nuget WixSharp.wix.bin -nuget semver source https://www.nuget.org/api/v2 @@ -16,7 +15,6 @@ group build nuget FSharp.Data nuget FSharp.Text.RegexProvider nuget FSharp.Configuration - nuget System.Management.Automation source https://www.myget.org/F/xunit/ nuget xunit.runner.console 2.2.0 From 26c86b91ac87e31075ddc091ccf7e530b55a026c Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Thu, 18 Oct 2018 17:25:10 +0100 Subject: [PATCH 05/16] Add dependancy check for .NET framework. Fixes #33 --- installer/src/Installer/Program.cs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index 5ca4a79d..314be44c 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Collections.Generic; using System.Diagnostics; using WixSharp; @@ -70,9 +71,22 @@ static void Main(string[] args) HelpLink = "https://discuss.elastic.co/c/elasticsearch" }, OutFileName = msiFileName, - - // http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html - MajorUpgrade = new MajorUpgrade + + Properties = new[] + { + new PropertyRef("NETFRAMEWORK40FULL"), + }, + LaunchConditions = new List + { + new LaunchCondition( + "Installed OR NETFRAMEWORK40FULL", + "This installer requires at least .NET Framework 4.0 in order to run the configuration editor. " + + "Please install .NET Framework 4.0 then run this installer again." + ) + }, + + // http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html + MajorUpgrade = new MajorUpgrade { AllowDowngrades = false, AllowSameVersionUpgrades = false, @@ -84,8 +98,8 @@ static void Main(string[] args) project.Attributes.Add("Manufacturer", driverFileInfo.CompanyName); project.WixVariables.Add("WixUILicenseRtf", System.IO.Path.Combine(zipContentsDirectory, "LICENSE.rtf")); - - project.BuildMsi(); + project.Include(WixExtension.NetFx); + project.BuildMsi(); } private static FileVersionInfo GetDriverFileInfo(string zipContentsDirectory) From cec2c15b367e9f4d6c127237e2cf15f1ed3786b6 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Thu, 18 Oct 2018 22:28:56 +0100 Subject: [PATCH 06/16] Add launch condition check to only allow installations on Windows 10 or Windows Server 2016. Fixes #34 --- installer/src/Installer/Program.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index 314be44c..ea7224e8 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -71,7 +71,6 @@ static void Main(string[] args) HelpLink = "https://discuss.elastic.co/c/elasticsearch" }, OutFileName = msiFileName, - Properties = new[] { new PropertyRef("NETFRAMEWORK40FULL"), @@ -82,6 +81,14 @@ static void Main(string[] args) "Installed OR NETFRAMEWORK40FULL", "This installer requires at least .NET Framework 4.0 in order to run the configuration editor. " + "Please install .NET Framework 4.0 then run this installer again." + ), + /* + Windows 10: VersionNT64 = 1000 AND MsiNTProductType = 1 + Windows Server 2016: VersionNT64 = 1000 AND MsiNTProductType <> 1 + */ + new LaunchCondition( + "NOT ((VersionNT64 = 1000 AND MsiNTProductType = 1) OR (VersionNT64 = 1000 AND MsiNTProductType <> 1))", + "This installer requires at least Windows 10 or Windows Server 2016." ) }, From 88fb23048c16ca9367728eaf5508b836148dcbfb Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Fri, 19 Oct 2018 11:00:47 +0100 Subject: [PATCH 07/16] Add check for Visual C++ 2017 Redistributable files on host machine. Fixes #35 --- installer/src/Installer/Program.cs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index ea7224e8..785735d6 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -74,21 +74,32 @@ static void Main(string[] args) Properties = new[] { new PropertyRef("NETFRAMEWORK40FULL"), + + // Perform registry search for redist key + new Property("VS2017REDISTINSTALLED", + new RegistrySearch(RegistryHive.LocalMachine, @"SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64", "Installed", RegistrySearchType.raw){ + Win64 = true + }) }, LaunchConditions = new List { - new LaunchCondition( - "Installed OR NETFRAMEWORK40FULL", - "This installer requires at least .NET Framework 4.0 in order to run the configuration editor. " + - "Please install .NET Framework 4.0 then run this installer again." - ), /* Windows 10: VersionNT64 = 1000 AND MsiNTProductType = 1 Windows Server 2016: VersionNT64 = 1000 AND MsiNTProductType <> 1 */ new LaunchCondition( "NOT ((VersionNT64 = 1000 AND MsiNTProductType = 1) OR (VersionNT64 = 1000 AND MsiNTProductType <> 1))", - "This installer requires at least Windows 10 or Windows Server 2016." + "This installer requires at least Windows 10 or Windows Server 2016." + ), + new LaunchCondition( + "VS2017REDISTINSTALLED", + "This installer requires the Visual C++ 2017 Redistributable. " + + "Please install Visual C++ 2017 Redistributable and then run this installer again." + ), + new LaunchCondition( + "Installed OR NETFRAMEWORK40FULL", + "This installer requires at least .NET Framework 4.0 in order to run the configuration editor. " + + "Please install .NET Framework 4.0 and then run this installer again." ) }, From 50ffb0d112989ea54ee2e3fcb63df20b8a11bfa7 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Fri, 19 Oct 2018 11:32:19 +0100 Subject: [PATCH 08/16] Re-added MSI signing support, simplified build script. Fixes #36. --- installer/build/scripts/Build.fsx | 108 +++++++++++++----------- installer/build/scripts/Commandline.fsx | 39 +++++---- installer/build/scripts/Products.fsx | 13 --- installer/build/scripts/Targets.fsx | 2 - 4 files changed, 76 insertions(+), 86 deletions(-) diff --git a/installer/build/scripts/Build.fsx b/installer/build/scripts/Build.fsx index 586156ae..4a0fc905 100644 --- a/installer/build/scripts/Build.fsx +++ b/installer/build/scripts/Build.fsx @@ -10,55 +10,56 @@ open Fake open Products.Products open Products.Paths open Products +open System.Text module Builder = open Fake.FileHelper let Sign file (product : ProductVersions) = - tracefn "SKIP: Signing file" - //let release = getBuildParam "release" = "1" - //if release then - // let certificate = getBuildParam "certificate" - // let password = getBuildParam "password" - // let timestampServer = "http://timestamp.comodoca.com" - // let timeout = TimeSpan.FromMinutes 1. + tracefn "Signing MSI" + let release = getBuildParam "release" = "1" + if release then + let certificate = getBuildParam "certificate" + let password = getBuildParam "password" + let timestampServer = "http://timestamp.comodoca.com" + let timeout = TimeSpan.FromMinutes 1. - // let sign () = - // let signToolExe = ToolsDir @@ "signtool/signtool.exe" - // let args = ["sign"; "/f"; certificate; "/p"; password; "/t"; timestampServer; "/d"; product.Title; "/v"; file] |> String.concat " " - // let redactedArgs = args.Replace(password, "") + let sign () = + let signToolExe = ToolsDir @@ "signtool/signtool.exe" + let args = ["sign"; "/f"; certificate; "/p"; password; "/t"; timestampServer; "/d"; product.Title; "/v"; file] |> String.concat " " + let redactedArgs = args.Replace(password, "") - // use proc = new Process() - // proc.StartInfo.UseShellExecute <- false - // proc.StartInfo.FileName <- signToolExe - // proc.StartInfo.Arguments <- args - // platformInfoAction proc.StartInfo - // proc.StartInfo.RedirectStandardOutput <- true - // proc.StartInfo.RedirectStandardError <- true - // if isMono then - // proc.StartInfo.StandardOutputEncoding <- Encoding.UTF8 - // proc.StartInfo.StandardErrorEncoding <- Encoding.UTF8 - // proc.ErrorDataReceived.Add(fun d -> if d.Data <> null then traceError d.Data) - // proc.OutputDataReceived.Add(fun d -> if d.Data <> null then trace d.Data) + use proc = new Process() + proc.StartInfo.UseShellExecute <- false + proc.StartInfo.FileName <- signToolExe + proc.StartInfo.Arguments <- args + platformInfoAction proc.StartInfo + proc.StartInfo.RedirectStandardOutput <- true + proc.StartInfo.RedirectStandardError <- true + if isMono then + proc.StartInfo.StandardOutputEncoding <- Encoding.UTF8 + proc.StartInfo.StandardErrorEncoding <- Encoding.UTF8 + proc.ErrorDataReceived.Add(fun d -> if d.Data <> null then traceError d.Data) + proc.OutputDataReceived.Add(fun d -> if d.Data <> null then trace d.Data) - // try - // tracefn "%s %s" proc.StartInfo.FileName redactedArgs - // start proc - // with exn -> failwithf "Start of process %s failed. %s" proc.StartInfo.FileName exn.Message - // proc.BeginErrorReadLine() - // proc.BeginOutputReadLine() - // if not <| proc.WaitForExit(int timeout.TotalMilliseconds) then - // try - // proc.Kill() - // with exn -> - // traceError - // <| sprintf "Could not kill process %s %s after timeout." proc.StartInfo.FileName redactedArgs - // failwithf "Process %s %s timed out." proc.StartInfo.FileName redactedArgs - // proc.WaitForExit() - // proc.ExitCode + try + tracefn "%s %s" proc.StartInfo.FileName redactedArgs + start proc + with exn -> failwithf "Start of process %s failed. %s" proc.StartInfo.FileName exn.Message + proc.BeginErrorReadLine() + proc.BeginOutputReadLine() + if not <| proc.WaitForExit(int timeout.TotalMilliseconds) then + try + proc.Kill() + with exn -> + traceError + <| sprintf "Could not kill process %s %s after timeout." proc.StartInfo.FileName redactedArgs + failwithf "Process %s %s timed out." proc.StartInfo.FileName redactedArgs + proc.WaitForExit() + proc.ExitCode - // let exitCode = sign() - // if exitCode <> 0 then failwithf "Signing %s returned error exit code: %i" product.Title exitCode + let exitCode = sign() + if exitCode <> 0 then failwithf "Signing %s returned error exit code: %i" product.Title exitCode let BuildMsi (product : ProductVersions) = @@ -69,25 +70,30 @@ module Builder = product.Versions |> List.iter(fun version -> - let zipfileName = InDir - |> directoryInfo - |> filesInDirMatching ("*.zip") - |> Seq.head + let zipfile = InDir + |> directoryInfo + |> filesInDirMatching ("*.zip") + |> Seq.head + + // Unzip the zip file + Unzip InDir zipfile.FullName + tracefn "Unzipped zip file in %s" zipfile.FullName let exitCode = ExecProcess (fun info -> info.FileName <- sprintf "%sOdbcInstaller" MsiBuildDir info.WorkingDirectory <- MsiDir - info.Arguments <- [version.FullVersion; zipfileName.FullName] |> String.concat " " + info.Arguments <- [version.FullVersion; zipfile.FullName] |> String.concat " " ) <| TimeSpan.FromMinutes 20. - if exitCode <> 0 then failwithf "Error building MSI for %s" product.Name + if exitCode <> 0 then failwithf "Error building MSI" - let MsiFiles = MsiDir + let MsiFile = MsiDir |> directoryInfo |> filesInDirMatching ("*.msi") |> Seq.map (fun f -> f.FullName) - - CopyFiles OutDir MsiFiles - // CopyFile finalMsi (MsiDir @@ (sprintf "%s.msi" product.Name)) - // Sign finalMsi product + |> Seq.head + + Sign MsiFile product + CopyFile OutDir MsiFile + DeleteFile MsiFile ) \ No newline at end of file diff --git a/installer/build/scripts/Commandline.fsx b/installer/build/scripts/Commandline.fsx index d78725ab..36929684 100644 --- a/installer/build/scripts/Commandline.fsx +++ b/installer/build/scripts/Commandline.fsx @@ -77,11 +77,6 @@ Target: | 1 -> let version = zips.[0] |> extractVersion |> parseVersion tracefn "Extracted version information %s from %s" version.FullVersion zips.[0].FullName - - // Unzip the files - Unzip InDir zips.[0].FullName - tracefn "Unzipped files in %s" zips.[0].FullName - [version] | _ -> failwithf "Expecting one %s zip file in %s but found %i" product.Name InDir zips.Length @@ -109,22 +104,22 @@ Target: | _ -> target :: args let private certAndPasswordFromEnvVariables () = - trace "SKIP: Getting signing cert and password from environment variables" - //[("ELASTIC_CERT_FILE", "certificate");("ELASTIC_CERT_PASSWORD", "password")] - //|> List.iter(fun (v, b) -> - // let ev = Environment.GetEnvironmentVariable(v, EnvironmentVariableTarget.Machine) - // if isNullOrWhiteSpace ev then failwithf "Expecting non-null value for %s environment variable" v - // setBuildParam b ev - // ) + trace "Getting signing cert and password from environment variables" + [("ELASTIC_CERT_FILE", "certificate");("ELASTIC_CERT_PASSWORD", "password")] + |> List.iter(fun (v, b) -> + let ev = Environment.GetEnvironmentVariable(v, EnvironmentVariableTarget.Machine) + if isNullOrWhiteSpace ev then failwithf "Expecting non-null value for %s environment variable" v + setBuildParam b ev + ) let private certAndPasswordFromFile certFile passwordFile = - trace "SKIP: Getting signing cert and password from file arguments" - //match (fileExists certFile, fileExists passwordFile) with - //| (true, true) -> - // setBuildParam "certificate" certFile - // passwordFile |> File.ReadAllText |> setBuildParam "password" - //| (false, _) -> failwithf "certificate file does not exist at %s" certFile - //| (_, false) -> failwithf "password file does not exist at %s" passwordFile + trace "Getting signing cert and password from file arguments" + match (fileExists certFile, fileExists passwordFile) with + | (true, true) -> + setBuildParam "certificate" certFile + passwordFile |> File.ReadAllText |> setBuildParam "password" + | (false, _) -> failwithf "certificate file does not exist at %s" certFile + | (_, false) -> failwithf "password file does not exist at %s" passwordFile let parse () = setEnvironVar "FAKEBUILD" "1" @@ -137,9 +132,13 @@ Target: setBuildParam "release" "1" certAndPasswordFromFile certFile passwordFile [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + | [IsTarget target] -> + [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + | [] -> + [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) | _ -> traceError usage exit 2 setBuildParam "target" target - products + products \ No newline at end of file diff --git a/installer/build/scripts/Products.fsx b/installer/build/scripts/Products.fsx index ccfff01f..32494c8a 100644 --- a/installer/build/scripts/Products.fsx +++ b/installer/build/scripts/Products.fsx @@ -22,21 +22,9 @@ module Products = | Odbc member this.Name = - match this with - | Odbc -> "odbc" - - member this.AssemblyTitle = match this with | Odbc -> "ODBC Driver" - member this.AssemblyDescription = - match this with - | Odbc -> "Elasticsearch ODBC Driver." - - member this.AssemblyGuid = - match this with - | Odbc -> "44555887-c439-470c-944d-8866ec3d7067" - member this.Title = CultureInfo.InvariantCulture.TextInfo.ToTitleCase this.Name @@ -53,7 +41,6 @@ module Products = type ProductVersions (product:Product, versions:Version list) = member this.Product = product member this.Versions = versions - member this.Name = product.Name member this.Title = product.Title static member CreateFromProduct (productToVersion:Product -> Version list) (product: Product) = diff --git a/installer/build/scripts/Targets.fsx b/installer/build/scripts/Targets.fsx index f655fb09..badd5381 100644 --- a/installer/build/scripts/Targets.fsx +++ b/installer/build/scripts/Targets.fsx @@ -29,8 +29,6 @@ if (getBuildParam "target" |> toLower <> "help") then Target "Clean" (fun _ -> CleanDirs [MsiBuildDir; OutDir;] - productsToBuild - |> List.iter(fun p -> CleanDirs [OutDir @@ p.Name;]) ) Target "BuildInstaller" (fun () -> From 69a3df6ba0c151925bd062ebe486a91d7f3fbd16 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 24 Oct 2018 19:59:01 +1100 Subject: [PATCH 09/16] Add Wix binary to compilation location. Delete CustomActuion.config --- installer/src/Installer/CustomAction.config | 11 ----------- installer/src/Installer/Program.cs | 8 +++++++- 2 files changed, 7 insertions(+), 12 deletions(-) delete mode 100644 installer/src/Installer/CustomAction.config diff --git a/installer/src/Installer/CustomAction.config b/installer/src/Installer/CustomAction.config deleted file mode 100644 index c53cbde7..00000000 --- a/installer/src/Installer/CustomAction.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index 785735d6..056f82a3 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -114,7 +114,13 @@ static void Main(string[] args) } }; - project.Attributes.Add("Manufacturer", driverFileInfo.CompanyName); + const string wixLocation = @"..\..\packages\WixSharp.wix.bin\tools\bin"; + if (!System.IO.Directory.Exists(wixLocation)) + throw new Exception($"The directory '{wixLocation}' could not be found"); + //Compiler.LightOptions = "-sw1076 -sw1079 -sval"; + Compiler.WixLocation = wixLocation; + + project.Attributes.Add("Manufacturer", driverFileInfo.CompanyName); project.WixVariables.Add("WixUILicenseRtf", System.IO.Path.Combine(zipContentsDirectory, "LICENSE.rtf")); project.Include(WixExtension.NetFx); project.BuildMsi(); From 7e1e01aafe3df5ed5dcae889d863fbe7ba614e77 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 24 Oct 2018 20:00:12 +1100 Subject: [PATCH 10/16] Remove unneeded dependancies. --- installer/paket.dependencies | 8 +------- installer/src/Installer/Installer.csproj | 4 ++-- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/installer/paket.dependencies b/installer/paket.dependencies index 00e4dc51..1607b517 100644 --- a/installer/paket.dependencies +++ b/installer/paket.dependencies @@ -5,16 +5,10 @@ nuget WixSharp.wix.bin source https://www.nuget.org/api/v2 -nuget xunit -nuget FluentAssertions - group build source https://www.nuget.org/api/v2 nuget FAKE.x64 nuget FSharp.Data nuget FSharp.Text.RegexProvider - nuget FSharp.Configuration - - source https://www.myget.org/F/xunit/ - nuget xunit.runner.console 2.2.0 + nuget FSharp.Configuration \ No newline at end of file diff --git a/installer/src/Installer/Installer.csproj b/installer/src/Installer/Installer.csproj index 9bf21241..5bf0894c 100644 --- a/installer/src/Installer/Installer.csproj +++ b/installer/src/Installer/Installer.csproj @@ -12,7 +12,7 @@ v4.5 512 true - + AnyCPU @@ -86,5 +86,5 @@ True - + \ No newline at end of file From 9c40772950d14945824d879f959e5e0c412c7a1a Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 24 Oct 2018 20:09:24 +1100 Subject: [PATCH 11/16] Address PR comment --- installer/src/Installer/Program.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index 056f82a3..b8fe11d5 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -120,7 +120,6 @@ static void Main(string[] args) //Compiler.LightOptions = "-sw1076 -sw1079 -sval"; Compiler.WixLocation = wixLocation; - project.Attributes.Add("Manufacturer", driverFileInfo.CompanyName); project.WixVariables.Add("WixUILicenseRtf", System.IO.Path.Combine(zipContentsDirectory, "LICENSE.rtf")); project.Include(WixExtension.NetFx); project.BuildMsi(); From fc597a099471e6ffbc47431f312ff8444eae0fee Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 24 Oct 2018 20:13:34 +1100 Subject: [PATCH 12/16] Move open declaration --- installer/build/scripts/Build.fsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/build/scripts/Build.fsx b/installer/build/scripts/Build.fsx index 4a0fc905..71778b17 100644 --- a/installer/build/scripts/Build.fsx +++ b/installer/build/scripts/Build.fsx @@ -11,9 +11,9 @@ open Products.Products open Products.Paths open Products open System.Text +open Fake.FileHelper module Builder = - open Fake.FileHelper let Sign file (product : ProductVersions) = tracefn "Signing MSI" From 42d9bb09cbb0eee3af7da7b4bdd9faef437a14d9 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 24 Oct 2018 20:16:14 +1100 Subject: [PATCH 13/16] Address use of GetFileNameWithoutExtension --- installer/src/Installer/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index b8fe11d5..266c49c4 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -40,7 +40,7 @@ static void Main(string[] args) // Append any prerelease flags onto the version string var msiVersionString = $"{driverFileInfo.ProductVersion}{preRelease}"; - var msiFileName = new System.IO.FileInfo(zipFilepath).Name.Replace(".zip", string.Empty); + var msiFileName = System.IO.Path.GetFileNameWithoutExtension(zipFilepath); var files = System.IO.Directory.GetFiles(zipContentsDirectory) .Where(f => f.EndsWith(driverFilePath) == false) From b0226abdc1947045768805815866fbe5c9660c18 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 24 Oct 2018 22:21:50 +1100 Subject: [PATCH 14/16] Refactor build process to use the driver output folder from the C++ compilation process. --- installer/build/scripts/Build.fsx | 11 +---------- installer/build/scripts/Commandline.fsx | 20 ++++++++++++-------- installer/build/scripts/Products.fsx | 5 +++-- installer/build/scripts/Targets.fsx | 10 +++------- installer/src/Installer/Program.cs | 14 ++++++-------- 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/installer/build/scripts/Build.fsx b/installer/build/scripts/Build.fsx index 71778b17..9594133f 100644 --- a/installer/build/scripts/Build.fsx +++ b/installer/build/scripts/Build.fsx @@ -70,19 +70,10 @@ module Builder = product.Versions |> List.iter(fun version -> - let zipfile = InDir - |> directoryInfo - |> filesInDirMatching ("*.zip") - |> Seq.head - - // Unzip the zip file - Unzip InDir zipfile.FullName - tracefn "Unzipped zip file in %s" zipfile.FullName - let exitCode = ExecProcess (fun info -> info.FileName <- sprintf "%sOdbcInstaller" MsiBuildDir info.WorkingDirectory <- MsiDir - info.Arguments <- [version.FullVersion; zipfile.FullName] |> String.concat " " + info.Arguments <- [version.FullVersion; System.IO.Path.GetFullPath(DriverFilesDir)] |> String.concat " " ) <| TimeSpan.FromMinutes 20. if exitCode <> 0 then failwithf "Error building MSI" diff --git a/installer/build/scripts/Commandline.fsx b/installer/build/scripts/Commandline.fsx index 36929684..8adc478e 100644 --- a/installer/build/scripts/Commandline.fsx +++ b/installer/build/scripts/Commandline.fsx @@ -64,6 +64,10 @@ Target: let private args = getBuildParamOrDefault "cmdline" "buildinstaller" |> split ' ' + let private versionFromCommandArgument (versionString: string) = + let version = versionString |> parseVersion + [version] + let private versionFromInDir (product : Product) = let extractVersion (fileInfo:FileInfo) = Regex.Replace(fileInfo.Name, "^" + product.Name + "\-(.*)\.zip$", "$1") @@ -124,18 +128,18 @@ Target: let parse () = setEnvironVar "FAKEBUILD" "1" let products = match arguments with - | ["release"] -> + | ["release"; version] -> setBuildParam "release" "1" certAndPasswordFromEnvVariables () - [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) - | ["release"; certFile; passwordFile ] -> + ProductVersions.Create (versionFromCommandArgument version) + | ["release"; version; certFile; passwordFile ] -> setBuildParam "release" "1" certAndPasswordFromFile certFile passwordFile - [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) - | [IsTarget target] -> - [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) - | [] -> - [Odbc] |> List.map (ProductVersions.CreateFromProduct versionFromInDir) + ProductVersions.Create (versionFromCommandArgument version) + | [IsTarget target; version] -> + ProductVersions.Create (versionFromCommandArgument version) + | [version] -> + ProductVersions.Create (versionFromCommandArgument version) | _ -> traceError usage exit 2 diff --git a/installer/build/scripts/Products.fsx b/installer/build/scripts/Products.fsx index 32494c8a..195f8666 100644 --- a/installer/build/scripts/Products.fsx +++ b/installer/build/scripts/Products.fsx @@ -14,6 +14,7 @@ module Paths = let SrcDir = "./src/" let MsiDir = SrcDir @@ "Installer/" let MsiBuildDir = MsiDir @@ "bin/Release/" + let DriverFilesDir = SrcDir @@ "../../builds/" // Output folder from driver compilation module Products = open Paths @@ -43,5 +44,5 @@ module Products = member this.Versions = versions member this.Title = product.Title - static member CreateFromProduct (productToVersion:Product -> Version list) (product: Product) = - ProductVersions(product, productToVersion product) \ No newline at end of file + static member Create (versions: Version list) = + ProductVersions(Odbc, versions) \ No newline at end of file diff --git a/installer/build/scripts/Targets.fsx b/installer/build/scripts/Targets.fsx index badd5381..f9e7d2e0 100644 --- a/installer/build/scripts/Targets.fsx +++ b/installer/build/scripts/Targets.fsx @@ -16,12 +16,8 @@ open Fake.Runtime.Trace let productsToBuild = Commandline.parse() -let productDescriptions = productsToBuild - |> List.map(fun p -> - p.Versions - |> List.map(fun v -> sprintf "%s %s (%s)" p.Title v.FullVersion "Compile") - ) - |> List.concat +let productDescriptions = productsToBuild.Versions + |> List.map(fun v -> sprintf "%s %s (%s)" productsToBuild.Title v.FullVersion "Compile") |> String.concat Environment.NewLine if (getBuildParam "target" |> toLower <> "help") then @@ -32,7 +28,7 @@ Target "Clean" (fun _ -> ) Target "BuildInstaller" (fun () -> - productsToBuild |> List.iter (fun p -> BuildMsi p) + BuildMsi productsToBuild ) Target "Release" (fun () -> diff --git a/installer/src/Installer/Program.cs b/installer/src/Installer/Program.cs index 266c49c4..1088d7f1 100644 --- a/installer/src/Installer/Program.cs +++ b/installer/src/Installer/Program.cs @@ -33,16 +33,14 @@ static void Main(string[] args) } // Get the input files - var zipFilepath = args[1]; - var zipContentsDirectory = new System.IO.DirectoryInfo(zipFilepath.Replace(".zip", string.Empty)).FullName; - var driverFileInfo = GetDriverFileInfo(zipContentsDirectory); - var driverFilePath = System.IO.Path.Combine(zipContentsDirectory, driverFileInfo.FileName); + var driverInputFilesPath = args[1]; + var driverFileInfo = GetDriverFileInfo(driverInputFilesPath); + var driverFilePath = System.IO.Path.Combine(driverInputFilesPath, driverFileInfo.FileName); // Append any prerelease flags onto the version string var msiVersionString = $"{driverFileInfo.ProductVersion}{preRelease}"; - var msiFileName = System.IO.Path.GetFileNameWithoutExtension(zipFilepath); - var files = System.IO.Directory.GetFiles(zipContentsDirectory) + var files = System.IO.Directory.GetFiles(driverInputFilesPath) .Where(f => f.EndsWith(driverFilePath) == false) .Select(f => new File(f)) .Concat(new[] { new File(driverFilePath, new ODBCDriver("Elasticsearch Driver")) }) @@ -70,7 +68,7 @@ static void Main(string[] args) UrlInfoAbout = "https://www.elastic.co/products/stack/elasticsearch-sql", HelpLink = "https://discuss.elastic.co/c/elasticsearch" }, - OutFileName = msiFileName, + OutFileName = "esodbc-" + msiVersionString, Properties = new[] { new PropertyRef("NETFRAMEWORK40FULL"), @@ -120,7 +118,7 @@ static void Main(string[] args) //Compiler.LightOptions = "-sw1076 -sw1079 -sval"; Compiler.WixLocation = wixLocation; - project.WixVariables.Add("WixUILicenseRtf", System.IO.Path.Combine(zipContentsDirectory, "LICENSE.rtf")); + project.WixVariables.Add("WixUILicenseRtf", System.IO.Path.Combine(driverInputFilesPath, "LICENSE.rtf")); project.Include(WixExtension.NetFx); project.BuildMsi(); } From de911a1ea39a2f97c7c2a90134501f910fec0081 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Fri, 26 Oct 2018 16:10:37 +1100 Subject: [PATCH 15/16] Address PR questions --- installer/build/scripts/Commandline.fsx | 1 + installer/src/Installer/Properties/AssemblyInfo.cs | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/installer/build/scripts/Commandline.fsx b/installer/build/scripts/Commandline.fsx index 8adc478e..1ee9a560 100644 --- a/installer/build/scripts/Commandline.fsx +++ b/installer/build/scripts/Commandline.fsx @@ -88,6 +88,7 @@ Target: match candidate.ToLowerInvariant() with | "buildinstaller" | "clean" + | "help" | "release" -> Some candidate | _ -> None diff --git a/installer/src/Installer/Properties/AssemblyInfo.cs b/installer/src/Installer/Properties/AssemblyInfo.cs index 266ed97e..a0a983e8 100644 --- a/installer/src/Installer/Properties/AssemblyInfo.cs +++ b/installer/src/Installer/Properties/AssemblyInfo.cs @@ -1,16 +1,15 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("ODBCInstaller")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyTitle("Installer")] +[assembly: AssemblyDescription("Elasticsearch ODBC Installer.")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ODBCInstaller")] -[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyCompany("Elasticsearch B.V.")] +[assembly: AssemblyProduct("Elasticsearch ODBC Installer")] +[assembly: AssemblyCopyright("Copyright Elasticsearch B.V. ©")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] From 11dd759120649f084252568564efffcbf8270a38 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Fri, 26 Oct 2018 17:34:12 +1100 Subject: [PATCH 16/16] Add AssemblyInfo patching with version information --- installer/build/scripts/Build.fsx | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/installer/build/scripts/Build.fsx b/installer/build/scripts/Build.fsx index 9594133f..3258de53 100644 --- a/installer/build/scripts/Build.fsx +++ b/installer/build/scripts/Build.fsx @@ -7,14 +7,33 @@ open System open System.Diagnostics open System.IO open Fake +open Fake.Git open Products.Products open Products.Paths open Products open System.Text open Fake.FileHelper +open Fake.AssemblyInfoFile module Builder = + let patchAssemblyInformation (version:Version) = + let version = version.FullVersion + let commitHash = Information.getCurrentHash() + CreateCSharpAssemblyInfo (MsiDir @@ "Properties/AssemblyInfo.cs") + [Attribute.Title "Installer" + Attribute.Description "Elasticsearch ODBC Installer." + Attribute.Guid "44555887-c439-470c-944d-8866ec3d7067" + Attribute.Product "Elasticsearch ODBC Installer" + Attribute.Metadata("GitBuildHash", commitHash) + Attribute.Company "Elasticsearch B.V." + Attribute.Copyright "Elastic License. Copyright Elasticsearch." + Attribute.Trademark "Elasticsearch is a trademark of Elasticsearch B.V." + Attribute.Version version + Attribute.FileVersion version + Attribute.InformationalVersion version // Attribute.Version and Attribute.FileVersion normalize the version number, so retain the prelease suffix + ] + let Sign file (product : ProductVersions) = tracefn "Signing MSI" let release = getBuildParam "release" = "1" @@ -70,6 +89,8 @@ module Builder = product.Versions |> List.iter(fun version -> + patchAssemblyInformation (version) + let exitCode = ExecProcess (fun info -> info.FileName <- sprintf "%sOdbcInstaller" MsiBuildDir info.WorkingDirectory <- MsiDir