From 4f37dd6d2dc5bfd2332788628fb8466912dab766 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Wed, 31 Jul 2024 10:37:08 -0500 Subject: [PATCH 01/19] Update macos projects for .net 8 --- .config/dotnet-tools.json | 2 +- Examples/Examples.macOS.WebKit/Examples.macOS.WebKit.fsproj | 6 +++--- Examples/Examples.macOS.WebKit/Info.plist | 2 +- .../Interstellar.MacOS.WebKit.fsproj | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 68b85fe..38060e1 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -9,7 +9,7 @@ ] }, "paket": { - "version": "7.1.5", + "version": "8.0.3", "commands": [ "paket" ] diff --git a/Examples/Examples.macOS.WebKit/Examples.macOS.WebKit.fsproj b/Examples/Examples.macOS.WebKit/Examples.macOS.WebKit.fsproj index 9b08cf8..0cba5ea 100644 --- a/Examples/Examples.macOS.WebKit/Examples.macOS.WebKit.fsproj +++ b/Examples/Examples.macOS.WebKit/Examples.macOS.WebKit.fsproj @@ -1,11 +1,11 @@  - net6.0-macos + net8.0-macos Exe Example.macOS.WebKit InterstellarExample - 10.14 + 10.15 false @@ -29,4 +29,4 @@ - \ No newline at end of file + diff --git a/Examples/Examples.macOS.WebKit/Info.plist b/Examples/Examples.macOS.WebKit/Info.plist index 5ea8ca0..bba532f 100644 --- a/Examples/Examples.macOS.WebKit/Info.plist +++ b/Examples/Examples.macOS.WebKit/Info.plist @@ -11,7 +11,7 @@ CFBundleVersion 1 LSMinimumSystemVersion - 10.14 + 10.15 CFBundleDevelopmentRegion en CFBundleInfoDictionaryVersion diff --git a/src/Interstellar.MacOS.WebKit/Interstellar.MacOS.WebKit.fsproj b/src/Interstellar.MacOS.WebKit/Interstellar.MacOS.WebKit.fsproj index 642d56d..9de7909 100644 --- a/src/Interstellar.MacOS.WebKit/Interstellar.MacOS.WebKit.fsproj +++ b/src/Interstellar.MacOS.WebKit/Interstellar.MacOS.WebKit.fsproj @@ -1,7 +1,7 @@ - net6.0-macos + net8.0-macos Library Interstellar.macOS.WebKit @@ -33,4 +33,4 @@ - \ No newline at end of file + From 42d2792d9e7eff9e1c9330365ad01fd8fd946730 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 16:02:02 -0500 Subject: [PATCH 02/19] Switch to fsproj-style FAKE setup See: https://fake.build/guide/getting-started.html#Run-FAKE-using-a-dedicated-build-project --- Interstellar.MacOS.sln | 11 ++ build.cmd | 1 + build.sh | 3 + nupkg-hack.fsx => build/NupkgHack.fs | 7 +- build.fsx => build/build.fs | 240 +++++++++++++++------------ build/build.fsproj | 24 +++ build/paket.references | 9 + paket.dependencies | 11 +- paket.lock | 232 +++++++++++++++++++++++--- 9 files changed, 399 insertions(+), 139 deletions(-) create mode 100644 build.cmd create mode 100755 build.sh rename nupkg-hack.fsx => build/NupkgHack.fs (95%) rename build.fsx => build/build.fs (67%) create mode 100644 build/build.fsproj create mode 100644 build/paket.references diff --git a/Interstellar.MacOS.sln b/Interstellar.MacOS.sln index d6adadc..b9d05fd 100644 --- a/Interstellar.MacOS.sln +++ b/Interstellar.MacOS.sln @@ -16,6 +16,10 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Examples.macOS.WebKit", "Ex EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Interstellar.MacOS.WebKit", "src\Interstellar.MacOS.WebKit\Interstellar.MacOS.WebKit.fsproj", "{77FAE56F-23ED-4B30-B961-BBC7B492AAFE}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{2B1A37B9-3FA4-4FA3-A26F-32F2B5C2CF91}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "build", "build\build.fsproj", "{684CD76F-3338-42D4-8D53-0DA6F5F03C69}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -42,5 +46,12 @@ Global {77FAE56F-23ED-4B30-B961-BBC7B492AAFE}.Debug|Any CPU.Build.0 = Debug|Any CPU {77FAE56F-23ED-4B30-B961-BBC7B492AAFE}.Release|Any CPU.ActiveCfg = Release|Any CPU {77FAE56F-23ED-4B30-B961-BBC7B492AAFE}.Release|Any CPU.Build.0 = Release|Any CPU + {684CD76F-3338-42D4-8D53-0DA6F5F03C69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {684CD76F-3338-42D4-8D53-0DA6F5F03C69}.Debug|Any CPU.Build.0 = Debug|Any CPU + {684CD76F-3338-42D4-8D53-0DA6F5F03C69}.Release|Any CPU.ActiveCfg = Release|Any CPU + {684CD76F-3338-42D4-8D53-0DA6F5F03C69}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {684CD76F-3338-42D4-8D53-0DA6F5F03C69} = {2B1A37B9-3FA4-4FA3-A26F-32F2B5C2CF91} EndGlobalSection EndGlobal diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..e814f8e --- /dev/null +++ b/build.cmd @@ -0,0 +1 @@ +dotnet run --project ./build/build.fsproj -- %* diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..559f3a0 --- /dev/null +++ b/build.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +dotnet run --project build/build.fsproj -- "$@" diff --git a/nupkg-hack.fsx b/build/NupkgHack.fs similarity index 95% rename from nupkg-hack.fsx rename to build/NupkgHack.fs index 7c4a09d..3d12d0f 100644 --- a/nupkg-hack.fsx +++ b/build/NupkgHack.fs @@ -1,4 +1,5 @@ -#r "System.IO.Compression" +module build.NupkgHack + open System open System.IO open System.IO.Compression @@ -7,8 +8,6 @@ open System.Text.RegularExpressions open Fake.Core open Fake.IO -Environment.CurrentDirectory <- __SOURCE_DIRECTORY__ - let changeVersionConstraints text = Regex("(?<=id=\"Interstellar.+?\"\\s+version=\")[^[\\]]*?(?=\")") .Replace (text, MatchEvaluator(fun m -> sprintf "[%s]" m.Value)) @@ -42,4 +41,4 @@ let hackNupkgAtPath (path: string) = use file = File.Open (path, FileMode.Open, FileAccess.ReadWrite, FileShare.None) hackNupkgFromStream path file -//hackNupkgAtPath (Path.Combine ("artifacts", "Interstellar.Wpf.Chromium.nupkg")) \ No newline at end of file +//hackNupkgAtPath (Path.Combine ("artifacts", "Interstellar.Wpf.Chromium.nupkg")) diff --git a/build.fsx b/build/build.fs similarity index 67% rename from build.fsx rename to build/build.fs index 3405cbc..b506710 100644 --- a/build.fsx +++ b/build/build.fs @@ -1,25 +1,4 @@ -#load ".fake/build.fsx/intellisense.fsx" - -#if FAKE -#r "paket: -nuget FSharp.Core 4.7.0 -nuget FSharp.Data -nuget Fake.Core.Target -nuget Fake.DotNet.Cli -nuget Fake.DotNet.MSBuild -nuget Fake.DotNet.Paket -nuget Fake.Tools.Git //" -#endif -#load ".fake/build.fsx/intellisense.fsx" - -//#r "nuget: FSharp.Data" - -#if !FAKE -#r "netstandard" -// #r "Facades/netstandard" // https://github.com/ionide/ionide-vscode-fsharp/issues/839#issuecomment-396296095 -#endif - -#load "nupkg-hack.fsx" +module build.Main open System open System.Text.RegularExpressions @@ -32,9 +11,19 @@ open Fake.IO open Fake.IO.FileSystemOperators open Fake.IO.Globbing.Operators open Fake.Tools +open build -let srcDir = Path.Combine (__SOURCE_DIRECTORY__, "src") -let examplesDir = Path.Combine (__SOURCE_DIRECTORY__, "Examples") +let [] pathSep = + #if OS_WINDOWS + "\\" + #else + "/" + #endif +let [] repoDir = __SOURCE_DIRECTORY__ + pathSep + ".." + pathSep +let [] asmAndPackageInfoFilePath = "AssemblyAndPackageInfo.props" + +let srcDir = Path.Combine (repoDir, "src") +let examplesDir = Path.Combine (repoDir, "Examples") module Projects = let coreLib = Path.Combine (srcDir, "Interstellar.Core", "Interstellar.Core.fsproj") @@ -42,17 +31,18 @@ module Projects = let winFormsLib = Path.Combine (srcDir, "Interstellar.WinForms.Chromium", "Interstellar.WinForms.Chromium.fsproj") let wpfLib = Path.Combine (srcDir, "Interstellar.Wpf.Chromium", "Interstellar.Wpf.Chromium.fsproj") let macosWkLib = Path.Combine (srcDir, "Interstellar.macOS.WebKit", "Interstellar.macOS.WebKit.fsproj") - let wpfExampleApp = Path.Combine (examplesDir, "Examples.wpf.Chromium", "Examples.wpf.Chromium.fsproj") + let winFormsExampleApp = Path.Combine (examplesDir, "Examples.winForms.Chromium", "Examples.WinForms.Chromium.fsproj") + let wpfExampleApp = Path.Combine (examplesDir, "Examples.Wpf.Chromium", "Examples.Wpf.Chromium.fsproj") let macosExampleApp = Path.Combine (examplesDir, "Examples.macOS.WebKit", "Examples.macOS.WebKit.fsproj") module Solutions = - let windows = "Interstellar.Windows.sln" - let macos = "Interstellar.MacOS.sln" + let windows = Path.Combine (repoDir, "Interstellar.Windows.sln") + let macos = Path.Combine (repoDir, "Interstellar.MacOS.sln") -let artifactsPath = Path.Combine (__SOURCE_DIRECTORY__, "artifacts") +let artifactsPath = Path.Combine (repoDir, "artifacts") module Templates = - let path = Path.Combine (__SOURCE_DIRECTORY__, "templates") + let path = Path.Combine (repoDir, "templates") let nuspecPaths = !! (Path.Combine (path, "*.nuspec")) let allProjects = @@ -65,10 +55,9 @@ module Templates = !! (Path.Combine (path, "**/*macos*.fsproj")) |> Seq.map (fun p -> p) -let [] _srcDir = __SOURCE_DIRECTORY__ -type PackageInfo = XmlProvider<"AssemblyAndPackageInfo.props", ResolutionFolder=_srcDir> -let packageInfo = PackageInfo.Load(Path.Combine(__SOURCE_DIRECTORY__, "AssemblyAndPackageInfo.props")) -let packageProps = packageInfo.PropertyGroup +type PackageInfo = XmlProvider +let packageInfo = lazy(PackageInfo.Load(Path.Combine(repoDir, asmAndPackageInfoFilePath))) +let packageProps = lazy(packageInfo.Force().PropertyGroup) let projAsTarget (projFileName: string) = projFileName.Split('/').[0].Replace(".", "_") @@ -85,7 +74,7 @@ let quiet (defaults: DotNet.BuildOptions) = { defaults with MSBuildParams = { de type PackageVersionInfo = { versionName: string; versionChanges: string } let scrapeChangelog () = - let changelog = System.IO.File.ReadAllText "CHANGELOG.md" + let changelog = System.IO.File.ReadAllText (Path.Combine (repoDir, "CHANGELOG.md")) let regex = Regex("""## (?.*)\n+(?(.|\n)*?)##""") let result = seq { for m in regex.Matches changelog -> @@ -98,18 +87,18 @@ let scrapeChangelog () = } result -let changelog = scrapeChangelog () |> Seq.toList -let currentVersionInfo = changelog.[0] +let changelog = lazy (scrapeChangelog () |> Seq.toList) +let currentVersionInfo = lazy (changelog.Force()[0]) /// Indicates the extra version number that's added to the template package. When releasing a new version of Interstellar, reset this to 0. Whenever making a /// change to just the template, increment this. let currentTemplateMinorVersion = 1 -let asmPkgInfo = System.IO.File.ReadAllText "AssemblyAndPackageInfo.props" +let asmPkgInfo = lazy (System.IO.File.ReadAllText "AssemblyAndPackageInfo.props") // Extract assembly info property value let extractAsmPkgInfoProp propName = - let r = new Regex(sprintf "(<%s>)(?'value'.*)()" propName propName) - r.Match(asmPkgInfo).Groups.["value"].Value + let r = Regex(sprintf "(<%s>)(?'value'.*)()" propName propName) + r.Match(asmPkgInfo.Force()).Groups.["value"].Value let addProperties props (defaults: DotNet.BuildOptions) = { defaults with MSBuildParams = { defaults.MSBuildParams with Properties = [yield! defaults.MSBuildParams.Properties; yield! props]} } @@ -133,22 +122,21 @@ let projects = [ let buildOptions setParams = let buildMode = Environment.environVarOrDefault "buildMode" "Release" - let commit = Git.Information.getCurrentSHA1 __SOURCE_DIRECTORY__ + let commit = Git.Information.getCurrentSHA1 repoDir quiet << setParams << addProperties ["Configuration", buildMode; "RepositoryCommit", commit] << - addVersionInfo currentVersionInfo << setParams + addVersionInfo (currentVersionInfo.Force()) << setParams let dotnetBuild (setParams: DotNet.BuildOptions -> DotNet.BuildOptions) project = project |> DotNet.build (buildOptions setParams) // *** Define Targets *** -Target.create "PackageDescription" (fun _ -> +let PackageDescription _ = let changelog = scrapeChangelog () let currentVersion = Seq.head changelog let str = sprintf "Changes in package version %s\n%s" currentVersion.versionName currentVersion.versionChanges Trace.log str -) let doRestore (dotnetBuildOptions: DotNet.BuildOptions) = { dotnetBuildOptions with MSBuildParams = { dotnetBuildOptions.MSBuildParams with DoRestore = true } } @@ -158,10 +146,10 @@ let getNupkgPath version (projPath: string) = Path.Combine ([|projDir; "bin"; "Release"; sprintf "%s%s.nupkg" (Path.GetFileNameWithoutExtension projPath) vstr|]) -Target.create "Clean" (fun args -> +let Clean _ = Trace.log " --- Cleaning --- " for proj in projects do - let vstr = currentVersionInfo.versionName + let vstr = currentVersionInfo.Force().versionName File.delete (getNupkgPath (Some vstr) proj) !! (Path.Combine (artifactsPath, "**/*.nupkg")) |> File.deleteAll let projects = @@ -173,15 +161,27 @@ Target.create "Clean" (fun args -> Shell.deleteDir ".fsdocs" Shell.deleteDir "output" Shell.deleteDir "temp" -) -Target.create "Restore" (fun _ -> +let Restore _ = DotNet.exec id "tool" "restore" |> ignore let proj = if Environment.isWindows then Solutions.windows else if Environment.isMacOS then Solutions.macos else failwithf "Platform not supported" - DotNet.restore id proj |> ignore -) - -Target.create "Build" (fun args -> + // let projects = [ + // Projects.coreLib + // if Environment.isWindows then + // Projects.winFormsLib + // Projects.wpfLib + // Projects.winFormsExampleApp + // Projects.wpfExampleApp + // elif Environment.isMacOS then + // Projects.macosWkLib + // Projects.macosExampleApp + // ] + // for proj in projects do + // Trace.logf $"Restoring: %s{proj}" + // DotNet.restore id proj + DotNet.restore id proj + +let Build _ = Trace.log " --- Building --- " // if Environment.isWindows then // msbuild (addTarget "Restore") Solutions.windows @@ -196,58 +196,52 @@ Target.create "Build" (fun args -> dotnetBuild (doRestore << addTarget "Build") Projects.wpfLib else if Environment.isMacOS then dotnetBuild (doRestore << addTarget "Build") Projects.macosWkLib -) -Target.create "Run" (fun _ -> +let Run _ = Trace.log " --- Running example app --- " if Environment.isWindows then DotNet.exec id "run" ("-p " + Projects.wpfExampleApp) |> ignore else Shell.cd (Path.GetDirectoryName Projects.macosExampleApp) dotnetBuild (addTarget "Run") Projects.macosExampleApp -) -Target.create "Test" (fun _ -> +let Test _ = Trace.log " --- Running tests --- " // TODO: add some tests! -) -Target.create "BuildDocs" (fun _ -> +let BuildDocs _ = Trace.log " --- Building documentation --- " let result = DotNet.exec id "fsdocs" ("build --clean --projects=" + Projects.coreLib + " --property Configuration=Release") Trace.logfn "%s" (result.ToString()) -) -Target.create "ReleaseDocs" (fun _ -> +let ReleaseDocs _ = Trace.log "--- Releasing documentation --- " - Git.CommandHelper.runSimpleGitCommand "." (sprintf "clone %s temp/gh-pages --depth 1 -b gh-pages" packageProps.RepositoryUrl) |> ignore + Git.CommandHelper.runSimpleGitCommand "." (sprintf "clone %s temp/gh-pages --depth 1 -b gh-pages" (packageProps.Force().RepositoryUrl)) |> ignore Shell.copyRecursive "output" "temp/gh-pages" true |> printfn "%A" Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" "add ." |> printfn "%s" let commit = Git.Information.getCurrentHash () Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" - (sprintf """commit -a -m "Update generated docs for version %s from %s" """ currentVersionInfo.versionName commit) + (sprintf """commit -a -m "Update generated docs for version %s from %s" """ (currentVersionInfo.Force().versionName) commit) |> printfn "%s" Git.Branches.pushBranch "temp/gh-pages" "origin" "gh-pages" -) -Target.create "Pack" (fun args -> +let Pack _ = Trace.log " --- Packing NuGet packages --- " - let props = ["SolutionDir", __SOURCE_DIRECTORY__; "RepositoryCommit", Git.Information.getCurrentSHA1 __SOURCE_DIRECTORY__] + let props = ["SolutionDir", repoDir; "RepositoryCommit", Git.Information.getCurrentSHA1 repoDir] let dotnetBuild f = dotnetBuild (doRestore << addTargets ["Pack"] << addProperties props << f) - Trace.log (sprintf "PROJECT LIST: %A" projects) + Trace.logf "PROJECT LIST: %A" projects for proj in projects do dotnetBuild id proj // Collect all generated package archives into a common folder - let vstr = currentVersionInfo.versionName + let vstr = currentVersionInfo.Force().versionName let oldNupkgPath = getNupkgPath (Some vstr) proj Shell.mkdir artifactsPath Shell.moveFile artifactsPath oldNupkgPath // see https://github.com/fsprojects/Interstellar/issues/3 !! (Path.Combine (artifactsPath, "**", "*.nupkg")) - |> Seq.iter (``Nupkg-hack``.hackNupkgAtPath) -) + |> Seq.iter (NupkgHack.hackNupkgAtPath) -Target.create "BuildTemplateProjects" (fun args -> +let BuildTemplateProjects _ = Trace.log " --- Building template projects --- " if Environment.isWindows then let p = [ yield! Templates.winProjects ] @@ -261,9 +255,9 @@ Target.create "BuildTemplateProjects" (fun args -> dotnetBuild (addTarget "Restore") proj for proj in p do dotnetBuild (addTarget "Build") proj -) -Target.create "PackTemplates" (fun _ -> + +let PackTemplates _ = Trace.log " --- Packing template packages --- " Shell.mkdir artifactsPath for nuspecPath in Templates.nuspecPaths do @@ -272,48 +266,78 @@ Target.create "PackTemplates" (fun _ -> opt with WorkingDir = Path.GetDirectoryName nuspecPath OutputPath = artifactsPath - Version = sprintf "%s.%d" currentVersionInfo.versionName currentTemplateMinorVersion + Version = sprintf "%s.%d" (currentVersionInfo.Force().versionName) currentTemplateMinorVersion }) nuspecPath -) -Target.create "PackAll" ignore +let PackAll _ = () -Target.create "TestAll" ignore +let TestAll _ = () -Target.create "All" ignore +let All _ = () open Fake.Core.TargetOperators -// *** Define Dependencies *** -"Restore" - ==> "Build" - ==> "Pack" - ==> "PackAll" - ==> "All" - -"Restore" - ==> "Run" - -"PackTemplates" - ==> "PackAll" - ==> "All" - -"Build" - ==> "BuildDocs" - ==> "ReleaseDocs" - ==> "All" - -"BuildTemplateProjects" - ==> "TestAll" - -// "Build" - // ==> "Test" -"Test" - ==> "TestAll" - -"Build" - ==> "BuildTemplateProjects" - -// *** Start Build *** -Target.runOrDefaultWithArguments "Build" \ No newline at end of file +// FS0020: The result of this expression has type 'string' and is explicitly ignored. ... +#nowarn "0020" + +let initTargets () = + Target.create "PackageDescription" PackageDescription + Target.create "Clean" Clean + Target.create "Restore" Restore + Target.create "Build" Build + Target.create "Run" Run + Target.create "Test" Test + Target.create "BuildDocs" BuildDocs + Target.create "ReleaseDocs" ReleaseDocs + Target.create "Pack" Pack + Target.create "BuildTemplateProjects" BuildTemplateProjects + Target.create "PackTemplates" PackTemplates + Target.create "PackAll" PackAll + Target.create "TestAll" TestAll + Target.create "All" All + + // *** Define Dependencies *** + "Restore" + ==> "Build" + ==> "Pack" + ==> "PackAll" + ==> "All" + + "Restore" + ==> "Run" + + "PackTemplates" + ==> "PackAll" + ==> "All" + + "Build" + ==> "BuildDocs" + ==> "ReleaseDocs" + ==> "All" + + "BuildTemplateProjects" + ==> "TestAll" + + // "Build" + // ==> "Test" + "Test" + ==> "TestAll" + + "Build" + ==> "BuildTemplateProjects" + +[] +let main args = + Environment.CurrentDirectory <- __SOURCE_DIRECTORY__ + + args + |> Array.toList + |> Context.FakeExecutionContext.Create false "build.fs" + |> Context.RuntimeContext.Fake + |> Context.setExecutionContext + + initTargets () + Target.runOrDefaultWithArguments "Build" + + 0 diff --git a/build/build.fsproj b/build/build.fsproj new file mode 100644 index 0000000..b521f2e --- /dev/null +++ b/build/build.fsproj @@ -0,0 +1,24 @@ + + + + net8.0 + Exe + true + + + $([System.OperatingSystem]::IsWindows()) + $([System.OperatingSystem]::IsLinux()) + $([System.OperatingSystem]::IsMacOS()) + + + OS_WINDOWS + OS_LINUX + OS_MACOS + + + + + + + + diff --git a/build/paket.references b/build/paket.references new file mode 100644 index 0000000..21ec6f6 --- /dev/null +++ b/build/paket.references @@ -0,0 +1,9 @@ +group Build +FSharp.Core +FSharp.Data +FSharp.DependencyManager.Paket +Fake.Core.Target +Fake.DotNet.Cli +Fake.DotNet.MSBuild +Fake.DotNet.Paket +Fake.Tools.Git diff --git a/paket.dependencies b/paket.dependencies index f32c34e..4bfe68f 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -9,7 +9,14 @@ nuget NuGet.Build.Tasks.Pack nuget System.Text.Encodings.Web group Build - source https://api.nuget.org/v3/index.json + framework: net8.0 - nuget FSharp.DependencyManager.Paket \ No newline at end of file + nuget Fake.Tools.Git + nuget FSharp.Core ~> 8.0 + nuget FSharp.Data + nuget FSharp.DependencyManager.Paket ~> 7.0 + nuget Fake.Core.Target ~> 6.0.0 + nuget Fake.DotNet.Cli ~> 6.0.0 + nuget Fake.DotNet.MSBuild ~> 6.0.0 + nuget Fake.DotNet.Paket ~> 6.0.0 diff --git a/paket.lock b/paket.lock index 2634203..bccb054 100644 --- a/paket.lock +++ b/paket.lock @@ -1,36 +1,218 @@ -RESTRICTION: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-macos) (== net6.0-windows7.0) (== netstandard2.0) +RESTRICTION: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) NUGET remote: https://api.nuget.org/v3/index.json BlackFox.MasterOfFoo (1.0.6) - FSharp.Core (>= 4.0.0.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net45)) (&& (== net6.0-macos) (>= net45)) (&& (== net6.0-windows7.0) (>= net45)) (&& (== netstandard2.0) (>= net45)) - FSharp.Core (>= 4.2.3) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (== net5.0-windows7.0) (== net6.0-macos) (== net6.0-windows7.0) (== netstandard2.0) - cef.redist.x64 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - cef.redist.x86 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + FSharp.Core (>= 4.0.0.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net45)) (&& (== net6.0-windows7.0) (>= net45)) (&& (== net8.0) (>= net45)) (&& (== net8.0-macos) (>= net45)) (&& (== netstandard2.0) (>= net45)) + FSharp.Core (>= 4.2.3) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) + cef.redist.x64 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + cef.redist.x86 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) cef.redist.x64 (86.0.24) cef.redist.x86 (86.0.24) CefSharp.WinForms (86.0.241) - CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) CefSharp.Wpf (86.0.241) - CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - FSharp.Core (6.0.5) - NuGet.Build.Tasks.Pack (6.2) - System.Buffers (4.5.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp3.1)) (&& (== net6.0-macos) (>= net461)) (&& (== net6.0-macos) (< netcoreapp3.1)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Memory (4.5.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp3.1)) (&& (== net6.0-macos) (>= net461)) (&& (== net6.0-macos) (< netcoreapp3.1)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (== net6.0-macos) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-macos) (< netcoreapp2.0) (< xamarinmac)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (== netstandard2.0) - System.Numerics.Vectors (>= 4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net6.0-macos) (>= net461)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== netstandard2.0) (>= net461)) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netcoreapp2.1)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= uap10.1)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (== net6.0-macos) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.1)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= uap10.1)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Numerics.Vectors (4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-macos) (>= net461)) (&& (== net6.0-macos) (< netcoreapp2.0) (< xamarinmac)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (6.0) - System.Text.Encodings.Web (6.0) - System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp3.1)) (&& (== net6.0-macos) (>= net461)) (&& (== net6.0-macos) (< netcoreapp3.1)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp3.1)) (&& (== net6.0-macos) (>= net461)) (&& (== net6.0-macos) (< netcoreapp3.1)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) + CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + FSharp.Core (8.0.301) + NuGet.Build.Tasks.Pack (6.10.1) + System.Buffers (4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (== netstandard2.0) + System.Memory (4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) + System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net472) (== net5.0-windows7.0)) (&& (== net472) (== net6.0-windows7.0)) (&& (== net472) (== net8.0)) (&& (== net472) (== net8.0-macos)) (&& (== net472) (< net45)) (&& (== net48) (== net5.0-windows7.0)) (&& (== net48) (== net6.0-windows7.0)) (&& (== net48) (== net8.0)) (&& (== net48) (== net8.0-macos)) (&& (== net48) (< net45)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) + System.Numerics.Vectors (>= 4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net8.0) (>= net461)) (&& (== net8.0-macos) (>= net461)) (&& (== netstandard2.0) (>= net461)) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netcoreapp2.1)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= uap10.1)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.1)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= uap10.1)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) + System.Numerics.Vectors (4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.1)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (&& (== net8.0-macos) (>= uap10.1)) (== netstandard2.0) + System.Text.Encodings.Web (8.0) + System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Memory (>= 4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (== netstandard2.0) GROUP Build +RESTRICTION: == net8.0 NUGET remote: https://api.nuget.org/v3/index.json - FSharp.Core (5.0) - restriction: >= netstandard2.0 - FSharp.DependencyManager.Paket (7.1.5) - FSharp.Core (5.0) - restriction: >= netstandard2.0 + BlackFox.VsWhere (1.1) + FSharp.Core (>= 4.2.3) + Microsoft.Win32.Registry (>= 4.7) + Fake.Core.CommandLineParsing (6.0) + FParsec (>= 1.1.1) + FSharp.Core (>= 6.0.3) + Fake.Core.Context (6.0) + FSharp.Core (>= 6.0.3) + Fake.Core.Environment (6.0) + FSharp.Core (>= 6.0.3) + Fake.Core.FakeVar (6.0) + Fake.Core.Context (>= 6.0) + FSharp.Core (>= 6.0.3) + Fake.Core.Process (6.0) + Fake.Core.Environment (>= 6.0) + Fake.Core.FakeVar (>= 6.0) + Fake.Core.String (>= 6.0) + Fake.Core.Trace (>= 6.0) + Fake.IO.FileSystem (>= 6.0) + FSharp.Core (>= 6.0.3) + System.Collections.Immutable (>= 6.0) + Fake.Core.SemVer (6.0) + FSharp.Core (>= 6.0.3) + Fake.Core.String (6.0) + FSharp.Core (>= 6.0.3) + Fake.Core.Target (6.0) + Fake.Core.CommandLineParsing (>= 6.0) + Fake.Core.Context (>= 6.0) + Fake.Core.Environment (>= 6.0) + Fake.Core.FakeVar (>= 6.0) + Fake.Core.Process (>= 6.0) + Fake.Core.String (>= 6.0) + Fake.Core.Trace (>= 6.0) + FSharp.Control.Reactive (>= 5.0.2) + FSharp.Core (>= 6.0.3) + Fake.Core.Tasks (6.0) + Fake.Core.Trace (>= 6.0) + FSharp.Core (>= 6.0.3) + Fake.Core.Trace (6.0) + Fake.Core.Environment (>= 6.0) + Fake.Core.FakeVar (>= 6.0) + FSharp.Core (>= 6.0.3) + Fake.Core.Xml (6.0) + Fake.Core.String (>= 6.0) + FSharp.Core (>= 6.0.3) + Fake.DotNet.Cli (6.0) + Fake.Core.Environment (>= 6.0) + Fake.Core.Process (>= 6.0) + Fake.Core.String (>= 6.0) + Fake.Core.Trace (>= 6.0) + Fake.DotNet.MSBuild (>= 6.0) + Fake.DotNet.NuGet (>= 6.0) + Fake.IO.FileSystem (>= 6.0) + FSharp.Core (>= 6.0.3) + Mono.Posix.NETStandard (>= 1.0) + Newtonsoft.Json (>= 13.0.1) + Fake.DotNet.MSBuild (6.0) + BlackFox.VsWhere (>= 1.1) + Fake.Core.Environment (>= 6.0) + Fake.Core.Process (>= 6.0) + Fake.Core.String (>= 6.0) + Fake.Core.Trace (>= 6.0) + Fake.IO.FileSystem (>= 6.0) + FSharp.Core (>= 6.0.3) + MSBuild.StructuredLogger (>= 2.1.545) + Fake.DotNet.NuGet (6.0) + Fake.Core.Environment (>= 6.0) + Fake.Core.Process (>= 6.0) + Fake.Core.SemVer (>= 6.0) + Fake.Core.String (>= 6.0) + Fake.Core.Tasks (>= 6.0) + Fake.Core.Trace (>= 6.0) + Fake.Core.Xml (>= 6.0) + Fake.IO.FileSystem (>= 6.0) + Fake.Net.Http (>= 6.0) + FSharp.Core (>= 6.0.3) + Newtonsoft.Json (>= 13.0.1) + NuGet.Protocol (>= 6.0) + Fake.DotNet.Paket (6.0) + Fake.Core.Process (>= 6.0) + Fake.Core.String (>= 6.0) + Fake.Core.Trace (>= 6.0) + Fake.DotNet.Cli (>= 6.0) + Fake.IO.FileSystem (>= 6.0) + FSharp.Core (>= 6.0.3) + Fake.IO.FileSystem (6.0) + Fake.Core.String (>= 6.0) + Fake.Core.Trace (>= 6.0) + FSharp.Core (>= 6.0.3) + Fake.Net.Http (6.0) + Fake.Core.Trace (>= 6.0) + FSharp.Core (>= 6.0.3) + Fake.Tools.Git (6.0) + Fake.Core.Environment (>= 6.0) + Fake.Core.Process (>= 6.0) + Fake.Core.SemVer (>= 6.0) + Fake.Core.String (>= 6.0) + Fake.Core.Trace (>= 6.0) + Fake.IO.FileSystem (>= 6.0) + FSharp.Core (>= 6.0.3) + FParsec (1.1.1) + FSharp.Core (>= 4.3.4) + FSharp.Control.Reactive (5.0.5) + FSharp.Core (>= 4.7.2) + System.Reactive (>= 5.0 < 6.0) + FSharp.Core (8.0.301) + FSharp.Data (6.4) + FSharp.Core (>= 6.0.1) + FSharp.Data.Csv.Core (>= 6.4) + FSharp.Data.Html.Core (>= 6.4) + FSharp.Data.Http (>= 6.4) + FSharp.Data.Json.Core (>= 6.4) + FSharp.Data.Runtime.Utilities (>= 6.4) + FSharp.Data.WorldBank.Core (>= 6.4) + FSharp.Data.Xml.Core (>= 6.4) + FSharp.Data.Csv.Core (6.4) + FSharp.Core (>= 6.0.1) + FSharp.Data.Runtime.Utilities (>= 6.4) + FSharp.Data.Html.Core (6.4) + FSharp.Core (>= 6.0.1) + FSharp.Data.Csv.Core (>= 6.4) + FSharp.Data.Runtime.Utilities (>= 6.4) + FSharp.Data.Http (6.4) + FSharp.Core (>= 6.0.1) + FSharp.Data.Json.Core (6.4) + FSharp.Core (>= 6.0.1) + FSharp.Data.Http (>= 6.4) + FSharp.Data.Runtime.Utilities (>= 6.4) + FSharp.Data.Runtime.Utilities (6.4) + FSharp.Core (>= 6.0.1) + FSharp.Data.Http (>= 6.4) + FSharp.Data.WorldBank.Core (6.4) + FSharp.Core (>= 6.0.1) + FSharp.Data.Http (>= 6.4) + FSharp.Data.Json.Core (>= 6.4) + FSharp.Data.Runtime.Utilities (>= 6.4) + FSharp.Data.Xml.Core (6.4) + FSharp.Core (>= 6.0.1) + FSharp.Data.Http (>= 6.4) + FSharp.Data.Json.Core (>= 6.4) + FSharp.Data.Runtime.Utilities (>= 6.4) + FSharp.DependencyManager.Paket (7.0) + FSharp.Core (>= 5.0) + Microsoft.Build.Framework (17.10.4) + Microsoft.Build.Utilities.Core (17.10.4) + Microsoft.Build.Framework (>= 17.10.4) + Microsoft.NET.StringTools (>= 17.10.4) + System.Collections.Immutable (>= 8.0) + System.Configuration.ConfigurationManager (>= 8.0) + Microsoft.NET.StringTools (17.10.4) + Microsoft.Win32.Registry (5.0) + System.Security.AccessControl (>= 5.0) + System.Security.Principal.Windows (>= 5.0) + Mono.Posix.NETStandard (1.0) + MSBuild.StructuredLogger (2.2.291) + Microsoft.Build.Framework (>= 17.5) + Microsoft.Build.Utilities.Core (>= 17.5) + Newtonsoft.Json (13.0.3) + NuGet.Common (6.10.1) + NuGet.Frameworks (>= 6.10.1) + NuGet.Configuration (6.10.1) + NuGet.Common (>= 6.10.1) + System.Security.Cryptography.ProtectedData (>= 4.4) + NuGet.Frameworks (6.10.1) + NuGet.Packaging (6.10.1) + Newtonsoft.Json (>= 13.0.3) + NuGet.Configuration (>= 6.10.1) + NuGet.Versioning (>= 6.10.1) + System.Security.Cryptography.Pkcs (>= 6.0.4) + NuGet.Protocol (6.10.1) + NuGet.Packaging (>= 6.10.1) + NuGet.Versioning (6.10.1) + System.Collections.Immutable (8.0) + System.Configuration.ConfigurationManager (8.0) + System.Diagnostics.EventLog (>= 8.0) + System.Security.Cryptography.ProtectedData (>= 8.0) + System.Diagnostics.EventLog (8.0) + System.Formats.Asn1 (8.0.1) + System.Reactive (5.0) + System.Security.AccessControl (6.0.1) + System.Security.Cryptography.Pkcs (8.0) + System.Formats.Asn1 (>= 8.0) + System.Security.Cryptography.ProtectedData (8.0) + System.Security.Principal.Windows (5.0) From a9b54d9d88343998be31235419ee4150e0d39747 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 16:10:52 -0500 Subject: [PATCH 03/19] Add .editorconfig --- .editorconfig | 27 + .gitignore | 2 +- AssemblyAndPackageInfo.props | 2 +- build.fsx.lock | 681 ------------------ src/Interstellar.Core/Api.fs | 6 +- src/Interstellar.Core/IBrowserExtensions.fs | 2 +- .../Interstellar.Core.fsproj | 2 +- src/Interstellar.Core/Script1.fsx | 2 +- src/Interstellar.Core/paket.references | 2 +- src/Interstellar.MacOS.WebKit/Browser.fs | 4 +- src/Interstellar.MacOS.WebKit/BrowserApp.fs | 4 +- .../BrowserWindow.fs | 4 +- .../paket.references | 2 +- .../BrowserApp.fs | 2 +- .../BrowserWindow.fs | 2 +- .../Interstellar.WinForms.Chromium.fsproj | 2 +- .../paket.references | 2 +- .../Platform.fs | 6 +- src/Interstellar.Wpf.Chromium/BrowserApp.fs | 4 +- .../BrowserWindow.fs | 4 +- .../Interstellar.Wpf.Chromium.fsproj | 2 +- .../paket.references | 2 +- .../src/.template.config/template.json | 2 +- .../InterstellarApp.Core.fsproj | 2 +- .../src/InterstellarApp.Core/Library.fs | 6 +- .../InterstellarApp.Windows.fsproj | 2 +- .../src/InterstellarApp.Windows/Program.fs | 4 +- .../src/InterstellarApp.macOS/AppDelegate.fs | 4 +- .../InterstellarApp.macOS.fsproj | 2 +- templates/minimal/src/global.json | 2 +- 30 files changed, 68 insertions(+), 722 deletions(-) create mode 100644 .editorconfig delete mode 100644 build.fsx.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f85d678 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,27 @@ +# top-most EditorConfig file +root = true + +[*] +end_of_line = lf + +[*.{fs,fsi,fsx}] +charset = utf-8 +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +max_line_length = 120 +insert_final_newline = true + +[*.{proto,props,targets,fsproj,csproj}] +indent_size = 2 +indent_style = space +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{yml,json,md,sh,ps1}] +trim_trailing_whitespace = true +insert_final_newline = true + +[{Dockerfile,.editorconfig,.gitignore}] +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.gitignore b/.gitignore index e67a654..311f7a6 100644 --- a/.gitignore +++ b/.gitignore @@ -415,4 +415,4 @@ output/ temp/ # CEF -GPUCache/ \ No newline at end of file +GPUCache/ diff --git a/AssemblyAndPackageInfo.props b/AssemblyAndPackageInfo.props index e30f659..90dd9de 100644 --- a/AssemblyAndPackageInfo.props +++ b/AssemblyAndPackageInfo.props @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/build.fsx.lock b/build.fsx.lock deleted file mode 100644 index 0ae5802..0000000 --- a/build.fsx.lock +++ /dev/null @@ -1,681 +0,0 @@ -STORAGE: NONE -RESTRICTION: || (== net6.0) (== netstandard2.0) -NUGET - remote: https://api.nuget.org/v3/index.json - BlackFox.VsWhere (1.1) - FSharp.Core (>= 4.2.3) - Microsoft.Win32.Registry (>= 4.7) - Fake.Core.CommandLineParsing (5.19.1) - FParsec (>= 1.0.3) - FSharp.Core (>= 4.7) - Fake.Core.Context (5.19.1) - FSharp.Core (>= 4.7) - Fake.Core.Environment (5.19.1) - FSharp.Core (>= 4.7) - Fake.Core.FakeVar (5.19.1) - Fake.Core.Context (>= 5.19.1) - FSharp.Core (>= 4.7) - Fake.Core.Process (5.19.1) - Fake.Core.Environment (>= 5.19.1) - Fake.Core.FakeVar (>= 5.19.1) - Fake.Core.String (>= 5.19.1) - Fake.Core.Trace (>= 5.19.1) - Fake.IO.FileSystem (>= 5.19.1) - FSharp.Core (>= 4.7) - System.Diagnostics.Process (>= 4.3) - Fake.Core.SemVer (5.19.1) - FSharp.Core (>= 4.7) - System.Runtime.Numerics (>= 4.3) - Fake.Core.String (5.19.1) - FSharp.Core (>= 4.7) - Fake.Core.Target (5.19.1) - Fake.Core.CommandLineParsing (>= 5.19.1) - Fake.Core.Context (>= 5.19.1) - Fake.Core.Environment (>= 5.19.1) - Fake.Core.FakeVar (>= 5.19.1) - Fake.Core.Process (>= 5.19.1) - Fake.Core.String (>= 5.19.1) - Fake.Core.Trace (>= 5.19.1) - FSharp.Control.Reactive (>= 4.2) - FSharp.Core (>= 4.7) - System.Reactive.Compatibility (>= 4.3.1) - Fake.Core.Tasks (5.19.1) - Fake.Core.Trace (>= 5.19.1) - FSharp.Core (>= 4.7) - Fake.Core.Trace (5.19.1) - Fake.Core.Environment (>= 5.19.1) - Fake.Core.FakeVar (>= 5.19.1) - FSharp.Core (>= 4.7) - Fake.Core.Xml (5.19.1) - Fake.Core.String (>= 5.19.1) - FSharp.Core (>= 4.7) - System.Xml.ReaderWriter (>= 4.3.1) - System.Xml.XDocument (>= 4.3) - System.Xml.XPath (>= 4.3) - System.Xml.XPath.XDocument (>= 4.3) - System.Xml.XPath.XmlDocument (>= 4.3) - Fake.DotNet.Cli (5.19.1) - Fake.Core.Environment (>= 5.19.1) - Fake.Core.Process (>= 5.19.1) - Fake.Core.String (>= 5.19.1) - Fake.Core.Trace (>= 5.19.1) - Fake.DotNet.MSBuild (>= 5.19.1) - Fake.DotNet.NuGet (>= 5.19.1) - Fake.IO.FileSystem (>= 5.19.1) - FSharp.Core (>= 4.7) - Mono.Posix.NETStandard (>= 1.0) - Newtonsoft.Json (>= 12.0.3) - Fake.DotNet.MSBuild (5.19.1) - BlackFox.VsWhere (>= 1.0) - Fake.Core.Environment (>= 5.19.1) - Fake.Core.Process (>= 5.19.1) - Fake.Core.String (>= 5.19.1) - Fake.Core.Trace (>= 5.19.1) - Fake.IO.FileSystem (>= 5.19.1) - FSharp.Core (>= 4.7) - MSBuild.StructuredLogger (>= 2.0.152) - Fake.DotNet.NuGet (5.19.1) - Fake.Core.Environment (>= 5.19.1) - Fake.Core.Process (>= 5.19.1) - Fake.Core.SemVer (>= 5.19.1) - Fake.Core.String (>= 5.19.1) - Fake.Core.Tasks (>= 5.19.1) - Fake.Core.Trace (>= 5.19.1) - Fake.Core.Xml (>= 5.19.1) - Fake.IO.FileSystem (>= 5.19.1) - Fake.Net.Http (>= 5.19.1) - FSharp.Core (>= 4.7) - Newtonsoft.Json (>= 12.0.3) - NuGet.Protocol (>= 4.9.4) - System.Net.Http (>= 4.3.4) - Fake.DotNet.Paket (5.19.1) - Fake.Core.Process (>= 5.19.1) - Fake.Core.String (>= 5.19.1) - Fake.Core.Trace (>= 5.19.1) - Fake.DotNet.Cli (>= 5.19.1) - Fake.IO.FileSystem (>= 5.19.1) - FSharp.Core (>= 4.7) - Fake.IO.FileSystem (5.19.1) - Fake.Core.String (>= 5.19.1) - FSharp.Core (>= 4.7) - System.Diagnostics.FileVersionInfo (>= 4.3) - System.IO.FileSystem.Watcher (>= 4.3) - Fake.Net.Http (5.19.1) - Fake.Core.Trace (>= 5.19.1) - FSharp.Core (>= 4.7) - System.Net.Http (>= 4.3.4) - Fake.Tools.Git (5.19.1) - Fake.Core.Environment (>= 5.19.1) - Fake.Core.Process (>= 5.19.1) - Fake.Core.SemVer (>= 5.19.1) - Fake.Core.String (>= 5.19.1) - Fake.Core.Trace (>= 5.19.1) - Fake.IO.FileSystem (>= 5.19.1) - FSharp.Core (>= 4.7) - FParsec (1.1.1) - FSharp.Core (>= 4.3.4) - FSharp.Control.Reactive (4.4) - FSharp.Core (>= 4.7) - System.Reactive (>= 4.3.2) - FSharp.Core (4.7) - FSharp.Data (3.3.3) - FSharp.Core (>= 4.3.4) - Microsoft.Build (17.2) - Microsoft.Build.Framework (>= 17.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.NET.StringTools (>= 1.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Win32.Registry (>= 4.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Collections.Immutable (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Reflection.Metadata (>= 1.6) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Security.Principal.Windows (>= 4.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Text.Json (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build.Framework (17.2) - Microsoft.Win32.Registry (>= 4.3) - System.Security.Permissions (>= 4.7) - Microsoft.Build.Tasks.Core (17.2) - Microsoft.Build.Framework (>= 17.2) - Microsoft.Build.Utilities.Core (>= 17.2) - Microsoft.NET.StringTools (>= 1.0) - Microsoft.Win32.Registry (>= 4.3) - System.CodeDom (>= 4.4) - System.Collections.Immutable (>= 5.0) - System.Reflection.Metadata (>= 1.6) - System.Resources.Extensions (>= 4.6) - System.Security.Cryptography.Pkcs (>= 4.7) - System.Security.Cryptography.Xml (>= 4.7) - System.Security.Permissions (>= 4.7) - System.Threading.Tasks.Dataflow (>= 6.0) - Microsoft.Build.Utilities.Core (17.2) - Microsoft.Build.Framework (>= 17.2) - Microsoft.NET.StringTools (>= 1.0) - Microsoft.Win32.Registry (>= 4.3) - System.Collections.Immutable (>= 5.0) - System.Configuration.ConfigurationManager (>= 4.7) - System.Security.Permissions (>= 4.7) - restriction: == netstandard2.0 - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: == netstandard2.0 - Microsoft.NET.StringTools (1.0) - System.Memory (>= 4.5.4) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.NETCore.Platforms (6.0.3) - Microsoft.NETCore.Targets (5.0) - Microsoft.Win32.Primitives (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - Microsoft.Win32.Registry (5.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Security.AccessControl (>= 5.0) - System.Security.Principal.Windows (>= 5.0) - Microsoft.Win32.SystemEvents (6.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.1.669) - Microsoft.Build (>= 16.10) - Microsoft.Build.Framework (>= 16.10) - Microsoft.Build.Tasks.Core (>= 16.10) - Microsoft.Build.Utilities.Core (>= 16.10) - Newtonsoft.Json (13.0.1) - NuGet.Common (6.2) - NuGet.Frameworks (>= 6.2) - NuGet.Configuration (6.2) - NuGet.Common (>= 6.2) - System.Security.Cryptography.ProtectedData (>= 4.4) - NuGet.Frameworks (6.2) - NuGet.Packaging (6.2) - Newtonsoft.Json (>= 13.0.1) - NuGet.Configuration (>= 6.2) - NuGet.Versioning (>= 6.2) - System.Security.Cryptography.Cng (>= 5.0) - System.Security.Cryptography.Pkcs (>= 5.0) - NuGet.Protocol (6.2) - NuGet.Packaging (>= 6.2) - NuGet.Versioning (6.2) - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.native.System (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Http (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - System.Buffers (4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.CodeDom (6.0) - System.Collections (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Collections.Concurrent (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Diagnostics.Tracing (>= 4.3) - System.Globalization (>= 4.3) - System.Reflection (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Collections.Immutable (6.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Configuration.ConfigurationManager (6.0) - System.Security.Cryptography.ProtectedData (>= 6.0) - System.Security.Permissions (>= 6.0) - System.Diagnostics.Debug (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Diagnostics.DiagnosticSource (6.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< net5.0)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Diagnostics.FileVersionInfo (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Reflection.Metadata (>= 1.4.1) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Diagnostics.Process (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.Win32.Primitives (>= 4.3) - Microsoft.Win32.Registry (>= 4.3) - runtime.native.System (>= 4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Text.Encoding.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Thread (>= 4.3) - System.Threading.ThreadPool (>= 4.3) - System.Diagnostics.Tools (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Diagnostics.Tracing (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Drawing.Common (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Microsoft.Win32.SystemEvents (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - System.Formats.Asn1 (6.0) - System.Globalization (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Globalization.Calendars (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Globalization (>= 4.3) - System.Runtime (>= 4.3) - System.Globalization.Extensions (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - System.Globalization (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.IO (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.IO.FileSystem (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.IO (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.IO.FileSystem.Primitives (4.3) - System.Runtime (>= 4.3) - System.IO.FileSystem.Watcher (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.Win32.Primitives (>= 4.3) - runtime.native.System (>= 4.3) - System.Collections (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Overlapped (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Thread (>= 4.3) - System.Linq (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Memory (4.5.5) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Net.Http (4.3.4) - Microsoft.NETCore.Platforms (>= 1.1.1) - runtime.native.System (>= 4.3) - runtime.native.System.Net.Http (>= 4.3) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Diagnostics.DiagnosticSource (>= 4.3) - System.Diagnostics.Tracing (>= 4.3) - System.Globalization (>= 4.3) - System.Globalization.Extensions (>= 4.3) - System.IO (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.Net.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Security.Cryptography.Algorithms (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.OpenSsl (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Security.Cryptography.X509Certificates (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Net.Primitives (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime (>= 4.3.1) - System.Runtime.Handles (>= 4.3) - System.Numerics.Vectors (4.5) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reactive (5.0) - System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reactive.Compatibility (5.0) - System.Reactive.Core (>= 5.0) - System.Reactive.Interfaces (>= 5.0) - System.Reactive.Linq (>= 5.0) - System.Reactive.PlatformServices (>= 5.0) - System.Reactive.Providers (>= 5.0) - System.Reactive.Core (5.0) - System.Reactive (>= 5.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - System.Reactive.Interfaces (5.0) - System.Reactive (>= 5.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - System.Reactive.Linq (5.0) - System.Reactive (>= 5.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - System.Reactive.PlatformServices (5.0) - System.Reactive (>= 5.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - System.Reactive.Providers (5.0) - System.Reactive (>= 5.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - System.Reflection (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.IO (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Metadata (6.0.1) - System.Collections.Immutable (>= 6.0) - System.Reflection.Primitives (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Resources.Extensions (6.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Resources.ResourceManager (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Globalization (>= 4.3) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime.CompilerServices.Unsafe (6.0) - System.Runtime.Extensions (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime (>= 4.3.1) - System.Runtime.Handles (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Runtime.InteropServices (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Reflection (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices.WindowsRuntime (4.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Runtime (>= 4.3) - System.Runtime.Numerics (4.3) - System.Globalization (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Security.AccessControl (6.0) - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Security.Cryptography.Algorithms (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - System.Collections (>= 4.3) - System.IO (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Runtime.Numerics (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Security.Cryptography.Cng (5.0) - System.Formats.Asn1 (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.0)) - System.Security.Cryptography.Csp (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - System.IO (>= 4.3) - System.Reflection (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Security.Cryptography.Algorithms (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Security.Cryptography.Encoding (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - System.Collections (>= 4.3) - System.Collections.Concurrent (>= 4.3) - System.Linq (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Security.Cryptography.OpenSsl (5.0) - System.Formats.Asn1 (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.0)) - System.Security.Cryptography.Pkcs (6.0.1) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Formats.Asn1 (>= 6.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Security.Cryptography.Primitives (4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Security.Cryptography.ProtectedData (6.0) - System.Security.Cryptography.X509Certificates (4.3.2) - Microsoft.NETCore.Platforms (>= 1.1) - runtime.native.System (>= 4.3) - runtime.native.System.Net.Http (>= 4.3) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.Globalization.Calendars (>= 4.3) - System.IO (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Runtime.Numerics (>= 4.3) - System.Security.Cryptography.Algorithms (>= 4.3) - System.Security.Cryptography.Cng (>= 4.3) - System.Security.Cryptography.Csp (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.OpenSsl (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Security.Cryptography.Xml (6.0) - System.Memory (>= 4.5.4) - restriction: == netstandard2.0 - System.Security.AccessControl (>= 6.0) - System.Security.Cryptography.Pkcs (>= 6.0) - System.Security.Permissions (6.0) - System.Security.AccessControl (>= 6.0) - System.Windows.Extensions (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - System.Security.Principal.Windows (5.0) - System.Text.Encoding (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (6.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encoding.Extensions (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Text.Encodings.Web (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (6.0.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (>= 6.0) - System.Text.RegularExpressions (4.3.1) - System.Collections (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp1.1)) (== netstandard2.0) - System.Globalization (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp1.1)) (== netstandard2.0) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp1.1)) (== netstandard2.0) - System.Runtime (>= 4.3.1) - System.Runtime.Extensions (>= 4.3.1) - restriction: || (&& (== net6.0) (< netcoreapp1.1)) (== netstandard2.0) - System.Threading (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp1.1)) (== netstandard2.0) - System.Threading (4.3) - System.Runtime (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Overlapped (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Threading.Tasks (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Threading.Tasks.Dataflow (6.0) - System.Threading.Tasks.Extensions (4.5.4) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.0)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= wp8)) (== netstandard2.0) - System.Threading.Thread (4.3) - System.Runtime (>= 4.3) - System.Threading.ThreadPool (4.3) - System.Runtime (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Windows.Extensions (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - System.Drawing.Common (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - System.Xml.ReaderWriter (4.3.1) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Text.Encoding.Extensions (>= 4.3) - System.Text.RegularExpressions (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Tasks.Extensions (>= 4.3) - System.Xml.XDocument (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Diagnostics.Tools (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Reflection (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Xml.ReaderWriter (>= 4.3) - System.Xml.XmlDocument (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Xml.ReaderWriter (>= 4.3) - System.Xml.XPath (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Xml.ReaderWriter (>= 4.3) - System.Xml.XPath.XDocument (4.3) - System.Diagnostics.Debug (>= 4.3) - System.Linq (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Xml.ReaderWriter (>= 4.3) - System.Xml.XDocument (>= 4.3) - System.Xml.XPath (>= 4.3) - System.Xml.XPath.XmlDocument (4.3) - System.Collections (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Xml.ReaderWriter (>= 4.3) - System.Xml.XmlDocument (>= 4.3) - System.Xml.XPath (>= 4.3) diff --git a/src/Interstellar.Core/Api.fs b/src/Interstellar.Core/Api.fs index d06f34c..1687b8f 100644 --- a/src/Interstellar.Core/Api.fs +++ b/src/Interstellar.Core/Api.fs @@ -210,7 +210,7 @@ module Printf = type private TextEncoderPrintfEnv<'Result>(k: string -> 'Result, encoder: TextEncoder) = inherit PrintfEnv() - + let sb = new StringBuilder() override this.Finalize () = k (sb.ToString ()) @@ -221,7 +221,7 @@ module Printf = | _ -> s.FormatAsPrintF () sb.Append value |> ignore override this.WriteT (s: string) = sb.Append (encoder.Encode s) |> ignore - + /// Like sprintf, but escapes the format parameters for Javascript to prevent code injection, allowing you to safely deal with untrusted format parameters. Think SQL prepared statements. let javascriptf (format: StringFormat<'T, string>) = doPrintf format (fun n -> TextEncoderPrintfEnv(id, JavaScriptEncoder.Default)) @@ -234,4 +234,4 @@ module Printf = let executeJavascriptf (browser: IBrowser) (format: StringFormat<_,_>) = doPrintf format (fun n -> TextEncoderPrintfEnv(browser.ExecuteJavascript, JavaScriptEncoder.Default) :> PrintfEnv<_,_,_> - ) \ No newline at end of file + ) diff --git a/src/Interstellar.Core/IBrowserExtensions.fs b/src/Interstellar.Core/IBrowserExtensions.fs index 9d9e187..46533cb 100644 --- a/src/Interstellar.Core/IBrowserExtensions.fs +++ b/src/Interstellar.Core/IBrowserExtensions.fs @@ -17,4 +17,4 @@ module FSharpIBrowserExtensions = type IBrowser with /// printf-style method that executes some Javascript code on a browser instance, sanitizing format parameters using . It is safe to pass in untrusted format parameters from the outside world. Think SQL prepared statements. member this.ExecuteJavascriptf (format: StringFormat<'a, unit>) = - executeJavascriptf this format \ No newline at end of file + executeJavascriptf this format diff --git a/src/Interstellar.Core/Interstellar.Core.fsproj b/src/Interstellar.Core/Interstellar.Core.fsproj index b984e49..c6a6d14 100644 --- a/src/Interstellar.Core/Interstellar.Core.fsproj +++ b/src/Interstellar.Core/Interstellar.Core.fsproj @@ -13,4 +13,4 @@ - \ No newline at end of file + diff --git a/src/Interstellar.Core/Script1.fsx b/src/Interstellar.Core/Script1.fsx index e6c6eea..cf52668 100644 --- a/src/Interstellar.Core/Script1.fsx +++ b/src/Interstellar.Core/Script1.fsx @@ -42,4 +42,4 @@ Interstellar.Printf.javascriptf "console.log(\"%s\")" """ \"hello world" """ |> do executeJavascriptf mockBrowser "%d%b" 42 true let executeJavascriptf' (browser: IBrowser) format = kjavascriptf (fun result -> browser.ExecuteJavascript result) format -do executeJavascriptf' mockBrowser "console.log(\"%s\")" """ \"hello world"<%*>; """ \ No newline at end of file +do executeJavascriptf' mockBrowser "console.log(\"%s\")" """ \"hello world"<%*>; """ diff --git a/src/Interstellar.Core/paket.references b/src/Interstellar.Core/paket.references index 45ef6c6..43e9cb6 100644 --- a/src/Interstellar.Core/paket.references +++ b/src/Interstellar.Core/paket.references @@ -1,3 +1,3 @@ FSharp.Core System.Text.Encodings.Web -BlackFox.MasterOfFoo \ No newline at end of file +BlackFox.MasterOfFoo diff --git a/src/Interstellar.MacOS.WebKit/Browser.fs b/src/Interstellar.MacOS.WebKit/Browser.fs index 339520c..e2ca1d1 100644 --- a/src/Interstellar.MacOS.WebKit/Browser.fs +++ b/src/Interstellar.MacOS.WebKit/Browser.fs @@ -43,7 +43,7 @@ type Browser(config: BrowserWindowConfig) = let mutable pageTitleObserverHandle = null static let wkBridgeName = "interstellarWkBridge" - + do wkBrowser.NavigationDelegate <- { new WKNavigationDelegate() with @@ -119,4 +119,4 @@ type Browser(config: BrowserWindowConfig) = [] member val PageTitleChanged : IEvent<_> = pageTitleChanged.Publish // there's no way that I know of to programmatically open the WKWebView inspector: https://stackoverflow.com/questions/25200116/how-to-show-the-inspector-within-your-wkwebview-based-desktop-app - member this.ShowDevTools () = () \ No newline at end of file + member this.ShowDevTools () = () diff --git a/src/Interstellar.MacOS.WebKit/BrowserApp.fs b/src/Interstellar.MacOS.WebKit/BrowserApp.fs index 6bdd4bc..d156f0a 100644 --- a/src/Interstellar.MacOS.WebKit/BrowserApp.fs +++ b/src/Interstellar.MacOS.WebKit/BrowserApp.fs @@ -19,5 +19,5 @@ module BrowserApp = do! app.onStart mainCtx windowCreator do! Async.SwitchToContext mainCtx } - - let run app = Async.Start <| runAsync SynchronizationContext.Current app \ No newline at end of file + + let run app = Async.Start <| runAsync SynchronizationContext.Current app diff --git a/src/Interstellar.MacOS.WebKit/BrowserWindow.fs b/src/Interstellar.MacOS.WebKit/BrowserWindow.fs index 6dbd279..ea51da9 100644 --- a/src/Interstellar.MacOS.WebKit/BrowserWindow.fs +++ b/src/Interstellar.MacOS.WebKit/BrowserWindow.fs @@ -15,7 +15,7 @@ type NiblessViewController(view: NSView) = type BrowserWindow(config: BrowserWindowConfig) as this = inherit NSWindowController("BrowserWindow") - + let browser = new Browser(config) let closedEvt = new Event<_>() @@ -74,4 +74,4 @@ type BrowserWindow(config: BrowserWindowConfig) as this = this.Window.SetFrame (rect, true, true) member this.Title with get () = base.Window.Title - and set x = base.Window.Title <- x \ No newline at end of file + and set x = base.Window.Title <- x diff --git a/src/Interstellar.MacOS.WebKit/paket.references b/src/Interstellar.MacOS.WebKit/paket.references index 640cf91..6f627f4 100644 --- a/src/Interstellar.MacOS.WebKit/paket.references +++ b/src/Interstellar.MacOS.WebKit/paket.references @@ -1 +1 @@ -FSharp.Core \ No newline at end of file +FSharp.Core diff --git a/src/Interstellar.WinForms.Chromium/BrowserApp.fs b/src/Interstellar.WinForms.Chromium/BrowserApp.fs index 6684cb8..1b15c44 100644 --- a/src/Interstellar.WinForms.Chromium/BrowserApp.fs +++ b/src/Interstellar.WinForms.Chromium/BrowserApp.fs @@ -28,4 +28,4 @@ module BrowserApp = use dummyControl = new Control() in () Debug.WriteLine (sprintf "DummyControl thread: %A" Thread.CurrentThread.ManagedThreadId) Async.Start <| runAsync SynchronizationContext.Current app - Application.Run () \ No newline at end of file + Application.Run () diff --git a/src/Interstellar.WinForms.Chromium/BrowserWindow.fs b/src/Interstellar.WinForms.Chromium/BrowserWindow.fs index d47886c..fb860c1 100644 --- a/src/Interstellar.WinForms.Chromium/BrowserWindow.fs +++ b/src/Interstellar.WinForms.Chromium/BrowserWindow.fs @@ -67,4 +67,4 @@ type BrowserWindow(config: BrowserWindowConfig
) as this = override this.Dispose disposing = if disposing then titleChangedHandle.Dispose () - base.Dispose disposing \ No newline at end of file + base.Dispose disposing diff --git a/src/Interstellar.WinForms.Chromium/Interstellar.WinForms.Chromium.fsproj b/src/Interstellar.WinForms.Chromium/Interstellar.WinForms.Chromium.fsproj index 30f6d7c..30edcec 100644 --- a/src/Interstellar.WinForms.Chromium/Interstellar.WinForms.Chromium.fsproj +++ b/src/Interstellar.WinForms.Chromium/Interstellar.WinForms.Chromium.fsproj @@ -22,4 +22,4 @@ - \ No newline at end of file + diff --git a/src/Interstellar.WinForms.Chromium/paket.references b/src/Interstellar.WinForms.Chromium/paket.references index be95f91..e52912d 100644 --- a/src/Interstellar.WinForms.Chromium/paket.references +++ b/src/Interstellar.WinForms.Chromium/paket.references @@ -1,2 +1,2 @@ FSharp.Core -CefSharp.WinForms \ No newline at end of file +CefSharp.WinForms diff --git a/src/Interstellar.WindowsCommon.Chromium/Platform.fs b/src/Interstellar.WindowsCommon.Chromium/Platform.fs index a8be22d..2814ad6 100644 --- a/src/Interstellar.WindowsCommon.Chromium/Platform.fs +++ b/src/Interstellar.WindowsCommon.Chromium/Platform.fs @@ -13,7 +13,7 @@ open CefSharp.WinForms type Platform private() = static let mutable isInitialized = false static let initLock = new Object() - + static member Initialize () = lock initLock (fun () -> if not isInitialized then @@ -32,7 +32,7 @@ type Platform private() = static member private InitAnyCpuCefSharp () = // Required to fix high DPI issue: https://github.com/fsprojects/Interstellar/issues/25 Cef.EnableHighDPISupport() - + let browserSubpath = Platform.GetPlatformAssemblyPath("CefSharp.BrowserSubprocess.exe") let settings = new CefSettings(BrowserSubprocessPath = browserSubpath) //settings.RegisterExtension Browser.bridgeExtension @@ -43,4 +43,4 @@ type Platform private() = let assemblyName = args.Name.Split([|','|], 2).[0] + ".dll" let archSpecificPath = Platform.GetPlatformAssemblyPath assemblyName if File.Exists archSpecificPath then (Assembly.LoadFile archSpecificPath) else null - else null \ No newline at end of file + else null diff --git a/src/Interstellar.Wpf.Chromium/BrowserApp.fs b/src/Interstellar.Wpf.Chromium/BrowserApp.fs index 6aaefae..1e4580b 100644 --- a/src/Interstellar.Wpf.Chromium/BrowserApp.fs +++ b/src/Interstellar.Wpf.Chromium/BrowserApp.fs @@ -18,7 +18,7 @@ module BrowserApp = do! Async.SwitchToContext mainCtx Application.Current.Shutdown () } - + /// Starts and runs a BrowserApp's lifecycle in a WPF + Chromium host, using the current thread as the UI thread /// Describes the application lifecycle - let run app = Async.Start <| runAsync SynchronizationContext.Current app \ No newline at end of file + let run app = Async.Start <| runAsync SynchronizationContext.Current app diff --git a/src/Interstellar.Wpf.Chromium/BrowserWindow.fs b/src/Interstellar.Wpf.Chromium/BrowserWindow.fs index 46292fd..099a5bd 100644 --- a/src/Interstellar.Wpf.Chromium/BrowserWindow.fs +++ b/src/Interstellar.Wpf.Chromium/BrowserWindow.fs @@ -64,9 +64,9 @@ type BrowserWindow(config: BrowserWindowConfig) as this = member this.Title with get () = (this :> Window).Title and set title = (this :> Window).Title <- title - + override this.OnContentRendered e = base.OnContentRendered e if not alreadyShown then alreadyShown <- true - shown.Trigger () \ No newline at end of file + shown.Trigger () diff --git a/src/Interstellar.Wpf.Chromium/Interstellar.Wpf.Chromium.fsproj b/src/Interstellar.Wpf.Chromium/Interstellar.Wpf.Chromium.fsproj index 1356788..b19a8e7 100644 --- a/src/Interstellar.Wpf.Chromium/Interstellar.Wpf.Chromium.fsproj +++ b/src/Interstellar.Wpf.Chromium/Interstellar.Wpf.Chromium.fsproj @@ -22,4 +22,4 @@ - \ No newline at end of file + diff --git a/src/Interstellar.Wpf.Chromium/paket.references b/src/Interstellar.Wpf.Chromium/paket.references index 8550ef3..87375dd 100644 --- a/src/Interstellar.Wpf.Chromium/paket.references +++ b/src/Interstellar.Wpf.Chromium/paket.references @@ -1,2 +1,2 @@ FSharp.Core -CefSharp.Wpf \ No newline at end of file +CefSharp.Wpf diff --git a/templates/minimal/src/.template.config/template.json b/templates/minimal/src/.template.config/template.json index ca22dc4..1c932c6 100644 --- a/templates/minimal/src/.template.config/template.json +++ b/templates/minimal/src/.template.config/template.json @@ -49,4 +49,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/templates/minimal/src/InterstellarApp.Core/InterstellarApp.Core.fsproj b/templates/minimal/src/InterstellarApp.Core/InterstellarApp.Core.fsproj index 58f3673..eb17f04 100644 --- a/templates/minimal/src/InterstellarApp.Core/InterstellarApp.Core.fsproj +++ b/templates/minimal/src/InterstellarApp.Core/InterstellarApp.Core.fsproj @@ -9,4 +9,4 @@ - \ No newline at end of file + diff --git a/templates/minimal/src/InterstellarApp.Core/Library.fs b/templates/minimal/src/InterstellarApp.Core/Library.fs index ab8c51a..0f15987 100644 --- a/templates/minimal/src/InterstellarApp.Core/Library.fs +++ b/templates/minimal/src/InterstellarApp.Core/Library.fs @@ -180,7 +180,7 @@ module BrowserApp = // For example, modify this line to use Browser.ExecuteJavascript and sprintf instead of ExecuteJavascriptf, // then paste this malicous payload into the input text box when you run the app: //;)'olleh'(trela;)'oof outputWindow.Browser.ExecuteJavascriptf "updateOutput('%s')" (String (Array.rev (msg.ToCharArray ()))) - ), null) + ), null) ) do! inputWindow.Show () @@ -238,8 +238,8 @@ module BrowserApp = }) return selectorWindow } - + let app onMainWindowCreated : BrowserApp<'TWindow> = BrowserApp.create (fun mainCtx createWindow -> async { let! mainWindow = appletSelectorWindow onMainWindowCreated mainCtx createWindow do! Async.AwaitEvent mainWindow.Closed - }) \ No newline at end of file + }) diff --git a/templates/minimal/src/InterstellarApp.Windows/InterstellarApp.Windows.fsproj b/templates/minimal/src/InterstellarApp.Windows/InterstellarApp.Windows.fsproj index 5e7f693..663b4c1 100644 --- a/templates/minimal/src/InterstellarApp.Windows/InterstellarApp.Windows.fsproj +++ b/templates/minimal/src/InterstellarApp.Windows/InterstellarApp.Windows.fsproj @@ -18,4 +18,4 @@ - \ No newline at end of file + diff --git a/templates/minimal/src/InterstellarApp.Windows/Program.fs b/templates/minimal/src/InterstellarApp.Windows/Program.fs index b97a435..a690b62 100644 --- a/templates/minimal/src/InterstellarApp.Windows/Program.fs +++ b/templates/minimal/src/InterstellarApp.Windows/Program.fs @@ -9,7 +9,7 @@ open Interstellar.Chromium.Wpf type App() = inherit Application(ShutdownMode = ShutdownMode.OnExplicitShutdown) - + override this.OnStartup (e: StartupEventArgs) = base.OnStartup e let onMainWindowCreated (w: IBrowserWindow) = @@ -26,4 +26,4 @@ module Main = let app = App() let result = app.Run () Debug.WriteLine "main() exiting" - result \ No newline at end of file + result diff --git a/templates/minimal/src/InterstellarApp.macOS/AppDelegate.fs b/templates/minimal/src/InterstellarApp.macOS/AppDelegate.fs index 2171ed7..3d82106 100644 --- a/templates/minimal/src/InterstellarApp.macOS/AppDelegate.fs +++ b/templates/minimal/src/InterstellarApp.macOS/AppDelegate.fs @@ -26,5 +26,5 @@ type AppDelegate() = do! BrowserApp.runAsync mainCtx (InterstellarApp.BrowserApp.app ignore) NSApplication.SharedApplication.Terminate null } - - () \ No newline at end of file + + () diff --git a/templates/minimal/src/InterstellarApp.macOS/InterstellarApp.macOS.fsproj b/templates/minimal/src/InterstellarApp.macOS/InterstellarApp.macOS.fsproj index bb19715..a7a408f 100644 --- a/templates/minimal/src/InterstellarApp.macOS/InterstellarApp.macOS.fsproj +++ b/templates/minimal/src/InterstellarApp.macOS/InterstellarApp.macOS.fsproj @@ -51,4 +51,4 @@ - \ No newline at end of file + diff --git a/templates/minimal/src/global.json b/templates/minimal/src/global.json index e4a582e..3cfff7a 100644 --- a/templates/minimal/src/global.json +++ b/templates/minimal/src/global.json @@ -6,4 +6,4 @@ "msbuild-sdks": { "MSBuild.Sdk.Extras": "3.0.22" } -} \ No newline at end of file +} From 67f2b6745899cedb938a8a56b712a1ba5254d276 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 16:12:08 -0500 Subject: [PATCH 04/19] Remove no longer present global.json from sln --- Interstellar.MacOS.sln | 1 - 1 file changed, 1 deletion(-) diff --git a/Interstellar.MacOS.sln b/Interstellar.MacOS.sln index b9d05fd..4324ed7 100644 --- a/Interstellar.MacOS.sln +++ b/Interstellar.MacOS.sln @@ -7,7 +7,6 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Examples.SharedCode", "Exam EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BE6ABDEA-53B5-4D1C-9E46-6B783CD97234}" ProjectSection(SolutionItems) = preProject - global.json = global.json AssemblyAndPackageInfo.props = AssemblyAndPackageInfo.props paket.dependencies = paket.dependencies EndProjectSection From 0a6aefb7c2560f8aec3e308ade56898a73b35943 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 16:25:34 -0500 Subject: [PATCH 05/19] Update CI config, and change how build script release/debug is passed (see extended commit description) Build config is now passed like: `./build.sh -t Build -- Debug` or `./build.sh -t Build -- Release` --- .github/workflows/ci.yml | 30 +++++++++--------- build/build.fs | 67 +++++++++++++++++++++------------------- 2 files changed, 51 insertions(+), 46 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 77c1967..d9eb7b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,21 +6,22 @@ jobs: build-windows: name: CI (Windows) runs-on: windows-latest + timeout-minutes: 25 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-dotnet@v1 + - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v3 with: - dotnet-version: '6.0.400' + dotnet-version: 8.0.x - name: Restore run: | dotnet tool restore dotnet paket restore - name: Build - run: dotnet fake build + run: .\build.cmd -t Build - name: Pack run: | - dotnet fake build -t PackAll + .\build.cmd -t PackAll - name: Upload artifacts uses: actions/upload-artifact@v2 with: @@ -33,24 +34,23 @@ jobs: build-macos: name: CI (macOS) runs-on: macos-latest + timeout-minutes: 25 steps: - - uses: actions/checkout@v2 - - uses: actions/setup-dotnet@v1 + - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v3 with: - dotnet-version: '6.0.400' - - name: Install workloads - run: | - dotnet tool restore - sudo dotnet workload install macos + dotnet-version: 8.0.3 - name: Restore run: | + sudo dotnet workload install macos dotnet tool restore dotnet paket restore + dotnet restore Interstellar.MacOS.sln - name: Build - run: dotnet fake build -- Release + run: ./build.sh -t Build - name: Pack - run: dotnet fake build -t PackAll -- Release + run: ./build.sh -t PackAll - name: Upload artifacts uses: actions/upload-artifact@v2 with: @@ -58,4 +58,4 @@ jobs: path: artifacts/ - name: Test run: | - dotnet fake build -t Test -- Release + ./build.sh -t Test diff --git a/build/build.fs b/build/build.fs index b506710..4396ffe 100644 --- a/build/build.fs +++ b/build/build.fs @@ -112,7 +112,7 @@ let addVersionInfo (versionInfo: PackageVersionInfo) = "VersionPrefix", versionPrefix match versionSuffix with Some versionSuffix -> "VersionSuffix", versionSuffix | _ -> () "PackageReleaseNotes", versionInfo.versionChanges - ] + ] let projects = [ yield Projects.coreLib @@ -120,8 +120,13 @@ let projects = [ if Environment.isMacOS then yield! [Projects.macosWkLib] ] -let buildOptions setParams = - let buildMode = Environment.environVarOrDefault "buildMode" "Release" +let msBuildCfg (args: TargetParameter) = + args.Context.Arguments + |> List.tryPick (fun x -> if x.ToLower () = "debug" then Some "Debug" else None) + |> Option.defaultValue "Release" + +let buildOptions args setParams = + let buildMode = msBuildCfg args let commit = Git.Information.getCurrentSHA1 repoDir quiet << @@ -129,7 +134,7 @@ let buildOptions setParams = addProperties ["Configuration", buildMode; "RepositoryCommit", commit] << addVersionInfo (currentVersionInfo.Force()) << setParams -let dotnetBuild (setParams: DotNet.BuildOptions -> DotNet.BuildOptions) project = project |> DotNet.build (buildOptions setParams) +let dotnetBuild args (setParams: DotNet.BuildOptions -> DotNet.BuildOptions) project = project |> DotNet.build (buildOptions args setParams) // *** Define Targets *** let PackageDescription _ = @@ -143,10 +148,10 @@ let doRestore (dotnetBuildOptions: DotNet.BuildOptions) = { dotnetBuildOptions w let getNupkgPath version (projPath: string) = let vstr = match version with Some v -> sprintf ".%s" v | None -> "" let projDir = Path.GetDirectoryName projPath - Path.Combine ([|projDir; "bin"; "Release"; - sprintf "%s%s.nupkg" (Path.GetFileNameWithoutExtension projPath) vstr|]) + Path.Combine [|projDir; "bin"; "Release"; + sprintf "%s%s.nupkg" (Path.GetFileNameWithoutExtension projPath) vstr|] -let Clean _ = +let Clean args = Trace.log " --- Cleaning --- " for proj in projects do let vstr = currentVersionInfo.Force().versionName @@ -157,7 +162,7 @@ let Clean _ = else if Environment.isMacOS then [ yield Solutions.macos; for p in Templates.macosProjects -> p ] else [] for proj in projects do - dotnetBuild (addTarget "Clean") proj + dotnetBuild args (addTarget "Clean") proj Shell.deleteDir ".fsdocs" Shell.deleteDir "output" Shell.deleteDir "temp" @@ -181,29 +186,29 @@ let Restore _ = // DotNet.restore id proj DotNet.restore id proj -let Build _ = +let Build args = Trace.log " --- Building --- " // if Environment.isWindows then // msbuild (addTarget "Restore") Solutions.windows // else // msbuild (addTarget "Restore") Solutions.macos if Environment.isWindows then - dotnetBuild (addTarget "Restore") Solutions.windows + dotnetBuild args (addTarget "Restore") Solutions.windows else - dotnetBuild (addTarget "Restore") Solutions.macos + dotnetBuild args (addTarget "Restore") Solutions.macos if Environment.isWindows then - dotnetBuild (doRestore << addTarget "Build") Projects.winFormsLib - dotnetBuild (doRestore << addTarget "Build") Projects.wpfLib + dotnetBuild args (doRestore << addTarget "Build") Projects.winFormsLib + dotnetBuild args (doRestore << addTarget "Build") Projects.wpfLib else if Environment.isMacOS then - dotnetBuild (doRestore << addTarget "Build") Projects.macosWkLib + dotnetBuild args (doRestore << addTarget "Build") Projects.macosWkLib -let Run _ = +let Run args = Trace.log " --- Running example app --- " if Environment.isWindows then DotNet.exec id "run" ("-p " + Projects.wpfExampleApp) |> ignore else Shell.cd (Path.GetDirectoryName Projects.macosExampleApp) - dotnetBuild (addTarget "Run") Projects.macosExampleApp + dotnetBuild args (addTarget "Run") Projects.macosExampleApp let Test _ = Trace.log " --- Running tests --- " @@ -225,10 +230,10 @@ let ReleaseDocs _ = |> printfn "%s" Git.Branches.pushBranch "temp/gh-pages" "origin" "gh-pages" -let Pack _ = +let Pack args = Trace.log " --- Packing NuGet packages --- " let props = ["SolutionDir", repoDir; "RepositoryCommit", Git.Information.getCurrentSHA1 repoDir] - let dotnetBuild f = dotnetBuild (doRestore << addTargets ["Pack"] << addProperties props << f) + let dotnetBuild f = dotnetBuild args (doRestore << addTargets ["Pack"] << addProperties props << f) Trace.logf "PROJECT LIST: %A" projects for proj in projects do dotnetBuild id proj @@ -241,7 +246,7 @@ let Pack _ = !! (Path.Combine (artifactsPath, "**", "*.nupkg")) |> Seq.iter (NupkgHack.hackNupkgAtPath) -let BuildTemplateProjects _ = +let BuildTemplateProjects args = Trace.log " --- Building template projects --- " if Environment.isWindows then let p = [ yield! Templates.winProjects ] @@ -252,9 +257,9 @@ let BuildTemplateProjects _ = else if Environment.isMacOS then let p = [ yield! Templates.macosProjects ] for proj in p do - dotnetBuild (addTarget "Restore") proj + dotnetBuild args (addTarget "Restore") proj for proj in p do - dotnetBuild (addTarget "Build") proj + dotnetBuild args (addTarget "Build") proj let PackTemplates _ = @@ -296,48 +301,48 @@ let initTargets () = Target.create "PackAll" PackAll Target.create "TestAll" TestAll Target.create "All" All - + // *** Define Dependencies *** "Restore" ==> "Build" ==> "Pack" ==> "PackAll" ==> "All" - + "Restore" ==> "Run" - + "PackTemplates" ==> "PackAll" ==> "All" - + "Build" ==> "BuildDocs" ==> "ReleaseDocs" ==> "All" - + "BuildTemplateProjects" ==> "TestAll" - + // "Build" // ==> "Test" "Test" ==> "TestAll" - + "Build" ==> "BuildTemplateProjects" [] let main args = Environment.CurrentDirectory <- __SOURCE_DIRECTORY__ - + args |> Array.toList |> Context.FakeExecutionContext.Create false "build.fs" |> Context.RuntimeContext.Fake |> Context.setExecutionContext - + initTargets () Target.runOrDefaultWithArguments "Build" - + 0 From d880c49f300d7455db743d01c8a9007c9be3339f Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 16:37:56 -0500 Subject: [PATCH 06/19] Fix CI scripts --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d9eb7b1..8328915 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: path: artifacts - name: Test run: | - dotnet fake build -t Test -- Release + .\build.cmd -t Test -- Release build-macos: name: CI (macOS) @@ -40,7 +40,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-dotnet@v3 with: - dotnet-version: 8.0.3 + dotnet-version: 8.0.x - name: Restore run: | sudo dotnet workload install macos From a2c94c0a43148a94fe0a252e06889a39b2f82f7f Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Mon, 5 Aug 2024 10:05:57 -0500 Subject: [PATCH 07/19] Update FSharp.Core locked version --- paket.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paket.lock b/paket.lock index bccb054..d278358 100644 --- a/paket.lock +++ b/paket.lock @@ -137,7 +137,7 @@ NUGET FSharp.Control.Reactive (5.0.5) FSharp.Core (>= 4.7.2) System.Reactive (>= 5.0 < 6.0) - FSharp.Core (8.0.301) + FSharp.Core (6.0.5) FSharp.Data (6.4) FSharp.Core (>= 6.0.1) FSharp.Data.Csv.Core (>= 6.4) From 0723c6a2ad252fca8e4cde35cb5fef4f074f2169 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Mon, 5 Aug 2024 10:08:55 -0500 Subject: [PATCH 08/19] Update locked FSharp.Core #2 --- paket.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paket.lock b/paket.lock index d278358..246fc9c 100644 --- a/paket.lock +++ b/paket.lock @@ -13,7 +13,7 @@ NUGET CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) CefSharp.Wpf (86.0.241) CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - FSharp.Core (8.0.301) + FSharp.Core (6.0.5) NuGet.Build.Tasks.Pack (6.10.1) System.Buffers (4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (== netstandard2.0) System.Memory (4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) From 51f9b3725becda72cca211fe43b3e60ba8c7b4b1 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Tue, 3 Oct 2023 23:57:02 -0600 Subject: [PATCH 09/19] Linux scaffolding --- .../Examples.GtkSharp.Webkit.fsproj | 18 ++++++++ Examples/Examples.GtkSharp.Webkit/Program.fs | 2 + .../Examples.GtkSharp.Webkit/paket.references | 1 + Interstellar.Linux.sln | 46 +++++++++++++++++++ paket.dependencies | 1 + paket.lock | 44 ++++++++++-------- .../Interstellar.GtkSharp.WebKit.fsproj | 16 +++++++ src/Interstellar.GtkSharp.WebKit/Library.fs | 5 ++ .../paket.references | 3 ++ 9 files changed, 118 insertions(+), 18 deletions(-) create mode 100644 Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj create mode 100644 Examples/Examples.GtkSharp.Webkit/Program.fs create mode 100644 Examples/Examples.GtkSharp.Webkit/paket.references create mode 100644 Interstellar.Linux.sln create mode 100644 src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj create mode 100644 src/Interstellar.GtkSharp.WebKit/Library.fs create mode 100644 src/Interstellar.GtkSharp.WebKit/paket.references diff --git a/Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj b/Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj new file mode 100644 index 0000000..b5e4ff8 --- /dev/null +++ b/Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj @@ -0,0 +1,18 @@ + + + + Exe + net6.0 + Examples.Linux.Webkit + + + + + + + + + + + + \ No newline at end of file diff --git a/Examples/Examples.GtkSharp.Webkit/Program.fs b/Examples/Examples.GtkSharp.Webkit/Program.fs new file mode 100644 index 0000000..da1fbd9 --- /dev/null +++ b/Examples/Examples.GtkSharp.Webkit/Program.fs @@ -0,0 +1,2 @@ +// For more information see https://aka.ms/fsharp-console-apps +printfn "Hello from F#" \ No newline at end of file diff --git a/Examples/Examples.GtkSharp.Webkit/paket.references b/Examples/Examples.GtkSharp.Webkit/paket.references new file mode 100644 index 0000000..6f627f4 --- /dev/null +++ b/Examples/Examples.GtkSharp.Webkit/paket.references @@ -0,0 +1 @@ +FSharp.Core diff --git a/Interstellar.Linux.sln b/Interstellar.Linux.sln new file mode 100644 index 0000000..015bc27 --- /dev/null +++ b/Interstellar.Linux.sln @@ -0,0 +1,46 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Interstellar.Core", "src\Interstellar.Core\Interstellar.Core.fsproj", "{7D096C2C-0960-4754-9954-421832426807}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Examples.SharedCode", "Examples\Examples.SharedCode\Examples.SharedCode.fsproj", "{0332BEB2-0915-47CC-A709-49FC4C2B3DB5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BE6ABDEA-53B5-4D1C-9E46-6B783CD97234}" + ProjectSection(SolutionItems) = preProject + global.json = global.json + AssemblyAndPackageInfo.props = AssemblyAndPackageInfo.props + paket.dependencies = paket.dependencies + EndProjectSection +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Interstellar.GtkSharp.WebKit", "src\Interstellar.GtkSharp.WebKit\Interstellar.GtkSharp.WebKit.fsproj", "{D8257812-AF39-46C2-B55F-D179D16516EA}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Examples.GtkSharp.Webkit", "Examples\Examples.GtkSharp.Webkit\Examples.GtkSharp.Webkit.fsproj", "{269B546E-C1A6-4A70-AE5B-586FADCFFDB2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7D096C2C-0960-4754-9954-421832426807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7D096C2C-0960-4754-9954-421832426807}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D096C2C-0960-4754-9954-421832426807}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7D096C2C-0960-4754-9954-421832426807}.Release|Any CPU.Build.0 = Release|Any CPU + {0332BEB2-0915-47CC-A709-49FC4C2B3DB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0332BEB2-0915-47CC-A709-49FC4C2B3DB5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0332BEB2-0915-47CC-A709-49FC4C2B3DB5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0332BEB2-0915-47CC-A709-49FC4C2B3DB5}.Release|Any CPU.Build.0 = Release|Any CPU + {14C8FADA-AD8F-421E-8FB3-F9EA797E507C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14C8FADA-AD8F-421E-8FB3-F9EA797E507C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14C8FADA-AD8F-421E-8FB3-F9EA797E507C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14C8FADA-AD8F-421E-8FB3-F9EA797E507C}.Release|Any CPU.Build.0 = Release|Any CPU + {D8257812-AF39-46C2-B55F-D179D16516EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D8257812-AF39-46C2-B55F-D179D16516EA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8257812-AF39-46C2-B55F-D179D16516EA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D8257812-AF39-46C2-B55F-D179D16516EA}.Release|Any CPU.Build.0 = Release|Any CPU + {269B546E-C1A6-4A70-AE5B-586FADCFFDB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {269B546E-C1A6-4A70-AE5B-586FADCFFDB2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {269B546E-C1A6-4A70-AE5B-586FADCFFDB2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {269B546E-C1A6-4A70-AE5B-586FADCFFDB2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/paket.dependencies b/paket.dependencies index 4bfe68f..b524292 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -7,6 +7,7 @@ nuget CefSharp.Wpf 86.0.241 nuget FSharp.Core >= 4.2.3 nuget NuGet.Build.Tasks.Pack nuget System.Text.Encodings.Web +nuget WebkitGtkSharp group Build source https://api.nuget.org/v3/index.json diff --git a/paket.lock b/paket.lock index 246fc9c..fbc869f 100644 --- a/paket.lock +++ b/paket.lock @@ -1,32 +1,40 @@ -RESTRICTION: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) +RESTRICTION: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) NUGET remote: https://api.nuget.org/v3/index.json + AtkSharp (3.24.24.95) + GLibSharp (>= 3.24.24.95) BlackFox.MasterOfFoo (1.0.6) - FSharp.Core (>= 4.0.0.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net45)) (&& (== net6.0-windows7.0) (>= net45)) (&& (== net8.0) (>= net45)) (&& (== net8.0-macos) (>= net45)) (&& (== netstandard2.0) (>= net45)) - FSharp.Core (>= 4.2.3) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) - cef.redist.x64 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - cef.redist.x86 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + FSharp.Core (>= 4.0.0.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net45)) (&& (== net6.0) (>= net45)) (&& (== net6.0-windows7.0) (>= net45)) (&& (== net8.0) (>= net45)) (&& (== net8.0-macos) (>= net45)) (&& (== netstandard2.0) (>= net45)) + FSharp.Core (>= 4.2.3) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) + CairoSharp (3.24.24.95) + cef.redist.x64 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + cef.redist.x86 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) cef.redist.x64 (86.0.24) cef.redist.x86 (86.0.24) CefSharp.WinForms (86.0.241) - CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) CefSharp.Wpf (86.0.241) CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) FSharp.Core (6.0.5) NuGet.Build.Tasks.Pack (6.10.1) - System.Buffers (4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (== netstandard2.0) - System.Memory (4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) - System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) - System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net472) (== net5.0-windows7.0)) (&& (== net472) (== net6.0-windows7.0)) (&& (== net472) (== net8.0)) (&& (== net472) (== net8.0-macos)) (&& (== net472) (< net45)) (&& (== net48) (== net5.0-windows7.0)) (&& (== net48) (== net6.0-windows7.0)) (&& (== net48) (== net8.0)) (&& (== net48) (== net8.0-macos)) (&& (== net48) (< net45)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) - System.Numerics.Vectors (>= 4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net8.0) (>= net461)) (&& (== net8.0-macos) (>= net461)) (&& (== netstandard2.0) (>= net461)) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netcoreapp2.1)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= uap10.1)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.1)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= uap10.1)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) - System.Numerics.Vectors (4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.1)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (&& (== net8.0-macos) (>= uap10.1)) (== netstandard2.0) + PangoSharp (3.24.24.95) + CairoSharp (>= 3.24.24.95) + GLibSharp (>= 3.24.24.95) + System.Buffers (4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (== netstandard2.0) + System.Memory (4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) + System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) + System.Numerics.Vectors (>= 4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net6.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net8.0) (>= net461)) (&& (== net8.0-macos) (>= net461)) (&& (== netstandard2.0) (>= net461)) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netcoreapp2.1)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= uap10.1)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.1)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= uap10.1)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) + System.Numerics.Vectors (4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0) (== net8.0-macos) (< netcoreapp2.0)) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.1)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (&& (== net8.0-macos) (>= uap10.1)) (== netstandard2.0) System.Text.Encodings.Web (8.0) - System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) - System.Memory (>= 4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (== netstandard2.0) + System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Memory (>= 4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (== netstandard2.0) + WebkitGtkSharp (3.24.24.95) + GtkSharp (>= 3.24.24.95) GROUP Build RESTRICTION: == net8.0 diff --git a/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj b/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj new file mode 100644 index 0000000..ab9a580 --- /dev/null +++ b/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj @@ -0,0 +1,16 @@ + + + + net6.0 + true + Interstellar.Webkit + + + + + + + + + + \ No newline at end of file diff --git a/src/Interstellar.GtkSharp.WebKit/Library.fs b/src/Interstellar.GtkSharp.WebKit/Library.fs new file mode 100644 index 0000000..69eea77 --- /dev/null +++ b/src/Interstellar.GtkSharp.WebKit/Library.fs @@ -0,0 +1,5 @@ +namespace Interstellar.Webkit + +module Say = + let hello name = + printfn "Hello %s" name \ No newline at end of file diff --git a/src/Interstellar.GtkSharp.WebKit/paket.references b/src/Interstellar.GtkSharp.WebKit/paket.references new file mode 100644 index 0000000..073ad56 --- /dev/null +++ b/src/Interstellar.GtkSharp.WebKit/paket.references @@ -0,0 +1,3 @@ +FSharp.Core +WebkitGtkSharp +GtkSharp \ No newline at end of file From be340c787b90e4334aa3441d4ee76197e1cd3b2e Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 8 Oct 2023 16:03:41 -0600 Subject: [PATCH 10/19] WIP attempt parts of GtkSharp WebKit provider --- Examples/Examples.GtkSharp.Webkit/Program.fs | 32 +++++++++- Examples/Examples.SharedCode/Library.fs | 5 +- src/Interstellar.Core/Api.fs | 16 ++++- src/Interstellar.GtkSharp.WebKit/Browser.fs | 59 +++++++++++++++++++ .../BrowserApp.fs | 24 ++++++++ .../BrowserWindow.fs | 45 ++++++++++++++ .../Interstellar.GtkSharp.WebKit.fsproj | 4 +- src/Interstellar.GtkSharp.WebKit/Library.fs | 5 -- 8 files changed, 178 insertions(+), 12 deletions(-) create mode 100644 src/Interstellar.GtkSharp.WebKit/Browser.fs create mode 100644 src/Interstellar.GtkSharp.WebKit/BrowserApp.fs create mode 100644 src/Interstellar.GtkSharp.WebKit/BrowserWindow.fs delete mode 100644 src/Interstellar.GtkSharp.WebKit/Library.fs diff --git a/Examples/Examples.GtkSharp.Webkit/Program.fs b/Examples/Examples.GtkSharp.Webkit/Program.fs index da1fbd9..048c513 100644 --- a/Examples/Examples.GtkSharp.Webkit/Program.fs +++ b/Examples/Examples.GtkSharp.Webkit/Program.fs @@ -1,2 +1,30 @@ -// For more information see https://aka.ms/fsharp-console-apps -printfn "Hello from F#" \ No newline at end of file +open Examples.SharedCode +open Gtk +open Interstellar +open Interstellar.GtkSharp.Webkit +open WebKit + +module Main = + let runApp () = + let onMainWindowCreated (w: IBrowserWindow) = + let nativeWindow = w.NativeWindow + // This is where you could call some GTK-specific APIs on this window + () + BrowserApp.run (SimpleBrowserApp.app onMainWindowCreated) + + [] + let main argv = + Application.Init () + + // let wv = new WebView(WidthRequest = 400, HeightRequest = 100, Hexpand = true) + // let window = new Window("WebView Sample") + // window.Add wv + // wv.LoadUri "https://en.wikipedia.org/" + // window.DeleteEvent.Add (fun _ -> Application.Quit ()) + + // window.ShowAll () + + runApp () + + Application.Run () + 0 diff --git a/Examples/Examples.SharedCode/Library.fs b/Examples/Examples.SharedCode/Library.fs index b7b88a1..2c7363c 100644 --- a/Examples/Examples.SharedCode/Library.fs +++ b/Examples/Examples.SharedCode/Library.fs @@ -209,7 +209,8 @@ module SimpleBrowserApp = @@ -221,6 +222,8 @@ module SimpleBrowserApp = - %s
+
+ """ AppletIds.Calculator AppletIds.InjectedContent AppletIds.InterstellarDetector detectorPageUrl.AbsoluteUri AppletIds.InterWindowCommunication let selectorWindow = createWindow { defaultBrowserWindowConfig with html = Some page } diff --git a/src/Interstellar.Core/Api.fs b/src/Interstellar.Core/Api.fs index 1687b8f..abfbb94 100644 --- a/src/Interstellar.Core/Api.fs +++ b/src/Interstellar.Core/Api.fs @@ -9,10 +9,20 @@ type BrowserEngine = /// ChromiumEmbeddedFramework /// | Chromium = 0 - /// Apple's native WebKit browser engine built-in to macOS - | AppleWebKit = 0b1 + /// + /// Apple's native WebKit browser engine built-in to macOS + /// + | AppleWebKit = 1 + /// + /// GTK WebKit; part of the GNOME desktop environment + /// + | GtkWebKit = 2 /// Indicates a host GUI framework, which is whatever will be used to create new windows and interact with the graphical system of the OS. -type BrowserWindowPlatform = | Wpf = 0b01 | WinForms = 0b11 | MacOS = 0b100 +type BrowserWindowPlatform = + | Wpf = 0b0001 + | WinForms = 0b0011 + | MacOS = 0b0100 + | Gtk = 0b1000 type IBrowser = /// The address which the browser is currently displaying, if any diff --git a/src/Interstellar.GtkSharp.WebKit/Browser.fs b/src/Interstellar.GtkSharp.WebKit/Browser.fs new file mode 100644 index 0000000..cf6e541 --- /dev/null +++ b/src/Interstellar.GtkSharp.WebKit/Browser.fs @@ -0,0 +1,59 @@ +namespace Interstellar.GtkSharp.Webkit +open System +open Gtk +open Interstellar +open Interstellar.Core +open WebKit + +type Browser(config: BrowserWindowConfig) = + let wc = new WebContext() + let wkBrowser = new WebView(wc) + + let pageLoaded = new Event() + let pageTitleChanged = new Event() + let jsMsgReceived = new Event() + + do + wkBrowser.Settings.EnableDeveloperExtras <- true + wkBrowser.Settings.EnableWriteConsoleMessagesToStdout <- true + wkBrowser.UserContentManager.ScriptMessageReceived.Add (fun e -> + printfn "%A" e + ) + let s = UserScript("", UserContentInjectedFrames.AllFrames, UserScriptInjectionTime.Start, null, null) + wkBrowser.UserContentManager.AddScript(s) + if not (wkBrowser.UserContentManager.RegisterScriptMessageHandler("interstellarBridge")) then + eprintfn "Failed to register script message handler; JS bridge will not work" + + match config.address, config.html with + | Some address, Some html -> wkBrowser.LoadHtml (html, string address) + | None, Some html -> wkBrowser.LoadHtml html + | Some address, None -> wkBrowser.LoadUri (string address) + | None, None -> () + + member this.WebKitBrowser = wkBrowser + + interface IBrowser with + member this.CloseDevTools () = () + member this.Address = wkBrowser.Uri |> Option.ofObj |> Option.map Uri + member this.AreDevToolsShowing = false // TODO: implement me + member this.CanGoBack = wkBrowser.CanGoBack () + member this.CanGoForward = wkBrowser.CanGoForward () + member this.CanShowDevTools = true + member this.Engine = BrowserEngine.GtkWebKit + member this.ExecuteJavascript code = wkBrowser.RunJavascript code + member this.GoBack () = wkBrowser.GoBack () + member this.GoForward () = wkBrowser.GoForward () + [] + member this.JavascriptMessageRecieved = jsMsgReceived.Publish + member this.Load uri = wkBrowser.LoadUri (string uri) + member this.LoadAsync uri = async { return async { wkBrowser.LoadUri (string uri) } } + member this.LoadString (html, uri) = wkBrowser.LoadHtml (html, string uri) + member this.LoadStringAsync (html, uri) = async { return async { wkBrowser.LoadHtml (html, string uri) } } + [] + member this.PageLoaded = pageLoaded.Publish + member this.PageTitle = wkBrowser.Title + [] + member this.PageTitleChanged = pageTitleChanged.Publish + member this.Reload() = wkBrowser.Reload () + member this.ShowDevTools() = + wkBrowser.Inspector.Show () diff --git a/src/Interstellar.GtkSharp.WebKit/BrowserApp.fs b/src/Interstellar.GtkSharp.WebKit/BrowserApp.fs new file mode 100644 index 0000000..8f27fa6 --- /dev/null +++ b/src/Interstellar.GtkSharp.WebKit/BrowserApp.fs @@ -0,0 +1,24 @@ +namespace Interstellar.GtkSharp.Webkit +open System +open System.Threading +open Gtk +open Interstellar +open Interstellar.Core +open WebKit + +module BrowserApp = + /// Starts and runs a BrowserApp's lifecycle in a Cocoa + WebKit host, asychronously + /// indicates the thread that is to be used as the UI thread + /// Describes the application lifecycle + let runAsync mainCtx (app: BrowserApp) = async { + do! Async.SwitchToContext mainCtx + let windowCreator : BrowserWindowCreator = fun config -> + let w = new BrowserWindow(config) + BrowserWindowConfig.applyWindowTitle mainCtx w (w :> IBrowserWindow<_>).Closed config.title + upcast w + do! app.onStart mainCtx windowCreator + do! Async.SwitchToContext mainCtx + } + + let run app = Async.Start <| runAsync SynchronizationContext.Current app + diff --git a/src/Interstellar.GtkSharp.WebKit/BrowserWindow.fs b/src/Interstellar.GtkSharp.WebKit/BrowserWindow.fs new file mode 100644 index 0000000..fa7e2ce --- /dev/null +++ b/src/Interstellar.GtkSharp.WebKit/BrowserWindow.fs @@ -0,0 +1,45 @@ +namespace Interstellar.GtkSharp.Webkit +open System +open Gtk +open Interstellar +open Interstellar.Core +open WebKit + +type BrowserWindow(config: BrowserWindowConfig) as this = + inherit Window("") + + let browser = new Browser(config) + + let closedEvt = new Event<_>() + let shownEvt = new Event<_>() + let disposedEvt = new Event<_>() + + do + this.DeleteEvent.Add (fun _ -> closedEvt.Trigger ()) + this.Add browser.WebKitBrowser + + interface IBrowserWindow with + member this.Browser = upcast browser + member this.Close () = this.Close () + [] + member val Closed = closedEvt.Publish + member this.IsShowing = this.IsVisible + member this.Show () = async { + this.ShowAll () + } + member this.NativeWindow = this + member this.Platform = BrowserWindowPlatform.Gtk + [] + member val Shown = shownEvt.Publish + member this.Size + with get () = + let mutable w = 0 + let mutable h = 0 + this.GetSize (&w, &h) + float w, float h + and set (width, height) = + this.SetSizeRequest (int width, int height) + member this.Title + with get () = (this :> Window).Title + and set x = (this :> Window).Title <- x + \ No newline at end of file diff --git a/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj b/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj index ab9a580..b47f40c 100644 --- a/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj +++ b/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj @@ -7,7 +7,9 @@ - + + + diff --git a/src/Interstellar.GtkSharp.WebKit/Library.fs b/src/Interstellar.GtkSharp.WebKit/Library.fs deleted file mode 100644 index 69eea77..0000000 --- a/src/Interstellar.GtkSharp.WebKit/Library.fs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Interstellar.Webkit - -module Say = - let hello name = - printfn "Hello %s" name \ No newline at end of file From 3390517a699e2fa1f293e6fb0ac75b7dd10314ff Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 8 Oct 2023 23:58:23 -0600 Subject: [PATCH 11/19] Use preview version of WebkitGtkSharp to make scjavascript functionality work --- Examples/Examples.SharedCode/Library.fs | 3 +- paket.dependencies | 3 +- paket.lock | 37 ++++++++++++++++----- src/Interstellar.GtkSharp.WebKit/Browser.fs | 15 ++++++--- 4 files changed, 43 insertions(+), 15 deletions(-) diff --git a/Examples/Examples.SharedCode/Library.fs b/Examples/Examples.SharedCode/Library.fs index 2c7363c..6e324f2 100644 --- a/Examples/Examples.SharedCode/Library.fs +++ b/Examples/Examples.SharedCode/Library.fs @@ -209,8 +209,7 @@ module SimpleBrowserApp = diff --git a/paket.dependencies b/paket.dependencies index b524292..f681004 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,4 +1,5 @@ source https://api.nuget.org/v3/index.json +source https://nuget.pkg.github.com/GtkSharp/index.json username: "%GITHUB_NUGET_USERNAME%" password: "%GITHUB_NUGET_PASSWORD%" framework: auto-detect nuget BlackFox.MasterOfFoo @@ -7,7 +8,7 @@ nuget CefSharp.Wpf 86.0.241 nuget FSharp.Core >= 4.2.3 nuget NuGet.Build.Tasks.Pack nuget System.Text.Encodings.Web -nuget WebkitGtkSharp +nuget WebkitGtkSharp 3.24.24.114-develop group Build source https://api.nuget.org/v3/index.json diff --git a/paket.lock b/paket.lock index fbc869f..302a41f 100644 --- a/paket.lock +++ b/paket.lock @@ -1,15 +1,36 @@ RESTRICTION: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) NUGET + remote: https://nuget.pkg.github.com/GtkSharp/index.json + AtkSharp (3.24.24.114-develop) + GLibSharp (>= 3.24.24.114-develop) + CairoSharp (3.24.24.114-develop) + GdkSharp (3.24.24.114-develop) + CairoSharp (>= 3.24.24.114-develop) + GioSharp (>= 3.24.24.114-develop) + GLibSharp (>= 3.24.24.114-develop) + PangoSharp (>= 3.24.24.114-develop) + GioSharp (3.24.24.114-develop) + GLibSharp (>= 3.24.24.114-develop) + GLibSharp (3.24.24.114-develop) + GtkSharp (3.24.24.114-develop) + AtkSharp (>= 3.24.24.114-develop) + CairoSharp (>= 3.24.24.114-develop) + GdkSharp (>= 3.24.24.114-develop) + GioSharp (>= 3.24.24.114-develop) + GLibSharp (>= 3.24.24.114-develop) + PangoSharp (>= 3.24.24.114-develop) + PangoSharp (3.24.24.114-develop) + CairoSharp (>= 3.24.24.114-develop) + GLibSharp (>= 3.24.24.114-develop) + WebkitGtkSharp (3.24.24.114-develop) + GtkSharp (>= 3.24.24.114-develop) remote: https://api.nuget.org/v3/index.json - AtkSharp (3.24.24.95) - GLibSharp (>= 3.24.24.95) BlackFox.MasterOfFoo (1.0.6) - FSharp.Core (>= 4.0.0.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net45)) (&& (== net6.0) (>= net45)) (&& (== net6.0-windows7.0) (>= net45)) (&& (== net8.0) (>= net45)) (&& (== net8.0-macos) (>= net45)) (&& (== netstandard2.0) (>= net45)) - FSharp.Core (>= 4.2.3) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) - CairoSharp (3.24.24.95) - cef.redist.x64 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - cef.redist.x86 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + FSharp.Core (>= 4.0.0.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net45)) (&& (== net6.0) (>= net45)) (&& (== net6.0-macos) (== net8.0) (>= net45)) (&& (== net6.0-macos) (== net8.0-macos) (>= net45)) (&& (== net6.0-windows7.0) (>= net45)) (&& (== netstandard2.0) (>= net45)) + FSharp.Core (>= 4.2.3) - restriction: || (&& (== net472) (== net6.0-macos)) (&& (== net472) (== net8.0)) (&& (== net472) (== net8.0-macos)) (&& (== net472) (< net45)) (&& (== net48) (== net6.0-macos)) (&& (== net48) (== net8.0)) (&& (== net48) (== net8.0-macos)) (&& (== net48) (< net45)) (== net5.0-windows7.0) (== net6.0) (&& (== net6.0-macos) (== net8.0)) (&& (== net6.0-macos) (== net8.0-macos)) (== net6.0-windows7.0) (== netstandard2.0) + cef.redist.x64 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + cef.redist.x86 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) cef.redist.x64 (86.0.24) cef.redist.x86 (86.0.24) CefSharp.WinForms (86.0.241) diff --git a/src/Interstellar.GtkSharp.WebKit/Browser.fs b/src/Interstellar.GtkSharp.WebKit/Browser.fs index cf6e541..1a530ca 100644 --- a/src/Interstellar.GtkSharp.WebKit/Browser.fs +++ b/src/Interstellar.GtkSharp.WebKit/Browser.fs @@ -13,15 +13,22 @@ type Browser(config: BrowserWindowConfig) = let pageTitleChanged = new Event() let jsMsgReceived = new Event() + let wkBridgeName = "interstellarWkBridge" + do wkBrowser.Settings.EnableDeveloperExtras <- true wkBrowser.Settings.EnableWriteConsoleMessagesToStdout <- true wkBrowser.UserContentManager.ScriptMessageReceived.Add (fun e -> - printfn "%A" e + let msgAsStr = e.JsResult.JsValue |> string + jsMsgReceived.Trigger msgAsStr ) - let s = UserScript("", UserContentInjectedFrames.AllFrames, UserScriptInjectionTime.Start, null, null) - wkBrowser.UserContentManager.AddScript(s) - if not (wkBrowser.UserContentManager.RegisterScriptMessageHandler("interstellarBridge")) then + let scriptSrc = + sprintf + "window.interstellarBridge={'postMessage':function(message){window.webkit.messageHandlers.%s.postMessage(message)}}" + wkBridgeName + wkBrowser.UserContentManager.AddScript + (new UserScript(scriptSrc, UserContentInjectedFrames.AllFrames, UserScriptInjectionTime.Start, null, null)) + if not (wkBrowser.UserContentManager.RegisterScriptMessageHandler(wkBridgeName)) then eprintfn "Failed to register script message handler; JS bridge will not work" match config.address, config.html with From 3aeee608c3f36d54a83f49de2d5bd583ea3ed8d0 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Mon, 9 Oct 2023 00:34:06 -0600 Subject: [PATCH 12/19] Gtk - wait for page load --- Examples/Examples.GtkSharp.Webkit/Program.fs | 17 ++++++++----- src/Interstellar.GtkSharp.WebKit/Browser.fs | 25 +++++++++++++++++-- .../BrowserApp.fs | 2 +- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/Examples/Examples.GtkSharp.Webkit/Program.fs b/Examples/Examples.GtkSharp.Webkit/Program.fs index 048c513..6c0f836 100644 --- a/Examples/Examples.GtkSharp.Webkit/Program.fs +++ b/Examples/Examples.GtkSharp.Webkit/Program.fs @@ -1,4 +1,5 @@ -open Examples.SharedCode +open System.Threading +open Examples.SharedCode open Gtk open Interstellar open Interstellar.GtkSharp.Webkit @@ -6,11 +7,15 @@ open WebKit module Main = let runApp () = - let onMainWindowCreated (w: IBrowserWindow) = - let nativeWindow = w.NativeWindow - // This is where you could call some GTK-specific APIs on this window - () - BrowserApp.run (SimpleBrowserApp.app onMainWindowCreated) + let mainCtx = SynchronizationContext.Current + Async.Start <| async { + let onMainWindowCreated (w: IBrowserWindow) = + let nativeWindow = w.NativeWindow + // This is where you could call some GTK-specific APIs on this window + () + do! BrowserApp.runAsync mainCtx (SimpleBrowserApp.app onMainWindowCreated) + Application.Quit () + } [] let main argv = diff --git a/src/Interstellar.GtkSharp.WebKit/Browser.fs b/src/Interstellar.GtkSharp.WebKit/Browser.fs index 1a530ca..92ceb28 100644 --- a/src/Interstellar.GtkSharp.WebKit/Browser.fs +++ b/src/Interstellar.GtkSharp.WebKit/Browser.fs @@ -31,6 +31,14 @@ type Browser(config: BrowserWindowConfig) = if not (wkBrowser.UserContentManager.RegisterScriptMessageHandler(wkBridgeName)) then eprintfn "Failed to register script message handler; JS bridge will not work" + wkBrowser.LoadChanged.Add (fun e -> + // printfn $"Load changed: %A{e.LoadEvent}" + // e.Args |> Array.map string |> String.concat "," |> printfn "Args: (%d) %s" e.Args.Length + match e.LoadEvent with + | LoadEvent.Finished -> pageLoaded.Trigger (EventArgs()) + | _ -> () + ) + match config.address, config.html with | Some address, Some html -> wkBrowser.LoadHtml (html, string address) | None, Some html -> wkBrowser.LoadHtml html @@ -39,6 +47,13 @@ type Browser(config: BrowserWindowConfig) = member this.WebKitBrowser = wkBrowser + member this.AwaitLoadedThenJSReady () = async { + if wkBrowser.IsLoading then + let! _ = Async.AwaitEvent (this :> IBrowser).PageLoaded + () + return async { () } + } + interface IBrowser with member this.CloseDevTools () = () member this.Address = wkBrowser.Uri |> Option.ofObj |> Option.map Uri @@ -53,9 +68,15 @@ type Browser(config: BrowserWindowConfig) = [] member this.JavascriptMessageRecieved = jsMsgReceived.Publish member this.Load uri = wkBrowser.LoadUri (string uri) - member this.LoadAsync uri = async { return async { wkBrowser.LoadUri (string uri) } } + member this.LoadAsync uri = async { + wkBrowser.LoadUri (string uri) + return! this.AwaitLoadedThenJSReady () + } member this.LoadString (html, uri) = wkBrowser.LoadHtml (html, string uri) - member this.LoadStringAsync (html, uri) = async { return async { wkBrowser.LoadHtml (html, string uri) } } + member this.LoadStringAsync (html, uri) = async { + wkBrowser.LoadHtml (html, string uri) + return! this.AwaitLoadedThenJSReady () + } [] member this.PageLoaded = pageLoaded.Publish member this.PageTitle = wkBrowser.Title diff --git a/src/Interstellar.GtkSharp.WebKit/BrowserApp.fs b/src/Interstellar.GtkSharp.WebKit/BrowserApp.fs index 8f27fa6..ff820c5 100644 --- a/src/Interstellar.GtkSharp.WebKit/BrowserApp.fs +++ b/src/Interstellar.GtkSharp.WebKit/BrowserApp.fs @@ -7,7 +7,7 @@ open Interstellar.Core open WebKit module BrowserApp = - /// Starts and runs a BrowserApp's lifecycle in a Cocoa + WebKit host, asychronously + /// Starts and runs a BrowserApp's lifecycle in a GtkSharp + WebKit host, asynchronously /// indicates the thread that is to be used as the UI thread /// Describes the application lifecycle let runAsync mainCtx (app: BrowserApp) = async { From 2c3c8bb4152c670622a27a08313dd61d79a8b5d7 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Wed, 31 Jul 2024 17:11:21 -0500 Subject: [PATCH 13/19] Gtk - Update GtkSharp and WebkitGtkSharp --- .config/dotnet-tools.json | 9 ++-- .../Examples.GtkSharp.Webkit.fsproj | 2 +- Interstellar.Linux.sln | 1 + paket.dependencies | 5 ++- paket.lock | 41 +++++-------------- .../Interstellar.GtkSharp.WebKit.fsproj | 2 +- 6 files changed, 22 insertions(+), 38 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 38060e1..3481788 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -6,19 +6,22 @@ "version": "5.22.0", "commands": [ "fake" - ] + ], + "rollForward": false }, "paket": { "version": "8.0.3", "commands": [ "paket" - ] + ], + "rollForward": false }, "fsharp.formatting.commandtool": { "version": "11.4.3", "commands": [ "fsdocs" - ] + ], + "rollForward": false } } } \ No newline at end of file diff --git a/Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj b/Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj index b5e4ff8..8fb4d6d 100644 --- a/Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj +++ b/Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj @@ -2,7 +2,7 @@ Exe - net6.0 + net8.0 Examples.Linux.Webkit diff --git a/Interstellar.Linux.sln b/Interstellar.Linux.sln index 015bc27..7f047e4 100644 --- a/Interstellar.Linux.sln +++ b/Interstellar.Linux.sln @@ -10,6 +10,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution global.json = global.json AssemblyAndPackageInfo.props = AssemblyAndPackageInfo.props paket.dependencies = paket.dependencies + paket.lock = paket.lock EndProjectSection EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Interstellar.GtkSharp.WebKit", "src\Interstellar.GtkSharp.WebKit\Interstellar.GtkSharp.WebKit.fsproj", "{D8257812-AF39-46C2-B55F-D179D16516EA}" diff --git a/paket.dependencies b/paket.dependencies index f681004..87a9466 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,5 +1,5 @@ source https://api.nuget.org/v3/index.json -source https://nuget.pkg.github.com/GtkSharp/index.json username: "%GITHUB_NUGET_USERNAME%" password: "%GITHUB_NUGET_PASSWORD%" +#source https://nuget.pkg.github.com/GtkSharp/index.json username: "%GITHUB_NUGET_USERNAME%" password: "%GITHUB_NUGET_PASSWORD%" framework: auto-detect nuget BlackFox.MasterOfFoo @@ -8,7 +8,8 @@ nuget CefSharp.Wpf 86.0.241 nuget FSharp.Core >= 4.2.3 nuget NuGet.Build.Tasks.Pack nuget System.Text.Encodings.Web -nuget WebkitGtkSharp 3.24.24.114-develop +nuget GtkSharp 3.24.24.117-develop +nuget WebkitGtkSharp 3.24.24.117-develop group Build source https://api.nuget.org/v3/index.json diff --git a/paket.lock b/paket.lock index 302a41f..aa75fe2 100644 --- a/paket.lock +++ b/paket.lock @@ -1,40 +1,19 @@ -RESTRICTION: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) +RESTRICTION: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) NUGET - remote: https://nuget.pkg.github.com/GtkSharp/index.json - AtkSharp (3.24.24.114-develop) - GLibSharp (>= 3.24.24.114-develop) - CairoSharp (3.24.24.114-develop) - GdkSharp (3.24.24.114-develop) - CairoSharp (>= 3.24.24.114-develop) - GioSharp (>= 3.24.24.114-develop) - GLibSharp (>= 3.24.24.114-develop) - PangoSharp (>= 3.24.24.114-develop) - GioSharp (3.24.24.114-develop) - GLibSharp (>= 3.24.24.114-develop) - GLibSharp (3.24.24.114-develop) - GtkSharp (3.24.24.114-develop) - AtkSharp (>= 3.24.24.114-develop) - CairoSharp (>= 3.24.24.114-develop) - GdkSharp (>= 3.24.24.114-develop) - GioSharp (>= 3.24.24.114-develop) - GLibSharp (>= 3.24.24.114-develop) - PangoSharp (>= 3.24.24.114-develop) - PangoSharp (3.24.24.114-develop) - CairoSharp (>= 3.24.24.114-develop) - GLibSharp (>= 3.24.24.114-develop) - WebkitGtkSharp (3.24.24.114-develop) - GtkSharp (>= 3.24.24.114-develop) remote: https://api.nuget.org/v3/index.json + AtkSharp (3.24.24.117-develop) + GLibSharp (>= 3.24.24.117-develop) BlackFox.MasterOfFoo (1.0.6) - FSharp.Core (>= 4.0.0.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net45)) (&& (== net6.0) (>= net45)) (&& (== net6.0-macos) (== net8.0) (>= net45)) (&& (== net6.0-macos) (== net8.0-macos) (>= net45)) (&& (== net6.0-windows7.0) (>= net45)) (&& (== netstandard2.0) (>= net45)) - FSharp.Core (>= 4.2.3) - restriction: || (&& (== net472) (== net6.0-macos)) (&& (== net472) (== net8.0)) (&& (== net472) (== net8.0-macos)) (&& (== net472) (< net45)) (&& (== net48) (== net6.0-macos)) (&& (== net48) (== net8.0)) (&& (== net48) (== net8.0-macos)) (&& (== net48) (< net45)) (== net5.0-windows7.0) (== net6.0) (&& (== net6.0-macos) (== net8.0)) (&& (== net6.0-macos) (== net8.0-macos)) (== net6.0-windows7.0) (== netstandard2.0) - cef.redist.x64 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - cef.redist.x86 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-macos) (== net6.0-windows7.0) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + FSharp.Core (>= 4.0.0.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net45)) (&& (== net6.0-windows7.0) (>= net45)) (&& (== net8.0) (>= net45)) (&& (== net8.0-macos) (>= net45)) (&& (== netstandard2.0) (>= net45)) + FSharp.Core (>= 4.2.3) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (== netstandard2.0) + CairoSharp (3.24.24.117-develop) + cef.redist.x64 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + cef.redist.x86 (86.0.24) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) cef.redist.x64 (86.0.24) cef.redist.x86 (86.0.24) CefSharp.WinForms (86.0.241) - CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) CefSharp.Wpf (86.0.241) CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) FSharp.Core (6.0.5) diff --git a/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj b/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj index b47f40c..aa7ce29 100644 --- a/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj +++ b/src/Interstellar.GtkSharp.WebKit/Interstellar.GtkSharp.WebKit.fsproj @@ -1,7 +1,7 @@  - net6.0 + net8.0 true Interstellar.Webkit From b10e9bca61547f56389402ea31fac6fa589b80e7 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 17:39:14 -0500 Subject: [PATCH 14/19] Update build script for Linux --- .../Examples.GtkSharp.WebKit.fsproj} | 0 .../Program.fs | 0 .../paket.references | 0 Interstellar.Linux.sln | 13 ++- build/build.fs | 93 ++++++++++++------- 5 files changed, 70 insertions(+), 36 deletions(-) rename Examples/{Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj => Examples.GtkSharp.WebKit/Examples.GtkSharp.WebKit.fsproj} (100%) rename Examples/{Examples.GtkSharp.Webkit => Examples.GtkSharp.WebKit}/Program.fs (100%) rename Examples/{Examples.GtkSharp.Webkit => Examples.GtkSharp.WebKit}/paket.references (100%) diff --git a/Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj b/Examples/Examples.GtkSharp.WebKit/Examples.GtkSharp.WebKit.fsproj similarity index 100% rename from Examples/Examples.GtkSharp.Webkit/Examples.GtkSharp.Webkit.fsproj rename to Examples/Examples.GtkSharp.WebKit/Examples.GtkSharp.WebKit.fsproj diff --git a/Examples/Examples.GtkSharp.Webkit/Program.fs b/Examples/Examples.GtkSharp.WebKit/Program.fs similarity index 100% rename from Examples/Examples.GtkSharp.Webkit/Program.fs rename to Examples/Examples.GtkSharp.WebKit/Program.fs diff --git a/Examples/Examples.GtkSharp.Webkit/paket.references b/Examples/Examples.GtkSharp.WebKit/paket.references similarity index 100% rename from Examples/Examples.GtkSharp.Webkit/paket.references rename to Examples/Examples.GtkSharp.WebKit/paket.references diff --git a/Interstellar.Linux.sln b/Interstellar.Linux.sln index 7f047e4..35db9bb 100644 --- a/Interstellar.Linux.sln +++ b/Interstellar.Linux.sln @@ -15,7 +15,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Interstellar.GtkSharp.WebKit", "src\Interstellar.GtkSharp.WebKit\Interstellar.GtkSharp.WebKit.fsproj", "{D8257812-AF39-46C2-B55F-D179D16516EA}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Examples.GtkSharp.Webkit", "Examples\Examples.GtkSharp.Webkit\Examples.GtkSharp.Webkit.fsproj", "{269B546E-C1A6-4A70-AE5B-586FADCFFDB2}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Examples.GtkSharp.WebKit", "Examples\Examples.GtkSharp.WebKit\Examples.GtkSharp.WebKit.fsproj", "{269B546E-C1A6-4A70-AE5B-586FADCFFDB2}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "build", "build\build.fsproj", "{8F10DEC7-442B-46A4-AC7A-4887C3A09B2B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{E1DEB9D4-FA97-4F81-8F2C-E2583E355B58}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -43,5 +47,12 @@ Global {269B546E-C1A6-4A70-AE5B-586FADCFFDB2}.Debug|Any CPU.Build.0 = Debug|Any CPU {269B546E-C1A6-4A70-AE5B-586FADCFFDB2}.Release|Any CPU.ActiveCfg = Release|Any CPU {269B546E-C1A6-4A70-AE5B-586FADCFFDB2}.Release|Any CPU.Build.0 = Release|Any CPU + {8F10DEC7-442B-46A4-AC7A-4887C3A09B2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8F10DEC7-442B-46A4-AC7A-4887C3A09B2B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8F10DEC7-442B-46A4-AC7A-4887C3A09B2B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8F10DEC7-442B-46A4-AC7A-4887C3A09B2B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {8F10DEC7-442B-46A4-AC7A-4887C3A09B2B} = {E1DEB9D4-FA97-4F81-8F2C-E2583E355B58} EndGlobalSection EndGlobal diff --git a/build/build.fs b/build/build.fs index 4396ffe..a3d77b5 100644 --- a/build/build.fs +++ b/build/build.fs @@ -31,13 +31,16 @@ module Projects = let winFormsLib = Path.Combine (srcDir, "Interstellar.WinForms.Chromium", "Interstellar.WinForms.Chromium.fsproj") let wpfLib = Path.Combine (srcDir, "Interstellar.Wpf.Chromium", "Interstellar.Wpf.Chromium.fsproj") let macosWkLib = Path.Combine (srcDir, "Interstellar.macOS.WebKit", "Interstellar.macOS.WebKit.fsproj") + let gtkSharpLib = Path.Combine (srcDir, "Interstellar.GtkSharp.WebKit", "Interstellar.GtkSharp.WebKit.fsproj") let winFormsExampleApp = Path.Combine (examplesDir, "Examples.winForms.Chromium", "Examples.WinForms.Chromium.fsproj") let wpfExampleApp = Path.Combine (examplesDir, "Examples.Wpf.Chromium", "Examples.Wpf.Chromium.fsproj") let macosExampleApp = Path.Combine (examplesDir, "Examples.macOS.WebKit", "Examples.macOS.WebKit.fsproj") + let gtkSharpExampleApp = Path.Combine (examplesDir, "Examples.GtkSharp.WebKit", "Examples.GtkSharp.WebKit.fsproj") module Solutions = let windows = Path.Combine (repoDir, "Interstellar.Windows.sln") let macos = Path.Combine (repoDir, "Interstellar.MacOS.sln") + let linux = Path.Combine (repoDir, "Interstellar.Linux.sln") let artifactsPath = Path.Combine (repoDir, "artifacts") @@ -54,6 +57,9 @@ module Templates = let macosProjects = !! (Path.Combine (path, "**/*macos*.fsproj")) |> Seq.map (fun p -> p) + let linuxProjects = + !! (Path.Combine (path, "**/*GtkSharp*.fsproj")) + |> Seq.map (fun p -> p) type PackageInfo = XmlProvider let packageInfo = lazy(PackageInfo.Load(Path.Combine(repoDir, asmAndPackageInfoFilePath))) @@ -116,8 +122,9 @@ let addVersionInfo (versionInfo: PackageVersionInfo) = let projects = [ yield Projects.coreLib - if Environment.isWindows then yield! [Projects.chromiumLib; Projects.winFormsLib; Projects.wpfLib] - if Environment.isMacOS then yield! [Projects.macosWkLib] + if Environment.isWindows then yield! [ Projects.chromiumLib; Projects.winFormsLib; Projects.wpfLib ] + if Environment.isMacOS then yield! [ Projects.macosWkLib ] + if Environment.isLinux then yield! [ Projects.gtkSharpLib ] ] let msBuildCfg (args: TargetParameter) = @@ -151,6 +158,14 @@ let getNupkgPath version (projPath: string) = Path.Combine [|projDir; "bin"; "Release"; sprintf "%s%s.nupkg" (Path.GetFileNameWithoutExtension projPath) vstr|] +let getOsName () = + if Environment.isWindows then "Windows" + elif Environment.isMacOS then "macOS" + elif Environment.isLinux then "Linux" + else Environment.OSVersion.Platform.ToString () + +let raisePlatNotSupported () = failwithf $"Platform not supported (%s{getOsName ()})" + let Clean args = Trace.log " --- Cleaning --- " for proj in projects do @@ -159,8 +174,9 @@ let Clean args = !! (Path.Combine (artifactsPath, "**/*.nupkg")) |> File.deleteAll let projects = if Environment.isWindows then [for p in [ Projects.winFormsLib; Projects.wpfLib; yield! Templates.winProjects ] -> p] - else if Environment.isMacOS then [ yield Solutions.macos; for p in Templates.macosProjects -> p ] - else [] + elif Environment.isMacOS then [ yield Solutions.macos; for p in Templates.macosProjects -> p ] + elif Environment.isLinux then [ yield Solutions.linux; for p in Templates.linuxProjects -> p ] + else raisePlatNotSupported () for proj in projects do dotnetBuild args (addTarget "Clean") proj Shell.deleteDir ".fsdocs" @@ -169,46 +185,46 @@ let Clean args = let Restore _ = DotNet.exec id "tool" "restore" |> ignore - let proj = if Environment.isWindows then Solutions.windows else if Environment.isMacOS then Solutions.macos else failwithf "Platform not supported" - // let projects = [ - // Projects.coreLib - // if Environment.isWindows then - // Projects.winFormsLib - // Projects.wpfLib - // Projects.winFormsExampleApp - // Projects.wpfExampleApp - // elif Environment.isMacOS then - // Projects.macosWkLib - // Projects.macosExampleApp - // ] - // for proj in projects do - // Trace.logf $"Restoring: %s{proj}" - // DotNet.restore id proj + let proj = + if Environment.isWindows then + Solutions.windows + else if Environment.isMacOS then + Solutions.macos + else if Environment.isLinux then + Solutions.linux + else + raisePlatNotSupported () DotNet.restore id proj let Build args = Trace.log " --- Building --- " - // if Environment.isWindows then - // msbuild (addTarget "Restore") Solutions.windows - // else - // msbuild (addTarget "Restore") Solutions.macos - if Environment.isWindows then - dotnetBuild args (addTarget "Restore") Solutions.windows - else - dotnetBuild args (addTarget "Restore") Solutions.macos - if Environment.isWindows then - dotnetBuild args (doRestore << addTarget "Build") Projects.winFormsLib - dotnetBuild args (doRestore << addTarget "Build") Projects.wpfLib - else if Environment.isMacOS then - dotnetBuild args (doRestore << addTarget "Build") Projects.macosWkLib + + let restoreProj, buildProjs = + if Environment.isWindows then + Solutions.windows, [ Projects.winFormsLib; Projects.wpfLib ] + elif Environment.isMacOS then + Solutions.macos, [ Projects.macosWkLib ] + elif Environment.isLinux then + Solutions.linux, [ Projects.gtkSharpLib ] + else + raisePlatNotSupported () + + dotnetBuild args (addTarget "Restore") restoreProj + for proj in buildProjs do + dotnetBuild args (doRestore << addTarget "Build") proj let Run args = Trace.log " --- Running example app --- " if Environment.isWindows then DotNet.exec id "run" ("-p " + Projects.wpfExampleApp) |> ignore - else + elif Environment.isMacOS then Shell.cd (Path.GetDirectoryName Projects.macosExampleApp) dotnetBuild args (addTarget "Run") Projects.macosExampleApp + elif Environment.isLinux then + Shell.cd (Path.GetDirectoryName Projects.gtkSharpExampleApp) + dotnetBuild args (addTarget "Run") Projects.gtkSharpExampleApp + else + raisePlatNotSupported () let Test _ = Trace.log " --- Running tests --- " @@ -254,13 +270,20 @@ let BuildTemplateProjects args = DotNet.restore id proj for proj in p do DotNet.build id proj - else if Environment.isMacOS then + elif Environment.isMacOS then let p = [ yield! Templates.macosProjects ] for proj in p do dotnetBuild args (addTarget "Restore") proj for proj in p do dotnetBuild args (addTarget "Build") proj - + elif Environment.isLinux then + let p = [ yield! Templates.linuxProjects ] + for proj in p do + dotnetBuild args (addTarget "Restore") proj + for proj in p do + dotnetBuild args (addTarget "Build") proj + else + raisePlatNotSupported () let PackTemplates _ = Trace.log " --- Packing template packages --- " From 7548d1a55db634f513f44c99d893bbc1f639c3c5 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 18:28:53 -0500 Subject: [PATCH 15/19] Make Run target work on Linux --- build/build.fs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/build/build.fs b/build/build.fs index a3d77b5..c3186de 100644 --- a/build/build.fs +++ b/build/build.fs @@ -201,14 +201,14 @@ let Build args = let restoreProj, buildProjs = if Environment.isWindows then - Solutions.windows, [ Projects.winFormsLib; Projects.wpfLib ] + Solutions.windows, [ Projects.winFormsLib; Projects.wpfLib; Projects.winFormsExampleApp; Projects.wpfExampleApp ] elif Environment.isMacOS then - Solutions.macos, [ Projects.macosWkLib ] + Solutions.macos, [ Projects.macosWkLib; Projects.macosExampleApp ] elif Environment.isLinux then - Solutions.linux, [ Projects.gtkSharpLib ] + Solutions.linux, [ Projects.gtkSharpLib; Projects.gtkSharpExampleApp ] else raisePlatNotSupported () - + dotnetBuild args (addTarget "Restore") restoreProj for proj in buildProjs do dotnetBuild args (doRestore << addTarget "Build") proj @@ -339,6 +339,9 @@ let initTargets () = ==> "PackAll" ==> "All" + "Build" + ==> "Run" + "Build" ==> "BuildDocs" ==> "ReleaseDocs" From b50c536750af7cbb86fbdc321835128e35d8949a Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 18:46:52 -0500 Subject: [PATCH 16/19] Add linux to CI script --- .github/workflows/ci.yml | 28 ++++++++++++++++++++++++++++ build/build.fs | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8328915..e94fada 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,3 +59,31 @@ jobs: - name: Test run: | ./build.sh -t Test + + build-ubuntu: + name: CI (Ubuntu) + runs-on: ubuntu-latest + timeout-minutes: 25 + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.0.x + - name: Restore + run: | + dotnet tool restore + dotnet paket restore + dotnet restore Interstellar.MacOS.sln + - name: Build + run: ./build.sh -t Build + - name: Pack + run: ./build.sh -t PackAll + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: interstellar-linux + path: artifacts/ + - name: Test + run: | + ./build.sh -t Test diff --git a/build/build.fs b/build/build.fs index c3186de..d8d0da3 100644 --- a/build/build.fs +++ b/build/build.fs @@ -208,7 +208,7 @@ let Build args = Solutions.linux, [ Projects.gtkSharpLib; Projects.gtkSharpExampleApp ] else raisePlatNotSupported () - + dotnetBuild args (addTarget "Restore") restoreProj for proj in buildProjs do dotnetBuild args (doRestore << addTarget "Build") proj From 02ce1cade7e14435fee99ae54b3acb43f1936d82 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 18:53:02 -0500 Subject: [PATCH 17/19] CI workload restore --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e94fada..54a521e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,7 +43,7 @@ jobs: dotnet-version: 8.0.x - name: Restore run: | - sudo dotnet workload install macos + sudo dotnet workload restore dotnet tool restore dotnet paket restore dotnet restore Interstellar.MacOS.sln @@ -72,6 +72,7 @@ jobs: dotnet-version: 8.0.x - name: Restore run: | + sudo dotnet workload restore dotnet tool restore dotnet paket restore dotnet restore Interstellar.MacOS.sln From 49893794ae64167541a81f7129532ed89817350b Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Sun, 4 Aug 2024 18:55:45 -0500 Subject: [PATCH 18/19] More fix --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54a521e..17809d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,7 +43,7 @@ jobs: dotnet-version: 8.0.x - name: Restore run: | - sudo dotnet workload restore + sudo dotnet workload install macos dotnet tool restore dotnet paket restore dotnet restore Interstellar.MacOS.sln @@ -72,7 +72,7 @@ jobs: dotnet-version: 8.0.x - name: Restore run: | - sudo dotnet workload restore + sudo dotnet workload install macos dotnet tool restore dotnet paket restore dotnet restore Interstellar.MacOS.sln From 1dd057e85a10c47469110f4027829598792a29a4 Mon Sep 17 00:00:00 2001 From: John Wostenberg Date: Mon, 5 Aug 2024 10:18:02 -0500 Subject: [PATCH 19/19] Re-fixup paket.lock after breaking it during rebase --- paket.lock | 47 +++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/paket.lock b/paket.lock index aa75fe2..2338985 100644 --- a/paket.lock +++ b/paket.lock @@ -17,24 +17,39 @@ NUGET CefSharp.Wpf (86.0.241) CefSharp.Common (86.0.241) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (== net8.0) (== net8.0-macos) (&& (== netstandard2.0) (>= net452)) (&& (== netstandard2.0) (>= netcoreapp3.0)) FSharp.Core (6.0.5) + GdkSharp (3.24.24.117-develop) + CairoSharp (>= 3.24.24.117-develop) + GioSharp (>= 3.24.24.117-develop) + GLibSharp (>= 3.24.24.117-develop) + PangoSharp (>= 3.24.24.117-develop) + GioSharp (3.24.24.117-develop) + GLibSharp (>= 3.24.24.117-develop) + GLibSharp (3.24.24.117-develop) + GtkSharp (3.24.24.117-develop) + AtkSharp (>= 3.24.24.117-develop) + CairoSharp (>= 3.24.24.117-develop) + GdkSharp (>= 3.24.24.117-develop) + GioSharp (>= 3.24.24.117-develop) + GLibSharp (>= 3.24.24.117-develop) + PangoSharp (>= 3.24.24.117-develop) NuGet.Build.Tasks.Pack (6.10.1) - PangoSharp (3.24.24.95) - CairoSharp (>= 3.24.24.95) - GLibSharp (>= 3.24.24.95) - System.Buffers (4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (== netstandard2.0) - System.Memory (4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) - System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) - System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) - System.Numerics.Vectors (>= 4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net6.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net8.0) (>= net461)) (&& (== net8.0-macos) (>= net461)) (&& (== netstandard2.0) (>= net461)) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netcoreapp2.1)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= uap10.1)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.1)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= uap10.1)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) - System.Numerics.Vectors (4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0) (== net8.0-macos) (< netcoreapp2.0)) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.1)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (&& (== net8.0-macos) (>= uap10.1)) (== netstandard2.0) + PangoSharp (3.24.24.117-develop) + CairoSharp (>= 3.24.24.117-develop) + GLibSharp (>= 3.24.24.117-develop) + System.Buffers (4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (== netstandard2.0) + System.Memory (4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) + System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net472) (< net45)) (&& (== net48) (< net45)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) + System.Numerics.Vectors (>= 4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net8.0) (>= net461)) (&& (== net8.0-macos) (>= net461)) (&& (== netstandard2.0) (>= net461)) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= monotouch)) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net5.0-windows7.0) (< netcoreapp2.1)) (&& (== net5.0-windows7.0) (< netstandard1.1)) (&& (== net5.0-windows7.0) (< netstandard2.0)) (&& (== net5.0-windows7.0) (>= uap10.1)) (&& (== net5.0-windows7.0) (>= xamarinios)) (&& (== net5.0-windows7.0) (>= xamarinmac)) (&& (== net5.0-windows7.0) (>= xamarintvos)) (&& (== net5.0-windows7.0) (>= xamarinwatchos)) (&& (== net6.0-windows7.0) (>= monotouch)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (< netcoreapp2.1)) (&& (== net6.0-windows7.0) (< netstandard1.1)) (&& (== net6.0-windows7.0) (< netstandard2.0)) (&& (== net6.0-windows7.0) (>= uap10.1)) (&& (== net6.0-windows7.0) (>= xamarinios)) (&& (== net6.0-windows7.0) (>= xamarinmac)) (&& (== net6.0-windows7.0) (>= xamarintvos)) (&& (== net6.0-windows7.0) (>= xamarinwatchos)) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0) (>= xamarinios)) (&& (== net8.0) (>= xamarinmac)) (&& (== net8.0) (>= xamarintvos)) (&& (== net8.0) (>= xamarinwatchos)) (== net8.0-macos) (== netstandard2.0) + System.Numerics.Vectors (4.5) - restriction: || (== net472) (== net48) (&& (== net5.0-windows7.0) (>= net461)) (&& (== net5.0-windows7.0) (< netcoreapp2.0)) (&& (== net6.0-windows7.0) (>= net461)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< netcoreapp2.0)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< netcoreapp2.0) (< xamarinmac)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (&& (== net8.0) (>= monotouch)) (&& (== net8.0) (>= net461)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0) (< netcoreapp2.0)) (&& (== net8.0) (< netcoreapp2.1)) (&& (== net8.0) (< netstandard1.1)) (&& (== net8.0) (< netstandard2.0)) (&& (== net8.0) (>= uap10.1)) (&& (== net8.0-macos) (>= monotouch)) (&& (== net8.0-macos) (>= net461)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (&& (== net8.0-macos) (< netcoreapp2.0)) (&& (== net8.0-macos) (< netcoreapp2.1)) (&& (== net8.0-macos) (< netstandard1.1)) (&& (== net8.0-macos) (< netstandard2.0)) (&& (== net8.0-macos) (>= uap10.1)) (== netstandard2.0) System.Text.Encodings.Web (8.0) - System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) - System.Memory (>= 4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0) (>= net462)) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0) (== net6.0-windows7.0) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (== netstandard2.0) - WebkitGtkSharp (3.24.24.95) - GtkSharp (>= 3.24.24.95) + System.Buffers (>= 4.5.1) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Memory (>= 4.5.5) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (&& (== net6.0-windows7.0) (>= net462)) (&& (== net6.0-windows7.0) (< net6.0)) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (== net472) (== net48) (== net5.0-windows7.0) (== net6.0-windows7.0) (&& (== net8.0) (>= net462)) (&& (== net8.0) (< net6.0)) (&& (== net8.0) (< net7.0)) (&& (== net8.0-macos) (>= net462)) (&& (== net8.0-macos) (< net6.0)) (&& (== net8.0-macos) (< net7.0)) (== netstandard2.0) + WebkitGtkSharp (3.24.24.117-develop) + GtkSharp (>= 3.24.24.117-develop) GROUP Build RESTRICTION: == net8.0