From 365788d9799efb8e58520b4bcdb09c79455b4198 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 18 May 2021 05:17:00 +0200 Subject: [PATCH 01/61] Use maui-check and install net6 --- cake/msbuild.cake | 5 ++++- scripts/azure-templates-bootstrapper.yml | 26 ++++++++++++++---------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/cake/msbuild.cake b/cake/msbuild.cake index 8e99484450..e680f842bb 100644 --- a/cake/msbuild.cake +++ b/cake/msbuild.cake @@ -5,7 +5,10 @@ DirectoryPath OUTPUT_SPECIAL_NUGETS_PATH = MakeAbsolute(ROOT_PATH.Combine("outpu var NUGETS_SOURCES = new [] { OUTPUT_NUGETS_PATH.FullPath, "https://api.nuget.org/v3/index.json", - "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json", + "https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json", }; void RunNuGetRestorePackagesConfig(FilePath sln) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index f030fbac9f..d74755ac97 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -15,7 +15,7 @@ parameters: condition: succeeded() # whether or not to run this template shouldPublish: true # whether or not to publish the artifacts configuration: $(CONFIGURATION) # the build configuration - buildExternals: '' # the build number to download externals from + buildExternals: '4770100' # the build number to download externals from verbosity: $(VERBOSITY) # the level of verbosity to use when building docker: '' # the Docker image to build and use dockerArgs: '' # any additional arguments to pass to docker build @@ -26,17 +26,17 @@ parameters: installEmsdk: false # whether or not to install the Emscripten SDK jobs: -# - ${{ if and(ne(parameters.buildExternals, ''), startsWith(parameters.name, 'native_')) }}: -# - template: azure-templates-download.yml -# parameters: -# name: ${{ parameters.name }} -# displayName: ${{ parameters.displayName }} -# vmImage: ${{ parameters.vmImage }} -# condition: ${{ parameters.condition }} -# postBuildSteps: ${{ parameters.postBuildSteps }} -# buildExternals: ${{ parameters.buildExternals }} +- ${{ if and(ne(parameters.buildExternals, ''), startsWith(parameters.name, 'native_')) }}: + - template: azure-templates-download.yml + parameters: + name: ${{ parameters.name }} + displayName: ${{ parameters.displayName }} + vmImage: ${{ parameters.vmImage }} + condition: ${{ parameters.condition }} + postBuildSteps: ${{ parameters.postBuildSteps }} + buildExternals: ${{ parameters.buildExternals }} -# - ${{ if or(eq(parameters.buildExternals, ''), not(startsWith(parameters.name, 'native_'))) }}: +- ${{ if or(eq(parameters.buildExternals, ''), not(startsWith(parameters.name, 'native_'))) }}: - job: ${{ parameters.name }} displayName: ${{ parameters.displayName }} timeoutInMinutes: 120 @@ -111,6 +111,10 @@ jobs: version: $(DOTNET_VERSION) performMultiLevelLookup: true displayName: Install the correct version of .NET Core + - pwsh: dotnet tool update --global redth.net.maui.check + displayName: Install maui-check + - pwsh: maui-check --dev --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac + displayName: Install the dev version of .NET # install the mac tools - ${{ if endsWith(parameters.name, '_macos') }}: From ce332962b28b63d711e035b8504b71fe860b9fd9 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 18 May 2021 05:20:13 +0200 Subject: [PATCH 02/61] Install .net 6 --- scripts/azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 20e3525170..89da73dbff 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -24,7 +24,7 @@ variables: MONO_VERSION_LINUX: '' XCODE_VERSION: 12.4 DOTNET_VERSION_PREVIOUS: 3.1.408 - DOTNET_VERSION: 5.0.202 + DOTNET_VERSION: 6.0.100-preview.4.21255.9 CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 From 2fd8cbc62bccd5ec3d3eca613689cbee0b68e80d Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 18 May 2021 17:13:15 +0200 Subject: [PATCH 03/61] do 5.0 --- scripts/azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 89da73dbff..20e3525170 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -24,7 +24,7 @@ variables: MONO_VERSION_LINUX: '' XCODE_VERSION: 12.4 DOTNET_VERSION_PREVIOUS: 3.1.408 - DOTNET_VERSION: 6.0.100-preview.4.21255.9 + DOTNET_VERSION: 5.0.202 CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 From 8f006dac2ae0909b3480d2a32c1e582e487ab9fd Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 05:28:44 +0200 Subject: [PATCH 04/61] Revert "do 5.0" This reverts commit 2fd8cbc62bccd5ec3d3eca613689cbee0b68e80d. --- scripts/azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 20e3525170..89da73dbff 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -24,7 +24,7 @@ variables: MONO_VERSION_LINUX: '' XCODE_VERSION: 12.4 DOTNET_VERSION_PREVIOUS: 3.1.408 - DOTNET_VERSION: 5.0.202 + DOTNET_VERSION: 6.0.100-preview.4.21255.9 CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 From a1ec4e318b03b11ec60a3c93a5aa769312dfe868 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 05:29:34 +0200 Subject: [PATCH 05/61] includePreviewVersions --- scripts/azure-templates-bootstrapper.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index d74755ac97..d67f71fd7b 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -110,11 +110,12 @@ jobs: packageType: 'sdk' version: $(DOTNET_VERSION) performMultiLevelLookup: true + includePreviewVersions: true displayName: Install the correct version of .NET Core - - pwsh: dotnet tool update --global redth.net.maui.check - displayName: Install maui-check - - pwsh: maui-check --dev --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac - displayName: Install the dev version of .NET + # - pwsh: dotnet tool update --global redth.net.maui.check + # displayName: Install maui-check + # - pwsh: maui-check --dev --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac + # displayName: Install the dev version of .NET # install the mac tools - ${{ if endsWith(parameters.name, '_macos') }}: From a0820318e6ee45baea2fc31a04ed4f7ce8c64769 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 05:46:56 +0200 Subject: [PATCH 06/61] try p3 --- scripts/azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 89da73dbff..1002daa2c3 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -24,7 +24,7 @@ variables: MONO_VERSION_LINUX: '' XCODE_VERSION: 12.4 DOTNET_VERSION_PREVIOUS: 3.1.408 - DOTNET_VERSION: 6.0.100-preview.4.21255.9 + DOTNET_VERSION: 6.0.0-preview.3 CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 From ed631c62de6dd97c3a183a8712d1f8790f78fd84 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 05:53:31 +0200 Subject: [PATCH 07/61] sdfsadf --- scripts/azure-pipelines.yml | 2 +- scripts/azure-templates-bootstrapper.yml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 1002daa2c3..89da73dbff 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -24,7 +24,7 @@ variables: MONO_VERSION_LINUX: '' XCODE_VERSION: 12.4 DOTNET_VERSION_PREVIOUS: 3.1.408 - DOTNET_VERSION: 6.0.0-preview.3 + DOTNET_VERSION: 6.0.100-preview.4.21255.9 CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index d67f71fd7b..8d809a33d5 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -105,6 +105,8 @@ jobs: version: $(DOTNET_VERSION_PREVIOUS) performMultiLevelLookup: true displayName: Install the previous version of .NET Core + - pwsh: dotnet --list-sdks + displayName: Install LLVM - task: UseDotNet@2 inputs: packageType: 'sdk' From 10dd33fe3055b72e3bce29af58ab89c8c13e4cf4 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 06:07:07 +0200 Subject: [PATCH 08/61] Use the script --- scripts/azure-templates-bootstrapper.yml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 8d809a33d5..dc6b3386e0 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -105,15 +105,18 @@ jobs: version: $(DOTNET_VERSION_PREVIOUS) performMultiLevelLookup: true displayName: Install the previous version of .NET Core - - pwsh: dotnet --list-sdks - displayName: Install LLVM - - task: UseDotNet@2 - inputs: - packageType: 'sdk' - version: $(DOTNET_VERSION) - performMultiLevelLookup: true - includePreviewVersions: true - displayName: Install the correct version of .NET Core + - ${{ if endsWith(parameters.name, '_windows') }}: + - pwsh: | + Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1 + .\dotnet-install.ps1 -Version $env:DOTNET_VERSION -InstallDir "$env:AGENT_TOOLSDIRECTORY\dotnet" -Verbose + dotnet --list-sdks + displayName: Install the correct version of .NET Core + - ${{ if not(endsWith(parameters.name, '_windows')) }}: + - bash: | + curl -L https://dot.net/v1/dotnet-install.sh > dotnet-install.sh + sh dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose + dotnet --list-sdks + displayName: Install the correct version of .NET Core # - pwsh: dotnet tool update --global redth.net.maui.check # displayName: Install maui-check # - pwsh: maui-check --dev --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac From 4637cf1ee068f17c0bb309bb562f0de873026431 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 06:22:19 +0200 Subject: [PATCH 09/61] try that --- scripts/azure-templates-bootstrapper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index dc6b3386e0..4c64995aa0 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -113,7 +113,7 @@ jobs: displayName: Install the correct version of .NET Core - ${{ if not(endsWith(parameters.name, '_windows')) }}: - bash: | - curl -L https://dot.net/v1/dotnet-install.sh > dotnet-install.sh + curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh sh dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose dotnet --list-sdks displayName: Install the correct version of .NET Core From c7cc8a8a0109ebcc2cab76d7ac3d69f08f7ff7be Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 06:46:59 +0200 Subject: [PATCH 10/61] bash --- scripts/azure-templates-bootstrapper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 4c64995aa0..eb0f899f69 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -114,7 +114,7 @@ jobs: - ${{ if not(endsWith(parameters.name, '_windows')) }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - sh dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose + bash dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose dotnet --list-sdks displayName: Install the correct version of .NET Core # - pwsh: dotnet tool update --global redth.net.maui.check From f3f701f6357d0190d9ffa8734bcadc32b52819c5 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 06:47:38 +0200 Subject: [PATCH 11/61] asdf --- scripts/azure-templates-bootstrapper.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index eb0f899f69..7f16b6bc1c 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -111,7 +111,13 @@ jobs: .\dotnet-install.ps1 -Version $env:DOTNET_VERSION -InstallDir "$env:AGENT_TOOLSDIRECTORY\dotnet" -Verbose dotnet --list-sdks displayName: Install the correct version of .NET Core - - ${{ if not(endsWith(parameters.name, '_windows')) }}: + - ${{ if not(endsWith(parameters.name, '_macos')) }}: + - bash: | + curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh + sh dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose + dotnet --list-sdks + displayName: Install the correct version of .NET Core + - ${{ if not(endsWith(parameters.name, '_linux')) }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh bash dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose From 38785ef4855e840bc5c681e5f93ffd55ff803062 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 06:57:22 +0200 Subject: [PATCH 12/61] dy=uh --- scripts/azure-templates-bootstrapper.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 7f16b6bc1c..d55ad50a73 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -111,13 +111,13 @@ jobs: .\dotnet-install.ps1 -Version $env:DOTNET_VERSION -InstallDir "$env:AGENT_TOOLSDIRECTORY\dotnet" -Verbose dotnet --list-sdks displayName: Install the correct version of .NET Core - - ${{ if not(endsWith(parameters.name, '_macos')) }}: + - ${{ if endsWith(parameters.name, '_macos') }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh sh dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose dotnet --list-sdks displayName: Install the correct version of .NET Core - - ${{ if not(endsWith(parameters.name, '_linux')) }}: + - ${{ if endsWith(parameters.name, '_linux') }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh bash dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose From b9c73cdf0802bdbb4cc51dd905ee3580f17f6670 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 07:15:25 +0200 Subject: [PATCH 13/61] this --- scripts/azure-pipelines.yml | 4 +++- scripts/azure-templates-bootstrapper.yml | 27 +++++++++++++++--------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 89da73dbff..12cae30c80 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -24,7 +24,9 @@ variables: MONO_VERSION_LINUX: '' XCODE_VERSION: 12.4 DOTNET_VERSION_PREVIOUS: 3.1.408 - DOTNET_VERSION: 6.0.100-preview.4.21255.9 + DOTNET_VERSION: 5.0.202 + DOTNET_VERSION_PREVIEW: 6.0.100-preview.4.21255.9 + MAUI_CHECK_MANIFEST: https://github.com/Redth/dotnet-maui-check/blob/87d70d2031de15948522f1b3b361a1a24e5c3172/manifests/maui-dev.manifest.json CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index d55ad50a73..98f64eeaa4 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -105,28 +105,35 @@ jobs: version: $(DOTNET_VERSION_PREVIOUS) performMultiLevelLookup: true displayName: Install the previous version of .NET Core + - task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: $(DOTNET_VERSION) + performMultiLevelLookup: true + displayName: Install the current version of .NET Core - ${{ if endsWith(parameters.name, '_windows') }}: - pwsh: | Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1 - .\dotnet-install.ps1 -Version $env:DOTNET_VERSION -InstallDir "$env:AGENT_TOOLSDIRECTORY\dotnet" -Verbose + .\dotnet-install.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY\dotnet" -Verbose dotnet --list-sdks - displayName: Install the correct version of .NET Core + displayName: Install the preview version of .NET Core - ${{ if endsWith(parameters.name, '_macos') }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - sh dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose + sh dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose dotnet --list-sdks - displayName: Install the correct version of .NET Core + displayName: Install the preview version of .NET Core - ${{ if endsWith(parameters.name, '_linux') }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - bash dotnet-install.sh --version $DOTNET_VERSION --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose + bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose dotnet --list-sdks - displayName: Install the correct version of .NET Core - # - pwsh: dotnet tool update --global redth.net.maui.check - # displayName: Install maui-check - # - pwsh: maui-check --dev --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac - # displayName: Install the dev version of .NET + displayName: Install the preview version of .NET Core + - ${{ if not(endsWith(parameters.name, '_linux')) }}: + - pwsh: dotnet tool update --global redth.net.maui.check + displayName: Install maui-check + - pwsh: maui-check --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) + displayName: Install the dev version of .NET workloads # install the mac tools - ${{ if endsWith(parameters.name, '_macos') }}: From 1e408217507377a9796fcbb72957d289adf7aefc Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 19 May 2021 15:13:15 +0200 Subject: [PATCH 14/61] oops --- scripts/azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 12cae30c80..ee3b6f2d05 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -26,7 +26,7 @@ variables: DOTNET_VERSION_PREVIOUS: 3.1.408 DOTNET_VERSION: 5.0.202 DOTNET_VERSION_PREVIEW: 6.0.100-preview.4.21255.9 - MAUI_CHECK_MANIFEST: https://github.com/Redth/dotnet-maui-check/blob/87d70d2031de15948522f1b3b361a1a24e5c3172/manifests/maui-dev.manifest.json + MAUI_CHECK_MANIFEST: https://raw.githubusercontent.com/Redth/dotnet-maui-check/87d70d2031de15948522f1b3b361a1a24e5c3172/manifests/maui-dev.manifest.json CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 From bf4ac30b7a0bccaaed1804bc68505f361569cf6f Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Thu, 20 May 2021 22:49:30 +0200 Subject: [PATCH 15/61] Verbose run --- build.cake | 3 ++- tests/SkiaSharp.Wasm.Tests.sln | 26 +++++++++++++++++++++- utils/WasmTestRunner/WasmTestRunner.csproj | 2 +- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/build.cake b/build.cake index 1569e84208..7a1e7d522e 100644 --- a/build.cake +++ b/build.cake @@ -330,7 +330,8 @@ Task ("tests-wasm") DotNetCoreRun("./utils/WasmTestRunner/WasmTestRunner.csproj", "http://localhost:8000/ " + "-o ./tests/SkiaSharp.Wasm.Tests/TestResults/ " + - (string.IsNullOrEmpty(CHROMEWEBDRIVER) ? "" : $"-d {CHROMEWEBDRIVER}")); + (string.IsNullOrEmpty(CHROMEWEBDRIVER) ? "" : $"-d {CHROMEWEBDRIVER}") + + "-v"); } catch { failedTests++; } finally { diff --git a/tests/SkiaSharp.Wasm.Tests.sln b/tests/SkiaSharp.Wasm.Tests.sln index bbb36fef98..890e9d9b11 100644 --- a/tests/SkiaSharp.Wasm.Tests.sln +++ b/tests/SkiaSharp.Wasm.Tests.sln @@ -3,7 +3,13 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.30212.25 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Wasm.Tests", "SkiaSharp.Wasm.Tests\SkiaSharp.Wasm.Tests.csproj", "{E7D44825-9F38-4ADA-BCF5-EB9420200DE4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Wasm.Tests", "SkiaSharp.Wasm.Tests\SkiaSharp.Wasm.Tests.csproj", "{E7D44825-9F38-4ADA-BCF5-EB9420200DE4}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HarfBuzzSharp", "..\binding\HarfBuzzSharp\HarfBuzzSharp.csproj", "{1E9C7704-0C62-40AE-8D9F-139D530E8D82}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\binding\SkiaSharp\SkiaSharp.csproj", "{B020BCC5-FC01-4ADC-839E-18E63BC6D4C5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.HarfBuzz", "..\source\SkiaSharp.HarfBuzz\SkiaSharp.HarfBuzz\SkiaSharp.HarfBuzz.csproj", "{6E6DF00F-30EF-479B-92FB-B07DDE6B1259}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,5 +21,23 @@ Global {E7D44825-9F38-4ADA-BCF5-EB9420200DE4}.Debug|Any CPU.Build.0 = Debug|Any CPU {E7D44825-9F38-4ADA-BCF5-EB9420200DE4}.Release|Any CPU.ActiveCfg = Release|Any CPU {E7D44825-9F38-4ADA-BCF5-EB9420200DE4}.Release|Any CPU.Build.0 = Release|Any CPU + {1E9C7704-0C62-40AE-8D9F-139D530E8D82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E9C7704-0C62-40AE-8D9F-139D530E8D82}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E9C7704-0C62-40AE-8D9F-139D530E8D82}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E9C7704-0C62-40AE-8D9F-139D530E8D82}.Release|Any CPU.Build.0 = Release|Any CPU + {B020BCC5-FC01-4ADC-839E-18E63BC6D4C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B020BCC5-FC01-4ADC-839E-18E63BC6D4C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B020BCC5-FC01-4ADC-839E-18E63BC6D4C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B020BCC5-FC01-4ADC-839E-18E63BC6D4C5}.Release|Any CPU.Build.0 = Release|Any CPU + {6E6DF00F-30EF-479B-92FB-B07DDE6B1259}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E6DF00F-30EF-479B-92FB-B07DDE6B1259}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E6DF00F-30EF-479B-92FB-B07DDE6B1259}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E6DF00F-30EF-479B-92FB-B07DDE6B1259}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A5F69CA9-2A95-410C-A070-2B0E1759B013} EndGlobalSection EndGlobal diff --git a/utils/WasmTestRunner/WasmTestRunner.csproj b/utils/WasmTestRunner/WasmTestRunner.csproj index fbe1421883..7f73c189b1 100644 --- a/utils/WasmTestRunner/WasmTestRunner.csproj +++ b/utils/WasmTestRunner/WasmTestRunner.csproj @@ -10,7 +10,7 @@ - + \ No newline at end of file From 104d6dbd2e83a4455b989567851348f086f45d97 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 03:54:50 +0200 Subject: [PATCH 16/61] Logging --- build.cake | 8 ++++---- scripts/azure-pipelines.yml | 2 +- scripts/azure-templates-bootstrapper.yml | 2 +- utils/WasmTestRunner/Program.cs | 8 +++++--- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/build.cake b/build.cake index 7a1e7d522e..7410c42491 100644 --- a/build.cake +++ b/build.cake @@ -328,10 +328,10 @@ Task ("tests-wasm") WorkingDirectory = pubDir, }); DotNetCoreRun("./utils/WasmTestRunner/WasmTestRunner.csproj", - "http://localhost:8000/ " + - "-o ./tests/SkiaSharp.Wasm.Tests/TestResults/ " + - (string.IsNullOrEmpty(CHROMEWEBDRIVER) ? "" : $"-d {CHROMEWEBDRIVER}") + - "-v"); + "--output=\"./tests/SkiaSharp.Wasm.Tests/TestResults/\" " + + (string.IsNullOrEmpty(CHROMEWEBDRIVER) ? "" : $"--driver=\"{CHROMEWEBDRIVER}\" ") + + "--verbose " + + "\"http://127.0.0.1:8000/\" "); } catch { failedTests++; } finally { diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index ee3b6f2d05..671bf243a3 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -681,7 +681,7 @@ stages: vmImage: $(VM_IMAGE_LINUX) packages: $(MANAGED_LINUX_PACKAGES) ninja-build target: tests-wasm - additionalArgs: --skipExternals="all" --throwOnTestFailure=$(THROW_ON_TEST_FAILURE) --coverage=false --chromedriver=$(CHROMEWEBDRIVER) + additionalArgs: --verbosity=diagnostic --skipExternals="all" --throwOnTestFailure=$(THROW_ON_TEST_FAILURE) --coverage=false --chromedriver=$(CHROMEWEBDRIVER) shouldPublish: false requiredArtifacts: - native_wasm_linux diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 98f64eeaa4..66ecac5c63 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -15,7 +15,7 @@ parameters: condition: succeeded() # whether or not to run this template shouldPublish: true # whether or not to publish the artifacts configuration: $(CONFIGURATION) # the build configuration - buildExternals: '4770100' # the build number to download externals from + buildExternals: '4783684' # the build number to download externals from verbosity: $(VERBOSITY) # the level of verbosity to use when building docker: '' # the Docker image to build and use dockerArgs: '' # any additional arguments to pass to docker build diff --git a/utils/WasmTestRunner/Program.cs b/utils/WasmTestRunner/Program.cs index c9f8e1c4f1..7600077e9c 100644 --- a/utils/WasmTestRunner/Program.cs +++ b/utils/WasmTestRunner/Program.cs @@ -46,7 +46,7 @@ public static int Main(string[] args) extra = p.Parse(args); if (extra.Count > 1) - throw new OptionException(); + throw new OptionException("To many extras provided.", "extras"); Url = extra.FirstOrDefault() ?? DefaultUrl; if (string.IsNullOrEmpty(OutputPath)) @@ -56,11 +56,13 @@ public static int Main(string[] args) if (!string.IsNullOrEmpty(dir)) Directory.CreateDirectory(dir); } - catch (OptionException e) + catch (OptionException ex) { Console.Error.Write("wasm-test: "); - Console.Error.WriteLine(e.Message); + Console.Error.WriteLine(ex.Message); Console.Error.WriteLine("Try `wasm-test --help' for more information."); + if (Verbose) + Console.Error.WriteLine(ex); return 1; } From 68312a25ef4254326161b9410ec527089d64f4ff Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 04:44:53 +0200 Subject: [PATCH 17/61] soclose --- scripts/azure-pipelines.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 671bf243a3..820d259d84 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -681,12 +681,13 @@ stages: vmImage: $(VM_IMAGE_LINUX) packages: $(MANAGED_LINUX_PACKAGES) ninja-build target: tests-wasm - additionalArgs: --verbosity=diagnostic --skipExternals="all" --throwOnTestFailure=$(THROW_ON_TEST_FAILURE) --coverage=false --chromedriver=$(CHROMEWEBDRIVER) + additionalArgs: --skipExternals="all" --throwOnTestFailure=$(THROW_ON_TEST_FAILURE) --coverage=false --chromedriver=$(CHROMEWEBDRIVER) shouldPublish: false requiredArtifacts: - native_wasm_linux installEmsdk: true initScript: source ~/emsdk/emsdk_env.sh + verbosity: diagnostic postBuildSteps: - task: PublishTestResults@2 displayName: Publish the WASM test results From 745a3034d76b0d91a0f90a3c32ca5a6ff6cc71cb Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 05:01:43 +0200 Subject: [PATCH 18/61] back --- scripts/azure-pipelines.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 820d259d84..ee3b6f2d05 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -687,7 +687,6 @@ stages: - native_wasm_linux installEmsdk: true initScript: source ~/emsdk/emsdk_env.sh - verbosity: diagnostic postBuildSteps: - task: PublishTestResults@2 displayName: Publish the WASM test results From 0ebac613f25571a50d6cc917ad0d7d26973a1b7e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 16:56:54 +0200 Subject: [PATCH 19/61] Build all --- scripts/azure-templates-bootstrapper.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 66ecac5c63..62135074fa 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -15,7 +15,7 @@ parameters: condition: succeeded() # whether or not to run this template shouldPublish: true # whether or not to publish the artifacts configuration: $(CONFIGURATION) # the build configuration - buildExternals: '4783684' # the build number to download externals from + buildExternals: '' # the build number to download externals from verbosity: $(VERBOSITY) # the level of verbosity to use when building docker: '' # the Docker image to build and use dockerArgs: '' # any additional arguments to pass to docker build @@ -26,17 +26,17 @@ parameters: installEmsdk: false # whether or not to install the Emscripten SDK jobs: -- ${{ if and(ne(parameters.buildExternals, ''), startsWith(parameters.name, 'native_')) }}: - - template: azure-templates-download.yml - parameters: - name: ${{ parameters.name }} - displayName: ${{ parameters.displayName }} - vmImage: ${{ parameters.vmImage }} - condition: ${{ parameters.condition }} - postBuildSteps: ${{ parameters.postBuildSteps }} - buildExternals: ${{ parameters.buildExternals }} +# - ${{ if and(ne(parameters.buildExternals, ''), startsWith(parameters.name, 'native_')) }}: +# - template: azure-templates-download.yml +# parameters: +# name: ${{ parameters.name }} +# displayName: ${{ parameters.displayName }} +# vmImage: ${{ parameters.vmImage }} +# condition: ${{ parameters.condition }} +# postBuildSteps: ${{ parameters.postBuildSteps }} +# buildExternals: ${{ parameters.buildExternals }} -- ${{ if or(eq(parameters.buildExternals, ''), not(startsWith(parameters.name, 'native_'))) }}: +# - ${{ if or(eq(parameters.buildExternals, ''), not(startsWith(parameters.name, 'native_'))) }}: - job: ${{ parameters.name }} displayName: ${{ parameters.displayName }} timeoutInMinutes: 120 From ba01f89c1ee0ddba50cb8cc026ee4e712fa34110 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 20:35:57 +0200 Subject: [PATCH 20/61] Add net6.0-* to the binding projects --- .../Properties/SkiaSharpAssemblyInfo.cs | 11 ++++++ .../HarfBuzzSharp.Android.csproj | 10 +++--- .../monoandroid1.0/HarfBuzzSharp.targets | 22 ------------ .../HarfBuzzSharp.OSX.csproj | 3 +- .../Properties/AssemblyInfo.cs | 3 -- .../Properties/HarfBuzzSharpAssemblyInfo.cs | 11 ++++++ .../HarfBuzzSharp.iOS.csproj | 5 ++- .../Properties/AssemblyInfo.cs | 3 -- .../build/xamarinios1.0/HarfBuzzSharp.targets | 19 ---------- .../HarfBuzzSharp.tvOS.csproj | 5 ++- .../Properties/AssemblyInfo.cs | 3 -- .../xamarintvos1.0/HarfBuzzSharp.targets | 19 ---------- .../HarfBuzzSharp.watchOS.csproj | 5 ++- .../Properties/AssemblyInfo.cs | 3 -- .../xamarinwatchos1.0/HarfBuzzSharp.targets | 19 ---------- binding/HarfBuzzSharp/HarfBuzzSharp.csproj | 26 +++++++++++++- .../nuget/build/android/HarfBuzzSharp.targets | 16 +++++++++ .../nuget/build/ios/HarfBuzzSharp.targets | 13 +++++++ .../nuget/build/macos}/HarfBuzzSharp.targets | 0 .../nuget/build/tvos/HarfBuzzSharp.targets | 13 +++++++ .../nuget/build/watchos/HarfBuzzSharp.targets | 13 +++++++ .../SkiaSharp.Android.csproj | 10 +++--- .../build/monoandroid1.0/SkiaSharp.targets | 22 ------------ .../SkiaSharp.OSX/Properties/AssemblyInfo.cs | 7 ---- binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj | 3 +- .../SkiaSharp.iOS/Properties/AssemblyInfo.cs | 7 ---- binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj | 5 ++- .../build/xamarinios1.0/SkiaSharp.targets | 19 ---------- .../SkiaSharp.tvOS/Properties/AssemblyInfo.cs | 7 ---- binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj | 5 ++- .../build/xamarintvos1.0/SkiaSharp.targets | 19 ---------- .../Properties/AssemblyInfo.cs | 7 ---- .../SkiaSharp.watchOS.csproj | 5 ++- .../build/xamarinwatchos1.0/SkiaSharp.targets | 19 ---------- binding/SkiaSharp/SkiaSharp.csproj | 26 +++++++++++++- .../nuget/build/android/SkiaSharp.targets | 16 +++++++++ .../nuget/build/ios/SkiaSharp.targets | 13 +++++++ .../nuget/build/macos}/SkiaSharp.targets | 0 .../nuget/build/tvos/SkiaSharp.targets | 13 +++++++ .../nuget/build/watchos/SkiaSharp.targets | 13 +++++++ nuget/HarfbuzzSharp.nuspec | 35 +++++++++++++----- nuget/SkiaSharp.nuspec | 36 ++++++++++++++----- scripts/azure-templates-bootstrapper.yml | 22 ++++++------ source/SkiaSharp.Build.props | 3 ++ 44 files changed, 275 insertions(+), 259 deletions(-) delete mode 100644 binding/HarfBuzzSharp.Android/nuget/build/monoandroid1.0/HarfBuzzSharp.targets delete mode 100644 binding/HarfBuzzSharp.OSX/Properties/AssemblyInfo.cs delete mode 100644 binding/HarfBuzzSharp.iOS/Properties/AssemblyInfo.cs delete mode 100644 binding/HarfBuzzSharp.iOS/nuget/build/xamarinios1.0/HarfBuzzSharp.targets delete mode 100644 binding/HarfBuzzSharp.tvOS/Properties/AssemblyInfo.cs delete mode 100644 binding/HarfBuzzSharp.tvOS/nuget/build/xamarintvos1.0/HarfBuzzSharp.targets delete mode 100644 binding/HarfBuzzSharp.watchOS/Properties/AssemblyInfo.cs delete mode 100644 binding/HarfBuzzSharp.watchOS/nuget/build/xamarinwatchos1.0/HarfBuzzSharp.targets create mode 100644 binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets create mode 100644 binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets rename binding/{HarfBuzzSharp.OSX/nuget/build/xamarinmac2.0 => HarfBuzzSharp/nuget/build/macos}/HarfBuzzSharp.targets (100%) create mode 100644 binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets create mode 100644 binding/HarfBuzzSharp/nuget/build/watchos/HarfBuzzSharp.targets delete mode 100644 binding/SkiaSharp.Android/nuget/build/monoandroid1.0/SkiaSharp.targets delete mode 100644 binding/SkiaSharp.OSX/Properties/AssemblyInfo.cs delete mode 100644 binding/SkiaSharp.iOS/Properties/AssemblyInfo.cs delete mode 100644 binding/SkiaSharp.iOS/nuget/build/xamarinios1.0/SkiaSharp.targets delete mode 100644 binding/SkiaSharp.tvOS/Properties/AssemblyInfo.cs delete mode 100644 binding/SkiaSharp.tvOS/nuget/build/xamarintvos1.0/SkiaSharp.targets delete mode 100644 binding/SkiaSharp.watchOS/Properties/AssemblyInfo.cs delete mode 100644 binding/SkiaSharp.watchOS/nuget/build/xamarinwatchos1.0/SkiaSharp.targets create mode 100644 binding/SkiaSharp/nuget/build/android/SkiaSharp.targets create mode 100644 binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets rename binding/{SkiaSharp.OSX/nuget/build/xamarinmac2.0 => SkiaSharp/nuget/build/macos}/SkiaSharp.targets (100%) create mode 100644 binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets create mode 100644 binding/SkiaSharp/nuget/build/watchos/SkiaSharp.targets diff --git a/binding/Binding/Properties/SkiaSharpAssemblyInfo.cs b/binding/Binding/Properties/SkiaSharpAssemblyInfo.cs index 9c1c163d43..a1c6c5d6d6 100644 --- a/binding/Binding/Properties/SkiaSharpAssemblyInfo.cs +++ b/binding/Binding/Properties/SkiaSharpAssemblyInfo.cs @@ -36,3 +36,14 @@ "3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fd" + "dafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef00" + "65d016df")] + +[assembly: AssemblyMetadata("IsTrimmable", "True")] + +#if __IOS__ || __TVOS__ || __WATCHOS__ || __MACOS__ +// This attribute allows you to mark your assemblies as “safe to link”. +// When the attribute is present, the linker—if enabled—will process the assembly +// even if you’re using the “Link SDK assemblies only” option, which is the default for device builds. +#pragma warning disable CS0618 // Type or member is obsolete +[assembly: Foundation.LinkerSafe] +#pragma warning restore CS0618 // Type or member is obsolete +#endif diff --git a/binding/HarfBuzzSharp.Android/HarfBuzzSharp.Android.csproj b/binding/HarfBuzzSharp.Android/HarfBuzzSharp.Android.csproj index 2311a147bb..12e867d24c 100644 --- a/binding/HarfBuzzSharp.Android/HarfBuzzSharp.Android.csproj +++ b/binding/HarfBuzzSharp.Android/HarfBuzzSharp.Android.csproj @@ -8,13 +8,13 @@ $(DefineConstants);HARFBUZZ - - - - + + + + - + diff --git a/binding/HarfBuzzSharp.Android/nuget/build/monoandroid1.0/HarfBuzzSharp.targets b/binding/HarfBuzzSharp.Android/nuget/build/monoandroid1.0/HarfBuzzSharp.targets deleted file mode 100644 index e96dfcdece..0000000000 --- a/binding/HarfBuzzSharp.Android/nuget/build/monoandroid1.0/HarfBuzzSharp.targets +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - True - - - - <_HarfBuzzSharpNativeLibraryCurrPath>$([System.IO.Path]::GetDirectoryName('$(MSBuildThisFileDirectory)')) - <_HarfBuzzSharpNativeLibraryDirName>$([System.IO.Path]::GetFileName('$(_HarfBuzzSharpNativeLibraryCurrPath)')) - <_HarfBuzzSharpNativeLibraryRootDir>$(MSBuildThisFileDirectory)..\..\build\$(_HarfBuzzSharpNativeLibraryDirName)\ - - - - - - - - - - \ No newline at end of file diff --git a/binding/HarfBuzzSharp.OSX/HarfBuzzSharp.OSX.csproj b/binding/HarfBuzzSharp.OSX/HarfBuzzSharp.OSX.csproj index 5990178055..69e535c099 100644 --- a/binding/HarfBuzzSharp.OSX/HarfBuzzSharp.OSX.csproj +++ b/binding/HarfBuzzSharp.OSX/HarfBuzzSharp.OSX.csproj @@ -10,10 +10,9 @@ - + - diff --git a/binding/HarfBuzzSharp.OSX/Properties/AssemblyInfo.cs b/binding/HarfBuzzSharp.OSX/Properties/AssemblyInfo.cs deleted file mode 100644 index 9c6171d579..0000000000 --- a/binding/HarfBuzzSharp.OSX/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using Foundation; - -[assembly: LinkerSafe] diff --git a/binding/HarfBuzzSharp.Shared/Properties/HarfBuzzSharpAssemblyInfo.cs b/binding/HarfBuzzSharp.Shared/Properties/HarfBuzzSharpAssemblyInfo.cs index eb220c4ec1..23212b19e5 100644 --- a/binding/HarfBuzzSharp.Shared/Properties/HarfBuzzSharpAssemblyInfo.cs +++ b/binding/HarfBuzzSharp.Shared/Properties/HarfBuzzSharpAssemblyInfo.cs @@ -22,3 +22,14 @@ "3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fd" + "dafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef00" + "65d016df")] + +[assembly: AssemblyMetadata("IsTrimmable", "True")] + +#if __IOS__ || __TVOS__ || __WATCHOS__ || __MACOS__ +// This attribute allows you to mark your assemblies as “safe to link”. +// When the attribute is present, the linker—if enabled—will process the assembly +// even if you’re using the “Link SDK assemblies only” option, which is the default for device builds. +#pragma warning disable CS0618 // Type or member is obsolete +[assembly: Foundation.LinkerSafe] +#pragma warning restore CS0618 // Type or member is obsolete +#endif diff --git a/binding/HarfBuzzSharp.iOS/HarfBuzzSharp.iOS.csproj b/binding/HarfBuzzSharp.iOS/HarfBuzzSharp.iOS.csproj index abf2dfc003..713853002b 100644 --- a/binding/HarfBuzzSharp.iOS/HarfBuzzSharp.iOS.csproj +++ b/binding/HarfBuzzSharp.iOS/HarfBuzzSharp.iOS.csproj @@ -7,13 +7,12 @@ $(DefineConstants);HARFBUZZ - + - + - diff --git a/binding/HarfBuzzSharp.iOS/Properties/AssemblyInfo.cs b/binding/HarfBuzzSharp.iOS/Properties/AssemblyInfo.cs deleted file mode 100644 index 9c6171d579..0000000000 --- a/binding/HarfBuzzSharp.iOS/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using Foundation; - -[assembly: LinkerSafe] diff --git a/binding/HarfBuzzSharp.iOS/nuget/build/xamarinios1.0/HarfBuzzSharp.targets b/binding/HarfBuzzSharp.iOS/nuget/build/xamarinios1.0/HarfBuzzSharp.targets deleted file mode 100644 index a7e1611b01..0000000000 --- a/binding/HarfBuzzSharp.iOS/nuget/build/xamarinios1.0/HarfBuzzSharp.targets +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - True - - - - <_HarfBuzzSharpNativeLibraryCurrPath>$([System.IO.Path]::GetDirectoryName('$(MSBuildThisFileDirectory)')) - <_HarfBuzzSharpNativeLibraryDirName>$([System.IO.Path]::GetFileName('$(_HarfBuzzSharpNativeLibraryCurrPath)')) - <_HarfBuzzSharpNativeLibraryRootDir>$(MSBuildThisFileDirectory)..\..\build\$(_HarfBuzzSharpNativeLibraryDirName)\ - - - - - - - \ No newline at end of file diff --git a/binding/HarfBuzzSharp.tvOS/HarfBuzzSharp.tvOS.csproj b/binding/HarfBuzzSharp.tvOS/HarfBuzzSharp.tvOS.csproj index dec88f38a5..73ea1bdca9 100644 --- a/binding/HarfBuzzSharp.tvOS/HarfBuzzSharp.tvOS.csproj +++ b/binding/HarfBuzzSharp.tvOS/HarfBuzzSharp.tvOS.csproj @@ -7,13 +7,12 @@ $(DefineConstants);HARFBUZZ - + - + - diff --git a/binding/HarfBuzzSharp.tvOS/Properties/AssemblyInfo.cs b/binding/HarfBuzzSharp.tvOS/Properties/AssemblyInfo.cs deleted file mode 100644 index 9c6171d579..0000000000 --- a/binding/HarfBuzzSharp.tvOS/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using Foundation; - -[assembly: LinkerSafe] diff --git a/binding/HarfBuzzSharp.tvOS/nuget/build/xamarintvos1.0/HarfBuzzSharp.targets b/binding/HarfBuzzSharp.tvOS/nuget/build/xamarintvos1.0/HarfBuzzSharp.targets deleted file mode 100644 index a7e1611b01..0000000000 --- a/binding/HarfBuzzSharp.tvOS/nuget/build/xamarintvos1.0/HarfBuzzSharp.targets +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - True - - - - <_HarfBuzzSharpNativeLibraryCurrPath>$([System.IO.Path]::GetDirectoryName('$(MSBuildThisFileDirectory)')) - <_HarfBuzzSharpNativeLibraryDirName>$([System.IO.Path]::GetFileName('$(_HarfBuzzSharpNativeLibraryCurrPath)')) - <_HarfBuzzSharpNativeLibraryRootDir>$(MSBuildThisFileDirectory)..\..\build\$(_HarfBuzzSharpNativeLibraryDirName)\ - - - - - - - \ No newline at end of file diff --git a/binding/HarfBuzzSharp.watchOS/HarfBuzzSharp.watchOS.csproj b/binding/HarfBuzzSharp.watchOS/HarfBuzzSharp.watchOS.csproj index c1cf0ed931..ef11154b95 100644 --- a/binding/HarfBuzzSharp.watchOS/HarfBuzzSharp.watchOS.csproj +++ b/binding/HarfBuzzSharp.watchOS/HarfBuzzSharp.watchOS.csproj @@ -7,13 +7,12 @@ $(DefineConstants);HARFBUZZ - + - + - diff --git a/binding/HarfBuzzSharp.watchOS/Properties/AssemblyInfo.cs b/binding/HarfBuzzSharp.watchOS/Properties/AssemblyInfo.cs deleted file mode 100644 index 9c6171d579..0000000000 --- a/binding/HarfBuzzSharp.watchOS/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using Foundation; - -[assembly: LinkerSafe] diff --git a/binding/HarfBuzzSharp.watchOS/nuget/build/xamarinwatchos1.0/HarfBuzzSharp.targets b/binding/HarfBuzzSharp.watchOS/nuget/build/xamarinwatchos1.0/HarfBuzzSharp.targets deleted file mode 100644 index a7e1611b01..0000000000 --- a/binding/HarfBuzzSharp.watchOS/nuget/build/xamarinwatchos1.0/HarfBuzzSharp.targets +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - True - - - - <_HarfBuzzSharpNativeLibraryCurrPath>$([System.IO.Path]::GetDirectoryName('$(MSBuildThisFileDirectory)')) - <_HarfBuzzSharpNativeLibraryDirName>$([System.IO.Path]::GetFileName('$(_HarfBuzzSharpNativeLibraryCurrPath)')) - <_HarfBuzzSharpNativeLibraryRootDir>$(MSBuildThisFileDirectory)..\..\build\$(_HarfBuzzSharpNativeLibraryDirName)\ - - - - - - - \ No newline at end of file diff --git a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj index 205022d175..a5117c86e7 100644 --- a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj +++ b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj @@ -1,6 +1,7 @@  netstandard1.3;netstandard2.0;net462 + $(TargetFrameworks);net6.0-ios;net6.0-maccatalyst;net6.0-tvos;net6.0-macos;net6.0-android HarfBuzzSharp HarfBuzzSharp HarfBuzzSharp @@ -15,7 +16,7 @@ - + @@ -50,8 +51,31 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets new file mode 100644 index 0000000000..dcf6c0d81e --- /dev/null +++ b/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets @@ -0,0 +1,16 @@ + + + + + + True + + + + + + + + + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets new file mode 100644 index 0000000000..173428e84a --- /dev/null +++ b/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp.OSX/nuget/build/xamarinmac2.0/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/macos/HarfBuzzSharp.targets similarity index 100% rename from binding/HarfBuzzSharp.OSX/nuget/build/xamarinmac2.0/HarfBuzzSharp.targets rename to binding/HarfBuzzSharp/nuget/build/macos/HarfBuzzSharp.targets diff --git a/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets new file mode 100644 index 0000000000..3682672a4c --- /dev/null +++ b/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp/nuget/build/watchos/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/watchos/HarfBuzzSharp.targets new file mode 100644 index 0000000000..41d664c22b --- /dev/null +++ b/binding/HarfBuzzSharp/nuget/build/watchos/HarfBuzzSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/SkiaSharp.Android/SkiaSharp.Android.csproj b/binding/SkiaSharp.Android/SkiaSharp.Android.csproj index f2623cd7fc..c9e05ac8c9 100644 --- a/binding/SkiaSharp.Android/SkiaSharp.Android.csproj +++ b/binding/SkiaSharp.Android/SkiaSharp.Android.csproj @@ -7,13 +7,13 @@ monoandroid1.0 - - - - + + + + - + diff --git a/binding/SkiaSharp.Android/nuget/build/monoandroid1.0/SkiaSharp.targets b/binding/SkiaSharp.Android/nuget/build/monoandroid1.0/SkiaSharp.targets deleted file mode 100644 index a963c434ad..0000000000 --- a/binding/SkiaSharp.Android/nuget/build/monoandroid1.0/SkiaSharp.targets +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - True - - - - <_SkiaSharpNativeLibraryCurrPath>$([System.IO.Path]::GetDirectoryName('$(MSBuildThisFileDirectory)')) - <_SkiaSharpNativeLibraryDirName>$([System.IO.Path]::GetFileName('$(_SkiaSharpNativeLibraryCurrPath)')) - <_SkiaSharpNativeLibraryRootDir>$(MSBuildThisFileDirectory)..\..\build\$(_SkiaSharpNativeLibraryDirName)\ - - - - - - - - - - \ No newline at end of file diff --git a/binding/SkiaSharp.OSX/Properties/AssemblyInfo.cs b/binding/SkiaSharp.OSX/Properties/AssemblyInfo.cs deleted file mode 100644 index efc6ea06d2..0000000000 --- a/binding/SkiaSharp.OSX/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Foundation; - -// This attribute allows you to mark your assemblies as “safe to link”. -// When the attribute is present, the linker—if enabled—will process the assembly -// even if you’re using the “Link SDK assemblies only” option, which is the default for device builds. - -[assembly: LinkerSafe] diff --git a/binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj b/binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj index 38be41b899..327999eab4 100644 --- a/binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj +++ b/binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj @@ -9,10 +9,9 @@ - + - diff --git a/binding/SkiaSharp.iOS/Properties/AssemblyInfo.cs b/binding/SkiaSharp.iOS/Properties/AssemblyInfo.cs deleted file mode 100644 index efc6ea06d2..0000000000 --- a/binding/SkiaSharp.iOS/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Foundation; - -// This attribute allows you to mark your assemblies as “safe to link”. -// When the attribute is present, the linker—if enabled—will process the assembly -// even if you’re using the “Link SDK assemblies only” option, which is the default for device builds. - -[assembly: LinkerSafe] diff --git a/binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj b/binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj index 503d6f9f6e..c0f3605761 100644 --- a/binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj +++ b/binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj @@ -6,13 +6,12 @@ SkiaSharp - + - + - diff --git a/binding/SkiaSharp.iOS/nuget/build/xamarinios1.0/SkiaSharp.targets b/binding/SkiaSharp.iOS/nuget/build/xamarinios1.0/SkiaSharp.targets deleted file mode 100644 index f760e8bfd0..0000000000 --- a/binding/SkiaSharp.iOS/nuget/build/xamarinios1.0/SkiaSharp.targets +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - True - - - - <_SkiaSharpNativeLibraryCurrPath>$([System.IO.Path]::GetDirectoryName('$(MSBuildThisFileDirectory)')) - <_SkiaSharpNativeLibraryDirName>$([System.IO.Path]::GetFileName('$(_SkiaSharpNativeLibraryCurrPath)')) - <_SkiaSharpNativeLibraryRootDir>$(MSBuildThisFileDirectory)..\..\build\$(_SkiaSharpNativeLibraryDirName)\ - - - - - - - \ No newline at end of file diff --git a/binding/SkiaSharp.tvOS/Properties/AssemblyInfo.cs b/binding/SkiaSharp.tvOS/Properties/AssemblyInfo.cs deleted file mode 100644 index efc6ea06d2..0000000000 --- a/binding/SkiaSharp.tvOS/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Foundation; - -// This attribute allows you to mark your assemblies as “safe to link”. -// When the attribute is present, the linker—if enabled—will process the assembly -// even if you’re using the “Link SDK assemblies only” option, which is the default for device builds. - -[assembly: LinkerSafe] diff --git a/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj b/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj index 63fd4ecd21..14f80936a6 100644 --- a/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj +++ b/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj @@ -6,13 +6,12 @@ SkiaSharp - + - + - diff --git a/binding/SkiaSharp.tvOS/nuget/build/xamarintvos1.0/SkiaSharp.targets b/binding/SkiaSharp.tvOS/nuget/build/xamarintvos1.0/SkiaSharp.targets deleted file mode 100644 index f760e8bfd0..0000000000 --- a/binding/SkiaSharp.tvOS/nuget/build/xamarintvos1.0/SkiaSharp.targets +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - True - - - - <_SkiaSharpNativeLibraryCurrPath>$([System.IO.Path]::GetDirectoryName('$(MSBuildThisFileDirectory)')) - <_SkiaSharpNativeLibraryDirName>$([System.IO.Path]::GetFileName('$(_SkiaSharpNativeLibraryCurrPath)')) - <_SkiaSharpNativeLibraryRootDir>$(MSBuildThisFileDirectory)..\..\build\$(_SkiaSharpNativeLibraryDirName)\ - - - - - - - \ No newline at end of file diff --git a/binding/SkiaSharp.watchOS/Properties/AssemblyInfo.cs b/binding/SkiaSharp.watchOS/Properties/AssemblyInfo.cs deleted file mode 100644 index efc6ea06d2..0000000000 --- a/binding/SkiaSharp.watchOS/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Foundation; - -// This attribute allows you to mark your assemblies as “safe to link”. -// When the attribute is present, the linker—if enabled—will process the assembly -// even if you’re using the “Link SDK assemblies only” option, which is the default for device builds. - -[assembly: LinkerSafe] diff --git a/binding/SkiaSharp.watchOS/SkiaSharp.watchOS.csproj b/binding/SkiaSharp.watchOS/SkiaSharp.watchOS.csproj index 04929d737e..4f7a7e3796 100644 --- a/binding/SkiaSharp.watchOS/SkiaSharp.watchOS.csproj +++ b/binding/SkiaSharp.watchOS/SkiaSharp.watchOS.csproj @@ -6,13 +6,12 @@ SkiaSharp - + - + - diff --git a/binding/SkiaSharp.watchOS/nuget/build/xamarinwatchos1.0/SkiaSharp.targets b/binding/SkiaSharp.watchOS/nuget/build/xamarinwatchos1.0/SkiaSharp.targets deleted file mode 100644 index f760e8bfd0..0000000000 --- a/binding/SkiaSharp.watchOS/nuget/build/xamarinwatchos1.0/SkiaSharp.targets +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - True - - - - <_SkiaSharpNativeLibraryCurrPath>$([System.IO.Path]::GetDirectoryName('$(MSBuildThisFileDirectory)')) - <_SkiaSharpNativeLibraryDirName>$([System.IO.Path]::GetFileName('$(_SkiaSharpNativeLibraryCurrPath)')) - <_SkiaSharpNativeLibraryRootDir>$(MSBuildThisFileDirectory)..\..\build\$(_SkiaSharpNativeLibraryDirName)\ - - - - - - - \ No newline at end of file diff --git a/binding/SkiaSharp/SkiaSharp.csproj b/binding/SkiaSharp/SkiaSharp.csproj index 2d4142e022..1330c4b7fc 100644 --- a/binding/SkiaSharp/SkiaSharp.csproj +++ b/binding/SkiaSharp/SkiaSharp.csproj @@ -1,6 +1,7 @@  netstandard1.3;netstandard2.0;net462 + $(TargetFrameworks);net6.0-ios;net6.0-maccatalyst;net6.0-tvos;net6.0-macos;net6.0-android SkiaSharp SkiaSharp SkiaSharp @@ -14,7 +15,7 @@ - + @@ -49,8 +50,31 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets new file mode 100644 index 0000000000..7b870e572f --- /dev/null +++ b/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets @@ -0,0 +1,16 @@ + + + + + + True + + + + + + + + + + \ No newline at end of file diff --git a/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets new file mode 100644 index 0000000000..eb3a98e673 --- /dev/null +++ b/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/SkiaSharp.OSX/nuget/build/xamarinmac2.0/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/macos/SkiaSharp.targets similarity index 100% rename from binding/SkiaSharp.OSX/nuget/build/xamarinmac2.0/SkiaSharp.targets rename to binding/SkiaSharp/nuget/build/macos/SkiaSharp.targets diff --git a/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets new file mode 100644 index 0000000000..a53c273125 --- /dev/null +++ b/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/SkiaSharp/nuget/build/watchos/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/watchos/SkiaSharp.targets new file mode 100644 index 0000000000..749476e1fc --- /dev/null +++ b/binding/SkiaSharp/nuget/build/watchos/SkiaSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/nuget/HarfbuzzSharp.nuspec b/nuget/HarfbuzzSharp.nuspec index 7bab04f53d..1051c875e1 100644 --- a/nuget/HarfbuzzSharp.nuspec +++ b/nuget/HarfbuzzSharp.nuspec @@ -56,6 +56,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + + + + + + + + + @@ -84,6 +94,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + + + + + + + + + @@ -119,17 +139,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - - - - + + + + - + - + - - + diff --git a/nuget/SkiaSharp.nuspec b/nuget/SkiaSharp.nuspec index e617b28853..b3469f7b5e 100644 --- a/nuget/SkiaSharp.nuspec +++ b/nuget/SkiaSharp.nuspec @@ -57,6 +57,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + + + + + + + + + @@ -85,6 +95,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + + + + + + + + + @@ -128,20 +148,20 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - - - - + + + + - + - + - + - + \ No newline at end of file diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 62135074fa..66ecac5c63 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -15,7 +15,7 @@ parameters: condition: succeeded() # whether or not to run this template shouldPublish: true # whether or not to publish the artifacts configuration: $(CONFIGURATION) # the build configuration - buildExternals: '' # the build number to download externals from + buildExternals: '4783684' # the build number to download externals from verbosity: $(VERBOSITY) # the level of verbosity to use when building docker: '' # the Docker image to build and use dockerArgs: '' # any additional arguments to pass to docker build @@ -26,17 +26,17 @@ parameters: installEmsdk: false # whether or not to install the Emscripten SDK jobs: -# - ${{ if and(ne(parameters.buildExternals, ''), startsWith(parameters.name, 'native_')) }}: -# - template: azure-templates-download.yml -# parameters: -# name: ${{ parameters.name }} -# displayName: ${{ parameters.displayName }} -# vmImage: ${{ parameters.vmImage }} -# condition: ${{ parameters.condition }} -# postBuildSteps: ${{ parameters.postBuildSteps }} -# buildExternals: ${{ parameters.buildExternals }} +- ${{ if and(ne(parameters.buildExternals, ''), startsWith(parameters.name, 'native_')) }}: + - template: azure-templates-download.yml + parameters: + name: ${{ parameters.name }} + displayName: ${{ parameters.displayName }} + vmImage: ${{ parameters.vmImage }} + condition: ${{ parameters.condition }} + postBuildSteps: ${{ parameters.postBuildSteps }} + buildExternals: ${{ parameters.buildExternals }} -# - ${{ if or(eq(parameters.buildExternals, ''), not(startsWith(parameters.name, 'native_'))) }}: +- ${{ if or(eq(parameters.buildExternals, ''), not(startsWith(parameters.name, 'native_'))) }}: - job: ${{ parameters.name }} displayName: ${{ parameters.displayName }} timeoutInMinutes: 120 diff --git a/source/SkiaSharp.Build.props b/source/SkiaSharp.Build.props index c0646a46cc..e11bdad4ad 100644 --- a/source/SkiaSharp.Build.props +++ b/source/SkiaSharp.Build.props @@ -12,6 +12,9 @@ true true + true + + $(MSBuildThisFileDirectory)..\docs\SkiaSharpAPI 8.0 From 48c35d4fea3fa73ef1e79862a3b192ef293f1c70 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 21:40:22 +0200 Subject: [PATCH 21/61] try this --- scripts/azure-templates-bootstrapper.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 66ecac5c63..fa65bb9ef0 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -114,25 +114,25 @@ jobs: - ${{ if endsWith(parameters.name, '_windows') }}: - pwsh: | Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1 - .\dotnet-install.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY\dotnet" -Verbose + .\dotnet-install.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:ProgramFiles\dotnet" -Verbose dotnet --list-sdks displayName: Install the preview version of .NET Core - ${{ if endsWith(parameters.name, '_macos') }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - sh dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose + sh dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $HOME/dotnet --verbose dotnet --list-sdks displayName: Install the preview version of .NET Core - ${{ if endsWith(parameters.name, '_linux') }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose + bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir /usr/share/dotnet --verbose dotnet --list-sdks displayName: Install the preview version of .NET Core - ${{ if not(endsWith(parameters.name, '_linux')) }}: - pwsh: dotnet tool update --global redth.net.maui.check displayName: Install maui-check - - pwsh: maui-check --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) + - pwsh: maui-check --verbose --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) displayName: Install the dev version of .NET workloads # install the mac tools From aa7ceb4591d8b0f49ef47c7861bac0a266f8edc7 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 22:55:55 +0200 Subject: [PATCH 22/61] this way --- scripts/azure-templates-bootstrapper.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index fa65bb9ef0..a6d8a2c5ea 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -114,25 +114,27 @@ jobs: - ${{ if endsWith(parameters.name, '_windows') }}: - pwsh: | Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1 - .\dotnet-install.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:ProgramFiles\dotnet" -Verbose + .\dotnet-install.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY\dotnet" -Verbose dotnet --list-sdks displayName: Install the preview version of .NET Core - ${{ if endsWith(parameters.name, '_macos') }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - sh dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $HOME/dotnet --verbose + sh dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose dotnet --list-sdks displayName: Install the preview version of .NET Core - ${{ if endsWith(parameters.name, '_linux') }}: - bash: | curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir /usr/share/dotnet --verbose + bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose dotnet --list-sdks displayName: Install the preview version of .NET Core - ${{ if not(endsWith(parameters.name, '_linux')) }}: - pwsh: dotnet tool update --global redth.net.maui.check displayName: Install maui-check - - pwsh: maui-check --verbose --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) + - pwsh: | + $env:DOTNET_ROOT="$env:AGENT_TOOLSDIRECTORY\dotnet" + maui-check --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) displayName: Install the dev version of .NET workloads # install the mac tools From b6c083121f3e52592d04ef12fb9485e6c670dd71 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 23:04:47 +0200 Subject: [PATCH 23/61] Maybe this --- scripts/azure-templates-bootstrapper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index a6d8a2c5ea..853e08208e 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -133,7 +133,7 @@ jobs: - pwsh: dotnet tool update --global redth.net.maui.check displayName: Install maui-check - pwsh: | - $env:DOTNET_ROOT="$env:AGENT_TOOLSDIRECTORY\dotnet" + $env:DOTNET_ROOT="$env:AGENT_TOOLSDIRECTORY/dotnet" maui-check --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) displayName: Install the dev version of .NET workloads From c9843e7216f66073072ad47c1a910312465396c9 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 23:24:53 +0200 Subject: [PATCH 24/61] verbose --- scripts/azure-templates-bootstrapper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 853e08208e..de519d60f2 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -134,7 +134,7 @@ jobs: displayName: Install maui-check - pwsh: | $env:DOTNET_ROOT="$env:AGENT_TOOLSDIRECTORY/dotnet" - maui-check --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) + maui-check --verbose --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) displayName: Install the dev version of .NET workloads # install the mac tools From 0be571eeec2825c29856a5e1469f4294a86993b0 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 21 May 2021 23:46:43 +0200 Subject: [PATCH 25/61] Try install previdew VS --- scripts/azure-templates-bootstrapper.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index de519d60f2..da3b874db4 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -129,10 +129,15 @@ jobs: bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose dotnet --list-sdks displayName: Install the preview version of .NET Core + - ${{ if endsWith(parameters.name, '_windows') }}: + - pwsh: | + dotnet tool update -g dotnet-vs + vs install preview preview --quiet + echo "##vso[task.prependpath]$(vs where preview --prop=InstallationPath)\MSBuild\Current\Bin" + displayName: Install VS2019 Preview - ${{ if not(endsWith(parameters.name, '_linux')) }}: - - pwsh: dotnet tool update --global redth.net.maui.check - displayName: Install maui-check - pwsh: | + dotnet tool update -g redth.net.maui.check $env:DOTNET_ROOT="$env:AGENT_TOOLSDIRECTORY/dotnet" maui-check --verbose --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) displayName: Install the dev version of .NET workloads From 9f031ba973bbc1145fa96fd4d5a8a3d5b117127e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 06:09:31 +0200 Subject: [PATCH 26/61] This might do it --- scripts/azure-pipelines.yml | 1 + scripts/azure-templates-bootstrapper.yml | 35 ++++-------------------- scripts/install-dotnet.ps1 | 31 +++++++++++++++++++++ scripts/install-maui.ps1 | 22 +++++++++++++++ scripts/install-vs.ps1 | 26 ++++++++++++++++++ 5 files changed, 86 insertions(+), 29 deletions(-) create mode 100644 scripts/install-dotnet.ps1 create mode 100644 scripts/install-maui.ps1 create mode 100644 scripts/install-vs.ps1 diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index ee3b6f2d05..0d0991de74 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -26,6 +26,7 @@ variables: DOTNET_VERSION_PREVIOUS: 3.1.408 DOTNET_VERSION: 5.0.202 DOTNET_VERSION_PREVIEW: 6.0.100-preview.4.21255.9 + VS_VERSION_PREVIEW: 16/pre MAUI_CHECK_MANIFEST: https://raw.githubusercontent.com/Redth/dotnet-maui-check/87d70d2031de15948522f1b3b361a1a24e5c3172/manifests/maui-dev.manifest.json CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index da3b874db4..032609dfd5 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -111,36 +111,13 @@ jobs: version: $(DOTNET_VERSION) performMultiLevelLookup: true displayName: Install the current version of .NET Core - - ${{ if endsWith(parameters.name, '_windows') }}: - - pwsh: | - Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1 - .\dotnet-install.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY\dotnet" -Verbose - dotnet --list-sdks - displayName: Install the preview version of .NET Core - - ${{ if endsWith(parameters.name, '_macos') }}: - - bash: | - curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - sh dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose - dotnet --list-sdks - displayName: Install the preview version of .NET Core - - ${{ if endsWith(parameters.name, '_linux') }}: - - bash: | - curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir $AGENT_TOOLSDIRECTORY/dotnet --verbose - dotnet --list-sdks - displayName: Install the preview version of .NET Core - - ${{ if endsWith(parameters.name, '_windows') }}: - - pwsh: | - dotnet tool update -g dotnet-vs - vs install preview preview --quiet - echo "##vso[task.prependpath]$(vs where preview --prop=InstallationPath)\MSBuild\Current\Bin" - displayName: Install VS2019 Preview + - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" + displayName: Install the preview version of .NET Core + - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW + displayName: Install Visual Studio Preview - ${{ if not(endsWith(parameters.name, '_linux')) }}: - - pwsh: | - dotnet tool update -g redth.net.maui.check - $env:DOTNET_ROOT="$env:AGENT_TOOLSDIRECTORY/dotnet" - maui-check --verbose --ci --fix --non-interactive --skip androidsdk --skip xcode --skip vswin --skip vsmac --manifest $(MAUI_CHECK_MANIFEST) - displayName: Install the dev version of .NET workloads + - pwsh: .\scripts\install-maui.ps1 -Manifest $env:MAUI_CHECK_MANIFEST -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" + displayName: Install the .NET Core workloads # install the mac tools - ${{ if endsWith(parameters.name, '_macos') }}: diff --git a/scripts/install-dotnet.ps1 b/scripts/install-dotnet.ps1 new file mode 100644 index 0000000000..0a17684f7b --- /dev/null +++ b/scripts/install-dotnet.ps1 @@ -0,0 +1,31 @@ +Param( + [string] $Version, + [string] $InstallDir +) + +$ErrorActionPreference = 'Stop' + +if ($IsMacOS -or $IsLinux) { + $url = "https://dot.net/v1/dotnet-install.sh" +} else { + $url = "https://dot.net/v1/dotnet-install.ps1" +} + +Write-Host "Downloading .NET Installer..." +Invoke-WebRequest ` + -Uri "$install" ` + -OutFile (Split-Path $url -Leaf) + +Write-Host "Installing .NET $Version..." +if ($IsMacOS) { + & sh dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir "$InstallDir" --verbose +} elseif ($IsLinux) { + & bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir "$InstallDir" --verbose +} else { + .\dotnet-install.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$InstallDir" -Verbose +} + +Write-Host "Installed .NET Versions:" +& dotnet --list-sdks + +exit $LASTEXITCODE diff --git a/scripts/install-maui.ps1 b/scripts/install-maui.ps1 new file mode 100644 index 0000000000..c8b9c26eeb --- /dev/null +++ b/scripts/install-maui.ps1 @@ -0,0 +1,22 @@ +Param( + [string] $InstallDir, + [string] $Manifest +) + +$ErrorActionPreference = 'Stop' + +$env:DOTNET_ROOT="$InstallDir" + +Write-Host "Installing maui-check..." +& dotnet tool update --global redth.net.maui.check + +Write-Host "Installing Maui..." +& maui-check ` + --manifest "$Manifest" ` + --verbose --ci --fix --non-interactive ` + --skip androidsdk ` + --skip xcode ` + --skip vswin ` + --skip vsmac + +exit $LASTEXITCODE diff --git a/scripts/install-vs.ps1 b/scripts/install-vs.ps1 new file mode 100644 index 0000000000..54e7e16dec --- /dev/null +++ b/scripts/install-vs.ps1 @@ -0,0 +1,26 @@ +Param( + [string] $Version = "16/pre" +) + +$ErrorActionPreference = 'Stop' + +Write-Host "Downloading Visual Studio..." +Invoke-WebRequest -UseBasicParsing ` + -Uri "https://aka.ms/vs/$Version/vs_community.exe" ` + -OutFile vs_community.exe + +Write-Host "Installing Visual Studio..." +./vs_community.exe --passive --norestart --wait ` + --add Microsoft.VisualStudio.Workload.NetCrossPlat ` + --add Microsoft.VisualStudio.Workload.NetCoreTools ` + --add Microsoft.VisualStudio.Workload.ManagedDesktop ` + --add Microsoft.VisualStudio.Workload.Universal ` + | Out-Null + +Remove-Item vs_community.exe + +Write-Host "Installed Visual Studio Versions:" +$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" +& $vswhere -all -prerelease -property installationPath + +exit $LASTEXITCODE From 80e58cbe17516d69d0bf3a20fbbb16fd054c007c Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 06:15:57 +0200 Subject: [PATCH 27/61] Select a version --- scripts/install-vs.ps1 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/install-vs.ps1 b/scripts/install-vs.ps1 index 54e7e16dec..cba9f6111a 100644 --- a/scripts/install-vs.ps1 +++ b/scripts/install-vs.ps1 @@ -19,8 +19,15 @@ Write-Host "Installing Visual Studio..." Remove-Item vs_community.exe +Write-Host "Adding MSBuild to PATH..." +$installationPath = & $vswhere -latest -prerelease -property installationPath +Write-Host "##vso[task.prependpath]$installationPath\MSBuild\Current\Bin" + Write-Host "Installed Visual Studio Versions:" $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" & $vswhere -all -prerelease -property installationPath +Write-Host "Selected MSBuild Version:" +& msbuild -version -nologo + exit $LASTEXITCODE From 9e945d8827a712cbe1e2778faec6c0048852f097 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 06:17:07 +0200 Subject: [PATCH 28/61] ws --- scripts/azure-templates-bootstrapper.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 032609dfd5..538e47c19a 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -116,8 +116,8 @@ jobs: - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW displayName: Install Visual Studio Preview - ${{ if not(endsWith(parameters.name, '_linux')) }}: - - pwsh: .\scripts\install-maui.ps1 -Manifest $env:MAUI_CHECK_MANIFEST -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" - displayName: Install the .NET Core workloads + - pwsh: .\scripts\install-maui.ps1 -Manifest $env:MAUI_CHECK_MANIFEST -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" + displayName: Install the .NET Core workloads # install the mac tools - ${{ if endsWith(parameters.name, '_macos') }}: From c0094482d4270301821232a8948da53bcad6acb9 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 06:29:26 +0200 Subject: [PATCH 29/61] oops --- scripts/install-dotnet.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install-dotnet.ps1 b/scripts/install-dotnet.ps1 index 0a17684f7b..ff9545d384 100644 --- a/scripts/install-dotnet.ps1 +++ b/scripts/install-dotnet.ps1 @@ -13,7 +13,7 @@ if ($IsMacOS -or $IsLinux) { Write-Host "Downloading .NET Installer..." Invoke-WebRequest ` - -Uri "$install" ` + -Uri "$url" ` -OutFile (Split-Path $url -Leaf) Write-Host "Installing .NET $Version..." From d6d1d4383454e1fa882e51f687d165174808598e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 06:37:57 +0200 Subject: [PATCH 30/61] vs only runs in win --- scripts/azure-templates-bootstrapper.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 538e47c19a..2ff42618ba 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -113,8 +113,9 @@ jobs: displayName: Install the current version of .NET Core - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" displayName: Install the preview version of .NET Core - - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW - displayName: Install Visual Studio Preview + - ${{ if endsWith(parameters.name, '_windows') }}: + - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW + displayName: Install Visual Studio Preview - ${{ if not(endsWith(parameters.name, '_linux')) }}: - pwsh: .\scripts\install-maui.ps1 -Manifest $env:MAUI_CHECK_MANIFEST -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" displayName: Install the .NET Core workloads From da49047c034c7e05f125c4ce2112584f9c6197c0 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 07:09:05 +0200 Subject: [PATCH 31/61] Onlu build net6 on windows mac/linux have an old msbuild --- scripts/install-vs.ps1 | 3 ++- source/SkiaSharp.Build.props | 14 +++++++------- source/SkiaSharpSource.Mac.sln | 14 ++++++++++++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/scripts/install-vs.ps1 b/scripts/install-vs.ps1 index cba9f6111a..c319605e5b 100644 --- a/scripts/install-vs.ps1 +++ b/scripts/install-vs.ps1 @@ -19,12 +19,13 @@ Write-Host "Installing Visual Studio..." Remove-Item vs_community.exe +$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + Write-Host "Adding MSBuild to PATH..." $installationPath = & $vswhere -latest -prerelease -property installationPath Write-Host "##vso[task.prependpath]$installationPath\MSBuild\Current\Bin" Write-Host "Installed Visual Studio Versions:" -$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" & $vswhere -all -prerelease -property installationPath Write-Host "Selected MSBuild Version:" diff --git a/source/SkiaSharp.Build.props b/source/SkiaSharp.Build.props index e11bdad4ad..f53739a7c6 100644 --- a/source/SkiaSharp.Build.props +++ b/source/SkiaSharp.Build.props @@ -8,11 +8,17 @@ - part of SkiaSharp.Views.Forms: SKx00x --> + + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows))) + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX))) + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux))) + + true true - true + $(IsWindows) $(MSBuildThisFileDirectory)..\docs\SkiaSharpAPI @@ -38,12 +44,6 @@ true - - $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows))) - $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX))) - $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux))) - - Date: Sat, 22 May 2021 07:18:01 +0200 Subject: [PATCH 32/61] split net6 --- scripts/azure-pipelines.yml | 27 ++++++++++++++++++++++++ scripts/azure-templates-bootstrapper.yml | 3 +++ 2 files changed, 30 insertions(+) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 0d0991de74..c9249883fe 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -342,6 +342,32 @@ stages: - native_win32_arm64_windows - native_win32_x64_nanoserver_windows - native_wasm_linux + - template: azure-templates-bootstrapper.yml # Build Managed (Windows|.NET 6) + parameters: + name: managed_net6_windows + displayName: Managed (Windows|.NET 6) + vmImage: $(VM_IMAGE_WINDOWS) + target: libs + additionalArgs: --skipExternals="all" + requiredArtifacts: + - native_android_x86_windows + - native_android_x64_windows + - native_android_arm_windows + - native_android_arm64_windows + - native_tizen_windows + - native_uwp_angle_x86_windows + - native_uwp_angle_x64_windows + - native_uwp_angle_arm_windows + - native_uwp_angle_arm64_windows + - native_uwp_x86_windows + - native_uwp_x64_windows + - native_uwp_arm_windows + - native_uwp_arm64_windows + - native_win32_x86_windows + - native_win32_x64_windows + - native_win32_arm64_windows + - native_win32_x64_nanoserver_windows + - native_wasm_linux - template: azure-templates-bootstrapper.yml # Build Managed (macOS) parameters: name: managed_macos @@ -400,6 +426,7 @@ stages: - managed_linux - managed_macos - managed_windows + - managed_net6_windows postBuildSteps: - task: PublishBuildArtifacts@1 displayName: Publish the native artifacts diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 2ff42618ba..9002ed16f2 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -111,6 +111,9 @@ jobs: version: $(DOTNET_VERSION) performMultiLevelLookup: true displayName: Install the current version of .NET Core + + # install the bits needed for net6 builds + - ${{ if contains(parameters.name, '_net6_') }}: - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" displayName: Install the preview version of .NET Core - ${{ if endsWith(parameters.name, '_windows') }}: From 57ec145b99ba65b957fc6264ae9449f0dcee1570 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 20:12:49 +0200 Subject: [PATCH 33/61] sdfa --- scripts/install-vs.ps1 | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/install-vs.ps1 b/scripts/install-vs.ps1 index c319605e5b..e7570f7df5 100644 --- a/scripts/install-vs.ps1 +++ b/scripts/install-vs.ps1 @@ -28,7 +28,4 @@ Write-Host "##vso[task.prependpath]$installationPath\MSBuild\Current\Bin" Write-Host "Installed Visual Studio Versions:" & $vswhere -all -prerelease -property installationPath -Write-Host "Selected MSBuild Version:" -& msbuild -version -nologo - exit $LASTEXITCODE From a8a7b48c2a2ca6131a03f643b31276ec4021427f Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 21:04:43 +0200 Subject: [PATCH 34/61] this --- scripts/azure-pipelines.yml | 7 +++++++ scripts/azure-templates-bootstrapper.yml | 2 ++ source/SkiaSharp.Build.props | 5 ++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index c9249883fe..938840a68b 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -348,6 +348,8 @@ stages: displayName: Managed (Windows|.NET 6) vmImage: $(VM_IMAGE_WINDOWS) target: libs + variables: + BuildingForNet6: true additionalArgs: --skipExternals="all" requiredArtifacts: - native_android_x86_windows @@ -368,6 +370,11 @@ stages: - native_win32_arm64_windows - native_win32_x64_nanoserver_windows - native_wasm_linux + - native_ios_macos + - native_maccatalyst_macos + - native_macos_macos + - native_tvos_macos + - native_watchos_macos - template: azure-templates-bootstrapper.yml # Build Managed (macOS) parameters: name: managed_macos diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 9002ed16f2..00943998cd 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -5,6 +5,7 @@ parameters: packages: '' # any additional packages target: '' # the bootstrapper target dependsOn: [] # the dependiencies + variables: [] # the job variables requiredArtifacts: [] # the artifacts that this build needs to download demands: [] # the demands preBuildSteps: [] # any steps to run before the build @@ -45,6 +46,7 @@ jobs: demands: ${{ parameters.demands }} dependsOn: ${{ parameters.dependsOn }} condition: ${{ parameters.condition }} + variables: ${{ parameters.variables }} steps: # prepare - checkout: self diff --git a/source/SkiaSharp.Build.props b/source/SkiaSharp.Build.props index f53739a7c6..2ef0168822 100644 --- a/source/SkiaSharp.Build.props +++ b/source/SkiaSharp.Build.props @@ -18,9 +18,8 @@ true true - $(IsWindows) - - + true + false $(MSBuildThisFileDirectory)..\docs\SkiaSharpAPI 8.0 From e1812eddb79b96780955dba6827a7f1c69366ebc Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 22 May 2021 22:25:45 +0200 Subject: [PATCH 35/61] set the envvar --- scripts/install-vs.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/install-vs.ps1 b/scripts/install-vs.ps1 index e7570f7df5..3c13b524d8 100644 --- a/scripts/install-vs.ps1 +++ b/scripts/install-vs.ps1 @@ -24,6 +24,7 @@ $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.e Write-Host "Adding MSBuild to PATH..." $installationPath = & $vswhere -latest -prerelease -property installationPath Write-Host "##vso[task.prependpath]$installationPath\MSBuild\Current\Bin" +Write-Host "##vso[task.setvariable variable=VS_INSTALL]$installationPath" Write-Host "Installed Visual Studio Versions:" & $vswhere -all -prerelease -property installationPath From ed4910ff8d65249c527f253b1b2dc1d22a78e7e8 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 23 May 2021 04:47:56 +0200 Subject: [PATCH 36/61] update script --- scripts/install-vs.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install-vs.ps1 b/scripts/install-vs.ps1 index 3c13b524d8..b71d2fb65d 100644 --- a/scripts/install-vs.ps1 +++ b/scripts/install-vs.ps1 @@ -21,7 +21,7 @@ Remove-Item vs_community.exe $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -Write-Host "Adding MSBuild to PATH..." +Write-Host "Setting Environment Variables..." $installationPath = & $vswhere -latest -prerelease -property installationPath Write-Host "##vso[task.prependpath]$installationPath\MSBuild\Current\Bin" Write-Host "##vso[task.setvariable variable=VS_INSTALL]$installationPath" From 221406196de8165798ac56a488e7c62a2a65fdb9 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 23 May 2021 07:50:34 +0200 Subject: [PATCH 37/61] fix the nuspecs --- binding/HarfBuzzSharp/HarfBuzzSharp.csproj | 4 ++++ binding/SkiaSharp/SkiaSharp.csproj | 4 ++++ nuget/HarfbuzzSharp.nuspec | 8 +++++--- nuget/SkiaSharp.nuspec | 8 +++++--- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj index a5117c86e7..2da8367250 100644 --- a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj +++ b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj @@ -65,6 +65,10 @@ + + + + diff --git a/binding/SkiaSharp/SkiaSharp.csproj b/binding/SkiaSharp/SkiaSharp.csproj index 1330c4b7fc..55b67524a3 100644 --- a/binding/SkiaSharp/SkiaSharp.csproj +++ b/binding/SkiaSharp/SkiaSharp.csproj @@ -64,6 +64,10 @@ + + + + diff --git a/nuget/HarfbuzzSharp.nuspec b/nuget/HarfbuzzSharp.nuspec index 1051c875e1..949968d9de 100644 --- a/nuget/HarfbuzzSharp.nuspec +++ b/nuget/HarfbuzzSharp.nuspec @@ -144,11 +144,13 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - + + + - + - + diff --git a/nuget/SkiaSharp.nuspec b/nuget/SkiaSharp.nuspec index b3469f7b5e..dcfa105ddb 100644 --- a/nuget/SkiaSharp.nuspec +++ b/nuget/SkiaSharp.nuspec @@ -153,11 +153,13 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - + + + - + - + From d774095a0308c6f6db227c1aa2009d2aaf06cc9d Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 23 May 2021 19:46:00 +0200 Subject: [PATCH 38/61] version numbers --- nuget/HarfbuzzSharp.nuspec | 30 +++++++++++++++--------------- nuget/SkiaSharp.nuspec | 30 +++++++++++++++--------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/nuget/HarfbuzzSharp.nuspec b/nuget/HarfbuzzSharp.nuspec index 949968d9de..5cddc259f8 100644 --- a/nuget/HarfbuzzSharp.nuspec +++ b/nuget/HarfbuzzSharp.nuspec @@ -56,15 +56,15 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - + - + - + - + - + @@ -94,16 +94,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - - - - - - - - - - + + + + + + + + + + diff --git a/nuget/SkiaSharp.nuspec b/nuget/SkiaSharp.nuspec index dcfa105ddb..4776c6d363 100644 --- a/nuget/SkiaSharp.nuspec +++ b/nuget/SkiaSharp.nuspec @@ -57,15 +57,15 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - + - + - + - + - + @@ -95,16 +95,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - - - - - - - - - - + + + + + + + + + + From 89ee67bca99a38dba95ab2c60abc6acc7c53bd35 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 23 May 2021 21:04:15 +0200 Subject: [PATCH 39/61] this --- nuget/HarfbuzzSharp.nuspec | 20 ++++++++++---------- nuget/SkiaSharp.nuspec | 20 ++++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/nuget/HarfbuzzSharp.nuspec b/nuget/HarfbuzzSharp.nuspec index 5cddc259f8..b39acfe0a2 100644 --- a/nuget/HarfbuzzSharp.nuspec +++ b/nuget/HarfbuzzSharp.nuspec @@ -94,16 +94,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - - - - - - - - - - + + + + + + + + + + diff --git a/nuget/SkiaSharp.nuspec b/nuget/SkiaSharp.nuspec index 4776c6d363..5deaadb60c 100644 --- a/nuget/SkiaSharp.nuspec +++ b/nuget/SkiaSharp.nuspec @@ -95,16 +95,16 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - - - - - - - - - - + + + + + + + + + + From 3fad23fa37d1ec6a4b07a9199e501e62e6e393a9 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 23 May 2021 23:33:34 +0200 Subject: [PATCH 40/61] Fix the cake --- cake/UtilsManaged.cake | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/cake/UtilsManaged.cake b/cake/UtilsManaged.cake index bf098b8020..bc514d1748 100644 --- a/cake/UtilsManaged.cake +++ b/cake/UtilsManaged.cake @@ -203,9 +203,31 @@ string[] GetReferenceSearchPaths() return refs.ToArray(); } +string[] GetDotNetPacksSearchPaths() +{ + var refs = new List(); + + RunProcess("dotnet", "--list-sdks", out var sdks); + + var last = sdks.Last(); + var start = last.IndexOf("[") + 1; + var latestSdk = (DirectoryPath)(last.Substring(start, last.Length - start - 1)); + var dotnetRoot = latestSdk.Combine(".."); + + var packs = GetDirectories(dotnetRoot.Combine("packs").FullPath + "/*.Ref"); + + foreach(var pack in packs) { + var latestPath = GetDirectories(pack.FullPath + "/*").Last(); + refs.AddRange(GetDirectories(latestPath.FullPath + "/ref/net*").Select(d => d.FullPath)); + } + + return refs.ToArray(); +} + async Task CreateNuGetDiffAsync() { var comparer = new NuGetDiff(); + comparer.SearchPaths.AddRange(GetDotNetPacksSearchPaths()); comparer.SearchPaths.AddRange(GetReferenceSearchPaths()); comparer.PackageCache = PACKAGE_CACHE_PATH.FullPath; From 81435a9f9a4e2849038fa1d9f5f4c048e8ff9066 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 23 May 2021 23:43:56 +0200 Subject: [PATCH 41/61] oopsies --- binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj b/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj index 14f80936a6..37c600c204 100644 --- a/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj +++ b/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj @@ -9,7 +9,7 @@ - + From a984001b2f48fcaf52d8d6763553f52d5655f771 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Mon, 24 May 2021 02:57:26 +0200 Subject: [PATCH 42/61] we need net6 --- scripts/azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 938840a68b..d1ca377b8f 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -462,7 +462,7 @@ stages: jobs: - template: azure-templates-bootstrapper.yml # API Diff parameters: - name: api_diff_windows + name: api_diff_net6_windows displayName: API Diff vmImage: $(VM_IMAGE_WINDOWS_PREVIOUS) target: docs-api-diff From ee6ea94b9f6a3980e9419dc3438d43242b719a3a Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 12 Jun 2021 12:52:46 +0200 Subject: [PATCH 43/61] update build number --- scripts/azure-templates-bootstrapper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 00943998cd..4cc026837d 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -16,7 +16,7 @@ parameters: condition: succeeded() # whether or not to run this template shouldPublish: true # whether or not to publish the artifacts configuration: $(CONFIGURATION) # the build configuration - buildExternals: '4783684' # the build number to download externals from + buildExternals: '4817377' # the build number to download externals from verbosity: $(VERBOSITY) # the level of verbosity to use when building docker: '' # the Docker image to build and use dockerArgs: '' # any additional arguments to pass to docker build From 2d7239a484ddb50d12ead6081221476b6e8d4cef Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 12 Jun 2021 13:08:27 +0200 Subject: [PATCH 44/61] Use the new previews --- scripts/azure-pipelines.yml | 8 ++++---- scripts/install-dotnet.ps1 | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index d1ca377b8f..35dae7f7a9 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -23,11 +23,11 @@ variables: MONO_VERSION_MACOS: '6_12_7' MONO_VERSION_LINUX: '' XCODE_VERSION: 12.4 - DOTNET_VERSION_PREVIOUS: 3.1.408 - DOTNET_VERSION: 5.0.202 - DOTNET_VERSION_PREVIEW: 6.0.100-preview.4.21255.9 + DOTNET_VERSION_PREVIOUS: 3.1.410 + DOTNET_VERSION: 5.0.301 + DOTNET_VERSION_PREVIEW: 6.0.100-preview.5.21302.13 VS_VERSION_PREVIEW: 16/pre - MAUI_CHECK_MANIFEST: https://raw.githubusercontent.com/Redth/dotnet-maui-check/87d70d2031de15948522f1b3b361a1a24e5c3172/manifests/maui-dev.manifest.json + MAUI_CHECK_MANIFEST: https://raw.githubusercontent.com/Redth/dotnet-maui-check/e4603b700f2983d0a734993344b626134d55afe9/manifests/maui-preview.manifest.json CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 diff --git a/scripts/install-dotnet.ps1 b/scripts/install-dotnet.ps1 index ff9545d384..4d50ce96aa 100644 --- a/scripts/install-dotnet.ps1 +++ b/scripts/install-dotnet.ps1 @@ -18,11 +18,11 @@ Invoke-WebRequest ` Write-Host "Installing .NET $Version..." if ($IsMacOS) { - & sh dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir "$InstallDir" --verbose + & sh dotnet-install.sh --version $Version --install-dir "$InstallDir" --verbose } elseif ($IsLinux) { - & bash dotnet-install.sh --version $DOTNET_VERSION_PREVIEW --install-dir "$InstallDir" --verbose + & bash dotnet-install.sh --version $Version --install-dir "$InstallDir" --verbose } else { - .\dotnet-install.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$InstallDir" -Verbose + .\dotnet-install.ps1 -Version $env:$Version -InstallDir "$InstallDir" -Verbose } Write-Host "Installed .NET Versions:" From 2f420fbaa6d76e52f6953f333264fcd4e171a330 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 12 Jun 2021 13:10:09 +0200 Subject: [PATCH 45/61] not that now --- cake/msbuild.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cake/msbuild.cake b/cake/msbuild.cake index e680f842bb..f4cbaaebd9 100644 --- a/cake/msbuild.cake +++ b/cake/msbuild.cake @@ -4,7 +4,7 @@ DirectoryPath OUTPUT_SPECIAL_NUGETS_PATH = MakeAbsolute(ROOT_PATH.Combine("outpu var NUGETS_SOURCES = new [] { OUTPUT_NUGETS_PATH.FullPath, - "https://api.nuget.org/v3/index.json", + // "https://api.nuget.org/v3/index.json", "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json", "https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json", From f955f8595e5a7e93d21a0715028c3f6e5f6b92cd Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 12 Jun 2021 16:04:33 +0200 Subject: [PATCH 46/61] Things --- scripts/install-dotnet.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/install-dotnet.ps1 b/scripts/install-dotnet.ps1 index 4d50ce96aa..f86bc46a29 100644 --- a/scripts/install-dotnet.ps1 +++ b/scripts/install-dotnet.ps1 @@ -18,11 +18,11 @@ Invoke-WebRequest ` Write-Host "Installing .NET $Version..." if ($IsMacOS) { - & sh dotnet-install.sh --version $Version --install-dir "$InstallDir" --verbose + & sh dotnet-install.sh --version "$Version" --install-dir "$InstallDir" --verbose } elseif ($IsLinux) { - & bash dotnet-install.sh --version $Version --install-dir "$InstallDir" --verbose + & bash dotnet-install.sh --version "$Version" --install-dir "$InstallDir" --verbose } else { - .\dotnet-install.ps1 -Version $env:$Version -InstallDir "$InstallDir" -Verbose + .\dotnet-install.ps1 -Version "$Version" -InstallDir "$InstallDir" -Verbose } Write-Host "Installed .NET Versions:" From 5df38d95a5d94f778ad8b96c164304f56b8118ab Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sat, 12 Jun 2021 16:51:54 +0200 Subject: [PATCH 47/61] Need that for the Uno packages --- cake/msbuild.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cake/msbuild.cake b/cake/msbuild.cake index f4cbaaebd9..e680f842bb 100644 --- a/cake/msbuild.cake +++ b/cake/msbuild.cake @@ -4,7 +4,7 @@ DirectoryPath OUTPUT_SPECIAL_NUGETS_PATH = MakeAbsolute(ROOT_PATH.Combine("outpu var NUGETS_SOURCES = new [] { OUTPUT_NUGETS_PATH.FullPath, - // "https://api.nuget.org/v3/index.json", + "https://api.nuget.org/v3/index.json", "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json", "https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json", From cbde967c84d8e95ac97e2fd1fecc5dde06360671 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 13 Jun 2021 01:11:43 +0200 Subject: [PATCH 48/61] Remove maccat and fix android --- .../HarfBuzzSharp.Android.csproj | 2 +- binding/HarfBuzzSharp/HarfBuzzSharp.csproj | 1 + .../nuget/build/android/HarfBuzzSharp.targets | 27 +++++++++++-------- .../build/monoandroid/HarfBuzzSharp.targets | 16 +++++++++++ .../SkiaSharp.Android.csproj | 2 +- binding/SkiaSharp/SkiaSharp.csproj | 1 + .../nuget/build/android/SkiaSharp.targets | 27 +++++++++++-------- .../nuget/build/monoandroid/SkiaSharp.targets | 16 +++++++++++ nuget/HarfbuzzSharp.nuspec | 4 ++- nuget/SkiaSharp.nuspec | 4 ++- 10 files changed, 74 insertions(+), 26 deletions(-) create mode 100644 binding/HarfBuzzSharp/nuget/build/monoandroid/HarfBuzzSharp.targets create mode 100644 binding/SkiaSharp/nuget/build/monoandroid/SkiaSharp.targets diff --git a/binding/HarfBuzzSharp.Android/HarfBuzzSharp.Android.csproj b/binding/HarfBuzzSharp.Android/HarfBuzzSharp.Android.csproj index 12e867d24c..5102bb273a 100644 --- a/binding/HarfBuzzSharp.Android/HarfBuzzSharp.Android.csproj +++ b/binding/HarfBuzzSharp.Android/HarfBuzzSharp.Android.csproj @@ -14,7 +14,7 @@ - + diff --git a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj index 2da8367250..5554da06cb 100644 --- a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj +++ b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj @@ -60,6 +60,7 @@ + diff --git a/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets index dcf6c0d81e..2989c45ff4 100644 --- a/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets @@ -1,16 +1,21 @@ - - - True - - - - - - - - + + + + <_FixedResolvedFileToPublish + Include="@(ResolvedFileToPublish)" + Condition=" + '%(ResolvedFileToPublish.Extension)' == '.so' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.RuntimeIdentifier)' == '' and + '%(ResolvedFileToPublish.PathInPackage)' != '' " /> + + + $([System.Text.RegularExpressions.Regex]::Match('%(_FixedResolvedFileToPublish.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp/nuget/build/monoandroid/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/monoandroid/HarfBuzzSharp.targets new file mode 100644 index 0000000000..dcf6c0d81e --- /dev/null +++ b/binding/HarfBuzzSharp/nuget/build/monoandroid/HarfBuzzSharp.targets @@ -0,0 +1,16 @@ + + + + + + True + + + + + + + + + + \ No newline at end of file diff --git a/binding/SkiaSharp.Android/SkiaSharp.Android.csproj b/binding/SkiaSharp.Android/SkiaSharp.Android.csproj index c9e05ac8c9..b249e9e3b3 100644 --- a/binding/SkiaSharp.Android/SkiaSharp.Android.csproj +++ b/binding/SkiaSharp.Android/SkiaSharp.Android.csproj @@ -13,7 +13,7 @@ - + diff --git a/binding/SkiaSharp/SkiaSharp.csproj b/binding/SkiaSharp/SkiaSharp.csproj index 55b67524a3..d018d854c6 100644 --- a/binding/SkiaSharp/SkiaSharp.csproj +++ b/binding/SkiaSharp/SkiaSharp.csproj @@ -59,6 +59,7 @@ + diff --git a/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets index 7b870e572f..2989c45ff4 100644 --- a/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets @@ -1,16 +1,21 @@ - - - True - - - - - - - - + + + + <_FixedResolvedFileToPublish + Include="@(ResolvedFileToPublish)" + Condition=" + '%(ResolvedFileToPublish.Extension)' == '.so' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.RuntimeIdentifier)' == '' and + '%(ResolvedFileToPublish.PathInPackage)' != '' " /> + + + $([System.Text.RegularExpressions.Regex]::Match('%(_FixedResolvedFileToPublish.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + + + \ No newline at end of file diff --git a/binding/SkiaSharp/nuget/build/monoandroid/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/monoandroid/SkiaSharp.targets new file mode 100644 index 0000000000..7b870e572f --- /dev/null +++ b/binding/SkiaSharp/nuget/build/monoandroid/SkiaSharp.targets @@ -0,0 +1,16 @@ + + + + + + True + + + + + + + + + + \ No newline at end of file diff --git a/nuget/HarfbuzzSharp.nuspec b/nuget/HarfbuzzSharp.nuspec index b39acfe0a2..03efbf562d 100644 --- a/nuget/HarfbuzzSharp.nuspec +++ b/nuget/HarfbuzzSharp.nuspec @@ -112,6 +112,8 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + @@ -146,7 +148,7 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - + diff --git a/nuget/SkiaSharp.nuspec b/nuget/SkiaSharp.nuspec index 602f3d0769..9251924008 100644 --- a/nuget/SkiaSharp.nuspec +++ b/nuget/SkiaSharp.nuspec @@ -113,6 +113,8 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + @@ -155,7 +157,7 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release - + From 777a2ba2fe7512becb0634f52d3c75bfc5c97452 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 13 Jun 2021 03:40:30 +0200 Subject: [PATCH 49/61] Add iOS targets --- .../HarfBuzzSharp.iOS.csproj | 2 +- binding/HarfBuzzSharp/HarfBuzzSharp.csproj | 1 + .../nuget/build/android/HarfBuzzSharp.targets | 15 +++++----- .../nuget/build/ios/HarfBuzzSharp.targets | 30 ++++++++++++++----- .../build/xamarinios/HarfBuzzSharp.targets | 13 ++++++++ binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj | 2 +- binding/SkiaSharp/SkiaSharp.csproj | 1 + .../nuget/build/android/SkiaSharp.targets | 15 +++++----- .../nuget/build/ios/SkiaSharp.targets | 30 ++++++++++++++----- .../nuget/build/xamarinios/SkiaSharp.targets | 13 ++++++++ nuget/HarfbuzzSharp.nuspec | 2 ++ nuget/SkiaSharp.nuspec | 2 ++ 12 files changed, 94 insertions(+), 32 deletions(-) create mode 100644 binding/HarfBuzzSharp/nuget/build/xamarinios/HarfBuzzSharp.targets create mode 100644 binding/SkiaSharp/nuget/build/xamarinios/SkiaSharp.targets diff --git a/binding/HarfBuzzSharp.iOS/HarfBuzzSharp.iOS.csproj b/binding/HarfBuzzSharp.iOS/HarfBuzzSharp.iOS.csproj index 713853002b..a94a6f30e3 100644 --- a/binding/HarfBuzzSharp.iOS/HarfBuzzSharp.iOS.csproj +++ b/binding/HarfBuzzSharp.iOS/HarfBuzzSharp.iOS.csproj @@ -10,7 +10,7 @@ - + diff --git a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj index 5554da06cb..444239d7c7 100644 --- a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj +++ b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj @@ -65,6 +65,7 @@ + diff --git a/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets index 2989c45ff4..77fe8e883b 100644 --- a/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets @@ -2,19 +2,20 @@ - + <_FixedResolvedFileToPublish Include="@(ResolvedFileToPublish)" - Condition=" - '%(ResolvedFileToPublish.Extension)' == '.so' and - '%(ResolvedFileToPublish.NuGetPackageId)' != '' and - '%(ResolvedFileToPublish.RuntimeIdentifier)' == '' and + Condition=" + '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Extension)' == '.so' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.RuntimeIdentifier)' == '' and '%(ResolvedFileToPublish.PathInPackage)' != '' " /> - - + $([System.Text.RegularExpressions.Regex]::Match('%(_FixedResolvedFileToPublish.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + <_FixedResolvedFileToPublish Remove="@(_FixedResolvedFileToPublish)" /> diff --git a/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets index 173428e84a..2e942f1aee 100644 --- a/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets @@ -1,13 +1,27 @@ - - - True - - - - - + + + + <_PossibleNativeFrameworks + Include="@(ResolvedFileToPublish)" + Condition=" + '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Extension)' == '' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.PathInPackage)' != ''"> + $([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.PathInPackage))))) + $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) + + + %(NuGetPackageId) + %(NuGetPackageVersion) + %(AssetType) + $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeFrameworks.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + + <_PossibleNativeFrameworks Remove="@(_PossibleNativeFrameworks)" /> + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp/nuget/build/xamarinios/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/xamarinios/HarfBuzzSharp.targets new file mode 100644 index 0000000000..173428e84a --- /dev/null +++ b/binding/HarfBuzzSharp/nuget/build/xamarinios/HarfBuzzSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj b/binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj index c0f3605761..48e259d3f6 100644 --- a/binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj +++ b/binding/SkiaSharp.iOS/SkiaSharp.iOS.csproj @@ -9,7 +9,7 @@ - + diff --git a/binding/SkiaSharp/SkiaSharp.csproj b/binding/SkiaSharp/SkiaSharp.csproj index d018d854c6..1851446049 100644 --- a/binding/SkiaSharp/SkiaSharp.csproj +++ b/binding/SkiaSharp/SkiaSharp.csproj @@ -64,6 +64,7 @@ + diff --git a/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets index 2989c45ff4..77fe8e883b 100644 --- a/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets @@ -2,19 +2,20 @@ - + <_FixedResolvedFileToPublish Include="@(ResolvedFileToPublish)" - Condition=" - '%(ResolvedFileToPublish.Extension)' == '.so' and - '%(ResolvedFileToPublish.NuGetPackageId)' != '' and - '%(ResolvedFileToPublish.RuntimeIdentifier)' == '' and + Condition=" + '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Extension)' == '.so' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.RuntimeIdentifier)' == '' and '%(ResolvedFileToPublish.PathInPackage)' != '' " /> - - + $([System.Text.RegularExpressions.Regex]::Match('%(_FixedResolvedFileToPublish.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + <_FixedResolvedFileToPublish Remove="@(_FixedResolvedFileToPublish)" /> diff --git a/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets index eb3a98e673..2e942f1aee 100644 --- a/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets @@ -1,13 +1,27 @@ - - - True - - - - - + + + + <_PossibleNativeFrameworks + Include="@(ResolvedFileToPublish)" + Condition=" + '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Extension)' == '' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.PathInPackage)' != ''"> + $([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.PathInPackage))))) + $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) + + + %(NuGetPackageId) + %(NuGetPackageVersion) + %(AssetType) + $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeFrameworks.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + + <_PossibleNativeFrameworks Remove="@(_PossibleNativeFrameworks)" /> + + \ No newline at end of file diff --git a/binding/SkiaSharp/nuget/build/xamarinios/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/xamarinios/SkiaSharp.targets new file mode 100644 index 0000000000..eb3a98e673 --- /dev/null +++ b/binding/SkiaSharp/nuget/build/xamarinios/SkiaSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/nuget/HarfbuzzSharp.nuspec b/nuget/HarfbuzzSharp.nuspec index 03efbf562d..6db88f1e8e 100644 --- a/nuget/HarfbuzzSharp.nuspec +++ b/nuget/HarfbuzzSharp.nuspec @@ -116,6 +116,8 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + diff --git a/nuget/SkiaSharp.nuspec b/nuget/SkiaSharp.nuspec index 9251924008..4c78b4540a 100644 --- a/nuget/SkiaSharp.nuspec +++ b/nuget/SkiaSharp.nuspec @@ -117,6 +117,8 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + From 1eda8f34d972f3a7c848e37dfae0889d179a8105 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 13 Jun 2021 04:50:46 +0200 Subject: [PATCH 50/61] The rest of the Apple platforms --- .../HarfBuzzSharp.OSX.csproj | 2 +- .../HarfBuzzSharp.tvOS.csproj | 2 +- .../HarfBuzzSharp.watchOS.csproj | 2 +- binding/HarfBuzzSharp/HarfBuzzSharp.csproj | 2 ++ .../nuget/build/android/HarfBuzzSharp.targets | 3 +- .../nuget/build/ios/HarfBuzzSharp.targets | 13 ++++---- .../nuget/build/macos/HarfBuzzSharp.targets | 26 +++++++++++----- .../nuget/build/tvos/HarfBuzzSharp.targets | 31 ++++++++++++++----- .../build/xamarinmac/HarfBuzzSharp.targets | 13 ++++++++ .../build/xamarintvos/HarfBuzzSharp.targets | 13 ++++++++ .../HarfBuzzSharp.targets | 0 binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj | 2 +- binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj | 2 +- .../SkiaSharp.watchOS.csproj | 2 +- binding/SkiaSharp/SkiaSharp.csproj | 2 ++ .../nuget/build/android/SkiaSharp.targets | 3 +- .../nuget/build/ios/SkiaSharp.targets | 13 ++++---- .../nuget/build/macos/SkiaSharp.targets | 26 +++++++++++----- .../nuget/build/tvos/SkiaSharp.targets | 31 ++++++++++++++----- .../nuget/build/xamarinmac/SkiaSharp.targets | 13 ++++++++ .../nuget/build/xamarintvos/SkiaSharp.targets | 13 ++++++++ .../SkiaSharp.targets | 0 nuget/HarfbuzzSharp.nuspec | 4 +++ nuget/SkiaSharp.nuspec | 4 +++ 24 files changed, 170 insertions(+), 52 deletions(-) create mode 100644 binding/HarfBuzzSharp/nuget/build/xamarinmac/HarfBuzzSharp.targets create mode 100644 binding/HarfBuzzSharp/nuget/build/xamarintvos/HarfBuzzSharp.targets rename binding/HarfBuzzSharp/nuget/build/{watchos => xamarinwatchos}/HarfBuzzSharp.targets (100%) create mode 100644 binding/SkiaSharp/nuget/build/xamarinmac/SkiaSharp.targets create mode 100644 binding/SkiaSharp/nuget/build/xamarintvos/SkiaSharp.targets rename binding/SkiaSharp/nuget/build/{watchos => xamarinwatchos}/SkiaSharp.targets (100%) diff --git a/binding/HarfBuzzSharp.OSX/HarfBuzzSharp.OSX.csproj b/binding/HarfBuzzSharp.OSX/HarfBuzzSharp.OSX.csproj index 69e535c099..96164b56e9 100644 --- a/binding/HarfBuzzSharp.OSX/HarfBuzzSharp.OSX.csproj +++ b/binding/HarfBuzzSharp.OSX/HarfBuzzSharp.OSX.csproj @@ -10,7 +10,7 @@ - + diff --git a/binding/HarfBuzzSharp.tvOS/HarfBuzzSharp.tvOS.csproj b/binding/HarfBuzzSharp.tvOS/HarfBuzzSharp.tvOS.csproj index 73ea1bdca9..332f247a74 100644 --- a/binding/HarfBuzzSharp.tvOS/HarfBuzzSharp.tvOS.csproj +++ b/binding/HarfBuzzSharp.tvOS/HarfBuzzSharp.tvOS.csproj @@ -10,7 +10,7 @@ - + diff --git a/binding/HarfBuzzSharp.watchOS/HarfBuzzSharp.watchOS.csproj b/binding/HarfBuzzSharp.watchOS/HarfBuzzSharp.watchOS.csproj index ef11154b95..a44ba487e5 100644 --- a/binding/HarfBuzzSharp.watchOS/HarfBuzzSharp.watchOS.csproj +++ b/binding/HarfBuzzSharp.watchOS/HarfBuzzSharp.watchOS.csproj @@ -10,7 +10,7 @@ - + diff --git a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj index 444239d7c7..53ecbff1b3 100644 --- a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj +++ b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj @@ -74,6 +74,7 @@ + @@ -81,6 +82,7 @@ + diff --git a/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets index 77fe8e883b..f41ecfc014 100644 --- a/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/android/HarfBuzzSharp.targets @@ -2,12 +2,13 @@ - + <_FixedResolvedFileToPublish Include="@(ResolvedFileToPublish)" Condition=" '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Filename)' == 'libHarfBuzzSharp' and '%(ResolvedFileToPublish.Extension)' == '.so' and '%(ResolvedFileToPublish.NuGetPackageId)' != '' and '%(ResolvedFileToPublish.RuntimeIdentifier)' == '' and diff --git a/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets index 2e942f1aee..83d1e74916 100644 --- a/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets @@ -2,25 +2,26 @@ - + - <_PossibleNativeFrameworks + <_PossibleNativeFramework Include="@(ResolvedFileToPublish)" Condition=" '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Filename)' == 'libHarfBuzzSharp' and '%(ResolvedFileToPublish.Extension)' == '' and '%(ResolvedFileToPublish.NuGetPackageId)' != '' and '%(ResolvedFileToPublish.PathInPackage)' != ''"> $([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.PathInPackage))))) $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) - - + + %(NuGetPackageId) %(NuGetPackageVersion) %(AssetType) - $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeFrameworks.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeFramework.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) - <_PossibleNativeFrameworks Remove="@(_PossibleNativeFrameworks)" /> + <_PossibleNativeFramework Remove="@(_PossibleNativeFramework)" /> diff --git a/binding/HarfBuzzSharp/nuget/build/macos/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/macos/HarfBuzzSharp.targets index 70a183a8fd..cffd211377 100644 --- a/binding/HarfBuzzSharp/nuget/build/macos/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/macos/HarfBuzzSharp.targets @@ -1,13 +1,23 @@ - - - True - - - - - + + + + <_PossibleNativeReference + Include="@(ResolvedFileToPublish)" + Condition=" + '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Filename)' == 'libHarfBuzzSharp' and + '%(ResolvedFileToPublish.Extension)' == '.dylib' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.PathInPackage)' != ''" /> + + Dynamic + $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeReference.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + + <_PossibleNativeReference Remove="@(_PossibleNativeReference)" /> + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets index 3682672a4c..83d1e74916 100644 --- a/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets @@ -1,13 +1,28 @@ - - - True - - - - - + + + + <_PossibleNativeFramework + Include="@(ResolvedFileToPublish)" + Condition=" + '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Filename)' == 'libHarfBuzzSharp' and + '%(ResolvedFileToPublish.Extension)' == '' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.PathInPackage)' != ''"> + $([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.PathInPackage))))) + $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) + + + %(NuGetPackageId) + %(NuGetPackageVersion) + %(AssetType) + $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeFramework.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + + <_PossibleNativeFramework Remove="@(_PossibleNativeFramework)" /> + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp/nuget/build/xamarinmac/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/xamarinmac/HarfBuzzSharp.targets new file mode 100644 index 0000000000..70a183a8fd --- /dev/null +++ b/binding/HarfBuzzSharp/nuget/build/xamarinmac/HarfBuzzSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp/nuget/build/xamarintvos/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/xamarintvos/HarfBuzzSharp.targets new file mode 100644 index 0000000000..3682672a4c --- /dev/null +++ b/binding/HarfBuzzSharp/nuget/build/xamarintvos/HarfBuzzSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/HarfBuzzSharp/nuget/build/watchos/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/xamarinwatchos/HarfBuzzSharp.targets similarity index 100% rename from binding/HarfBuzzSharp/nuget/build/watchos/HarfBuzzSharp.targets rename to binding/HarfBuzzSharp/nuget/build/xamarinwatchos/HarfBuzzSharp.targets diff --git a/binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj b/binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj index 327999eab4..55b1117faa 100644 --- a/binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj +++ b/binding/SkiaSharp.OSX/SkiaSharp.OSX.csproj @@ -9,7 +9,7 @@ - + diff --git a/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj b/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj index 37c600c204..9d0566dc41 100644 --- a/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj +++ b/binding/SkiaSharp.tvOS/SkiaSharp.tvOS.csproj @@ -9,7 +9,7 @@ - + diff --git a/binding/SkiaSharp.watchOS/SkiaSharp.watchOS.csproj b/binding/SkiaSharp.watchOS/SkiaSharp.watchOS.csproj index 4f7a7e3796..00bfb68105 100644 --- a/binding/SkiaSharp.watchOS/SkiaSharp.watchOS.csproj +++ b/binding/SkiaSharp.watchOS/SkiaSharp.watchOS.csproj @@ -9,7 +9,7 @@ - + diff --git a/binding/SkiaSharp/SkiaSharp.csproj b/binding/SkiaSharp/SkiaSharp.csproj index 1851446049..97ea215310 100644 --- a/binding/SkiaSharp/SkiaSharp.csproj +++ b/binding/SkiaSharp/SkiaSharp.csproj @@ -73,6 +73,7 @@ + @@ -80,6 +81,7 @@ + diff --git a/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets index 77fe8e883b..f5ee392395 100644 --- a/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/android/SkiaSharp.targets @@ -2,12 +2,13 @@ - + <_FixedResolvedFileToPublish Include="@(ResolvedFileToPublish)" Condition=" '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Filename)' == 'libSkiaSharp' and '%(ResolvedFileToPublish.Extension)' == '.so' and '%(ResolvedFileToPublish.NuGetPackageId)' != '' and '%(ResolvedFileToPublish.RuntimeIdentifier)' == '' and diff --git a/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets index 2e942f1aee..0c3d800762 100644 --- a/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets @@ -2,25 +2,26 @@ - + - <_PossibleNativeFrameworks + <_PossibleNativeFramework Include="@(ResolvedFileToPublish)" Condition=" '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Filename)' == 'libSkiaSharp' and '%(ResolvedFileToPublish.Extension)' == '' and '%(ResolvedFileToPublish.NuGetPackageId)' != '' and '%(ResolvedFileToPublish.PathInPackage)' != ''"> $([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.PathInPackage))))) $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) - - + + %(NuGetPackageId) %(NuGetPackageVersion) %(AssetType) - $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeFrameworks.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeFramework.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) - <_PossibleNativeFrameworks Remove="@(_PossibleNativeFrameworks)" /> + <_PossibleNativeFramework Remove="@(_PossibleNativeFramework)" /> diff --git a/binding/SkiaSharp/nuget/build/macos/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/macos/SkiaSharp.targets index 3079c1ea8f..c192069b5b 100644 --- a/binding/SkiaSharp/nuget/build/macos/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/macos/SkiaSharp.targets @@ -1,13 +1,23 @@ - - - True - - - - - + + + + <_PossibleNativeReference + Include="@(ResolvedFileToPublish)" + Condition=" + '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Filename)' == 'libSkiaSharp' and + '%(ResolvedFileToPublish.Extension)' == '.dylib' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.PathInPackage)' != ''" /> + + Dynamic + $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeReference.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + + <_PossibleNativeReference Remove="@(_PossibleNativeReference)" /> + + \ No newline at end of file diff --git a/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets index a53c273125..0c3d800762 100644 --- a/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets @@ -1,13 +1,28 @@ - - - True - - - - - + + + + <_PossibleNativeFramework + Include="@(ResolvedFileToPublish)" + Condition=" + '%(ResolvedFileToPublish.AssetType)' == 'native' and + '%(ResolvedFileToPublish.Filename)' == 'libSkiaSharp' and + '%(ResolvedFileToPublish.Extension)' == '' and + '%(ResolvedFileToPublish.NuGetPackageId)' != '' and + '%(ResolvedFileToPublish.PathInPackage)' != ''"> + $([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.PathInPackage))))) + $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) + + + %(NuGetPackageId) + %(NuGetPackageVersion) + %(AssetType) + $([System.Text.RegularExpressions.Regex]::Match('%(_PossibleNativeFramework.PathInPackage)', 'runtimes/([^/]+)/native/.*').Groups[1].Value) + + <_PossibleNativeFramework Remove="@(_PossibleNativeFramework)" /> + + \ No newline at end of file diff --git a/binding/SkiaSharp/nuget/build/xamarinmac/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/xamarinmac/SkiaSharp.targets new file mode 100644 index 0000000000..3079c1ea8f --- /dev/null +++ b/binding/SkiaSharp/nuget/build/xamarinmac/SkiaSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/SkiaSharp/nuget/build/xamarintvos/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/xamarintvos/SkiaSharp.targets new file mode 100644 index 0000000000..a53c273125 --- /dev/null +++ b/binding/SkiaSharp/nuget/build/xamarintvos/SkiaSharp.targets @@ -0,0 +1,13 @@ + + + + + + True + + + + + + + \ No newline at end of file diff --git a/binding/SkiaSharp/nuget/build/watchos/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/xamarinwatchos/SkiaSharp.targets similarity index 100% rename from binding/SkiaSharp/nuget/build/watchos/SkiaSharp.targets rename to binding/SkiaSharp/nuget/build/xamarinwatchos/SkiaSharp.targets diff --git a/nuget/HarfbuzzSharp.nuspec b/nuget/HarfbuzzSharp.nuspec index 6db88f1e8e..c8c7c14d10 100644 --- a/nuget/HarfbuzzSharp.nuspec +++ b/nuget/HarfbuzzSharp.nuspec @@ -120,10 +120,14 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + + + diff --git a/nuget/SkiaSharp.nuspec b/nuget/SkiaSharp.nuspec index 4c78b4540a..7fc00ed706 100644 --- a/nuget/SkiaSharp.nuspec +++ b/nuget/SkiaSharp.nuspec @@ -121,10 +121,14 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release + + + + From 05271ed7092cdff3cda4cbbbd6be8990f364dafa Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Sun, 13 Jun 2021 16:43:00 +0200 Subject: [PATCH 51/61] Add Framework to iOS --- binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets | 1 + binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets | 1 + binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets | 1 + binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets | 1 + 4 files changed, 4 insertions(+) diff --git a/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets index 83d1e74916..e7a5299f44 100644 --- a/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/ios/HarfBuzzSharp.targets @@ -16,6 +16,7 @@ $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) + Framework %(NuGetPackageId) %(NuGetPackageVersion) %(AssetType) diff --git a/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets b/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets index 83d1e74916..e7a5299f44 100644 --- a/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets +++ b/binding/HarfBuzzSharp/nuget/build/tvos/HarfBuzzSharp.targets @@ -16,6 +16,7 @@ $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) + Framework %(NuGetPackageId) %(NuGetPackageVersion) %(AssetType) diff --git a/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets index 0c3d800762..a7aa4980e2 100644 --- a/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/ios/SkiaSharp.targets @@ -16,6 +16,7 @@ $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) + Framework %(NuGetPackageId) %(NuGetPackageVersion) %(AssetType) diff --git a/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets b/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets index 0c3d800762..a7aa4980e2 100644 --- a/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets +++ b/binding/SkiaSharp/nuget/build/tvos/SkiaSharp.targets @@ -16,6 +16,7 @@ $([System.IO.Path]::GetDirectoryName(%(ResolvedFileToPublish.FullPath))) + Framework %(NuGetPackageId) %(NuGetPackageVersion) %(AssetType) From 6a9c456671b5bb2c4d786f4d805ee9db62a6137c Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 15 Jun 2021 22:46:24 +0200 Subject: [PATCH 52/61] Add a maui sample --- binding/HarfBuzzSharp/HarfBuzzSharp.csproj | 4 ++ binding/SkiaSharp/SkiaSharp.csproj | 4 ++ images/forground.png | Bin 0 -> 98034 bytes samples/Basic/Maui/Directory.Build.targets | 21 +++++++ .../Properties/launchSettings.json | 7 +++ .../SkiaSharpSample.WinUI.csproj | 48 +++++++++++++++ .../SkiaSharpSample.WinUI/Windows/App.xaml | 15 +++++ .../SkiaSharpSample.WinUI/Windows/App.xaml.cs | 34 ++++++++++ .../Windows/Package.appxmanifest | 58 ++++++++++++++++++ .../Windows/app.manifest | 15 +++++ samples/Basic/Maui/SkiaSharpSample.sln | 41 +++++++++++++ .../Android/AndroidManifest.xml | 6 ++ .../SkiaSharpSample/Android/MainActivity.cs | 11 ++++ .../Android/MainApplication.cs | 16 +++++ samples/Basic/Maui/SkiaSharpSample/App.xaml | 8 +++ .../Basic/Maui/SkiaSharpSample/App.xaml.cs | 23 +++++++ .../MacCatalyst/AppDelegate.cs | 10 +++ .../MacCatalyst/Entitlements.plist | 6 ++ .../SkiaSharpSample/MacCatalyst/Info.plist | 34 ++++++++++ .../SkiaSharpSample/MacCatalyst/Program.cs | 15 +++++ .../Basic/Maui/SkiaSharpSample/MainPage.xaml | 8 +++ .../Maui/SkiaSharpSample/MainPage.xaml.cs | 47 ++++++++++++++ .../SkiaSharpSample/Resources/appicon.png | Bin 0 -> 134890 bytes .../Resources/skiasharplogo.png | Bin 0 -> 134890 bytes .../SkiaSharpSample/SkiaSharpSample.csproj | 35 +++++++++++ samples/Basic/Maui/SkiaSharpSample/Startup.cs | 12 ++++ .../Maui/SkiaSharpSample/iOS/AppDelegate.cs | 10 +++ .../SkiaSharpSample/iOS/Entitlements.plist | 6 ++ .../Basic/Maui/SkiaSharpSample/iOS/Info.plist | 34 ++++++++++ .../Basic/Maui/SkiaSharpSample/iOS/Program.cs | 15 +++++ 30 files changed, 543 insertions(+) create mode 100644 images/forground.png create mode 100644 samples/Basic/Maui/Directory.Build.targets create mode 100644 samples/Basic/Maui/SkiaSharpSample.WinUI/Properties/launchSettings.json create mode 100644 samples/Basic/Maui/SkiaSharpSample.WinUI/SkiaSharpSample.WinUI.csproj create mode 100644 samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/App.xaml create mode 100644 samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/App.xaml.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/Package.appxmanifest create mode 100644 samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/app.manifest create mode 100644 samples/Basic/Maui/SkiaSharpSample.sln create mode 100644 samples/Basic/Maui/SkiaSharpSample/Android/AndroidManifest.xml create mode 100644 samples/Basic/Maui/SkiaSharpSample/Android/MainActivity.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample/Android/MainApplication.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample/App.xaml create mode 100644 samples/Basic/Maui/SkiaSharpSample/App.xaml.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample/MacCatalyst/AppDelegate.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Entitlements.plist create mode 100644 samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Info.plist create mode 100644 samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Program.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample/MainPage.xaml create mode 100644 samples/Basic/Maui/SkiaSharpSample/MainPage.xaml.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample/Resources/appicon.png create mode 100644 samples/Basic/Maui/SkiaSharpSample/Resources/skiasharplogo.png create mode 100644 samples/Basic/Maui/SkiaSharpSample/SkiaSharpSample.csproj create mode 100644 samples/Basic/Maui/SkiaSharpSample/Startup.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample/iOS/AppDelegate.cs create mode 100644 samples/Basic/Maui/SkiaSharpSample/iOS/Entitlements.plist create mode 100644 samples/Basic/Maui/SkiaSharpSample/iOS/Info.plist create mode 100644 samples/Basic/Maui/SkiaSharpSample/iOS/Program.cs diff --git a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj index 53ecbff1b3..56aab85dd8 100644 --- a/binding/HarfBuzzSharp/HarfBuzzSharp.csproj +++ b/binding/HarfBuzzSharp/HarfBuzzSharp.csproj @@ -61,11 +61,13 @@ + + @@ -75,6 +77,7 @@ + @@ -83,6 +86,7 @@ + diff --git a/binding/SkiaSharp/SkiaSharp.csproj b/binding/SkiaSharp/SkiaSharp.csproj index 97ea215310..b5719332b7 100644 --- a/binding/SkiaSharp/SkiaSharp.csproj +++ b/binding/SkiaSharp/SkiaSharp.csproj @@ -60,11 +60,13 @@ + + @@ -74,6 +76,7 @@ + @@ -82,6 +85,7 @@ + diff --git a/images/forground.png b/images/forground.png new file mode 100644 index 0000000000000000000000000000000000000000..a899530df498e717b8eb2a592949434b64b5f27c GIT binary patch literal 98034 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
IdJO}7?VzmB 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

ko?@13Ej|5m?XXU7fuKBAE^ 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 NYHE$B`Q!GV{|^;l*Tw(< literal 0 HcmV?d00001 diff --git a/samples/Basic/Maui/Directory.Build.targets b/samples/Basic/Maui/Directory.Build.targets new file mode 100644 index 0000000000..fa64a8926d --- /dev/null +++ b/samples/Basic/Maui/Directory.Build.targets @@ -0,0 +1,21 @@ + + + + + <_KeepLaunchProfiles>true + + + + + + + + + + + + + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample.WinUI/Properties/launchSettings.json b/samples/Basic/Maui/SkiaSharpSample.WinUI/Properties/launchSettings.json new file mode 100644 index 0000000000..fe30f65c7b --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.WinUI/Properties/launchSettings.json @@ -0,0 +1,7 @@ +{ + "profiles": { + "SkiaSharpSample.WinUI": { + "commandName": "AppContainer" + } + } +} \ No newline at end of file diff --git a/samples/Basic/Maui/SkiaSharpSample.WinUI/SkiaSharpSample.WinUI.csproj b/samples/Basic/Maui/SkiaSharpSample.WinUI/SkiaSharpSample.WinUI.csproj new file mode 100644 index 0000000000..fc043e96da --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.WinUI/SkiaSharpSample.WinUI.csproj @@ -0,0 +1,48 @@ + + + + net6.0-windows10.0.19041 + WinExe + 10.0.17763.0 + true + SkiaSharpSample + + + true + MSIX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + libSkiaSharp.dll + PreserveNewest + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/App.xaml b/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/App.xaml new file mode 100644 index 0000000000..91041cb690 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/App.xaml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/App.xaml.cs b/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/App.xaml.cs new file mode 100644 index 0000000000..5e7d9fee88 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/App.xaml.cs @@ -0,0 +1,34 @@ +using Microsoft.Maui; +using Microsoft.UI.Xaml; +using Windows.ApplicationModel; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace SkiaSharpSample.WinUI +{ + ///

+ /// Provides application-specific behavior to supplement the default Application class. + /// + public partial class App : MiddleApp + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override void OnLaunched(LaunchActivatedEventArgs args) + { + base.OnLaunched(args); + + Microsoft.Maui.Essentials.Platform.OnLaunched(args); + } + } + public class MiddleApp : MauiWinUIApplication + { + } +} diff --git a/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/Package.appxmanifest b/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/Package.appxmanifest new file mode 100644 index 0000000000..a706079bce --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/Package.appxmanifest @@ -0,0 +1,58 @@ + + + + + + + + SkiaSharpSample + Microsoft + Assets\appiconStoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/app.manifest b/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/app.manifest new file mode 100644 index 0000000000..2c0005cbbd --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.WinUI/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/samples/Basic/Maui/SkiaSharpSample.sln b/samples/Basic/Maui/SkiaSharpSample.sln new file mode 100644 index 0000000000..fdbd3cdcb4 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31220.234 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample", "SkiaSharpSample\SkiaSharpSample.csproj", "{4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample.WinUI", "SkiaSharpSample.WinUI\SkiaSharpSample.WinUI.csproj", "{7FC4C884-2318-4FEC-9B5E-7A891F9A439D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{3258831C-E589-4A15-869B-877737D01F21}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.Build.0 = Release|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.Deploy.0 = Release|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Release|Any CPU.Build.0 = Release|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Release|Any CPU.Deploy.0 = Release|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} + EndGlobalSection +EndGlobal diff --git a/samples/Basic/Maui/SkiaSharpSample/Android/AndroidManifest.xml b/samples/Basic/Maui/SkiaSharpSample/Android/AndroidManifest.xml new file mode 100644 index 0000000000..6a35c95a93 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/samples/Basic/Maui/SkiaSharpSample/Android/MainActivity.cs b/samples/Basic/Maui/SkiaSharpSample/Android/MainActivity.cs new file mode 100644 index 0000000000..a7732712d7 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/Android/MainActivity.cs @@ -0,0 +1,11 @@ +using Android.App; +using Android.Content.PM; +using Microsoft.Maui; + +namespace SkiaSharpSample +{ + [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)] + public class MainActivity : MauiAppCompatActivity + { + } +} \ No newline at end of file diff --git a/samples/Basic/Maui/SkiaSharpSample/Android/MainApplication.cs b/samples/Basic/Maui/SkiaSharpSample/Android/MainApplication.cs new file mode 100644 index 0000000000..1812993bc1 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/Android/MainApplication.cs @@ -0,0 +1,16 @@ +using System; +using Android.App; +using Android.Runtime; +using Microsoft.Maui; + +namespace SkiaSharpSample +{ + [Application] + public class MainApplication : MauiApplication + { + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + } +} \ No newline at end of file diff --git a/samples/Basic/Maui/SkiaSharpSample/App.xaml b/samples/Basic/Maui/SkiaSharpSample/App.xaml new file mode 100644 index 0000000000..9d3ea833fb --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample/App.xaml.cs b/samples/Basic/Maui/SkiaSharpSample/App.xaml.cs new file mode 100644 index 0000000000..790f011810 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/App.xaml.cs @@ -0,0 +1,23 @@ +using Microsoft.Maui; +using Microsoft.Maui.Controls; +using Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific; +using Application = Microsoft.Maui.Controls.Application; +using WindowsConfiguration = Microsoft.Maui.Controls.PlatformConfiguration.Windows; + +namespace SkiaSharpSample +{ + public partial class App : Application + { + public App() + { + InitializeComponent(); + } + + protected override IWindow CreateWindow(IActivationState activationState) + { + On().SetImageDirectory("Assets"); + + return new Window(new MainPage()); + } + } +} diff --git a/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/AppDelegate.cs b/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/AppDelegate.cs new file mode 100644 index 0000000000..8a96b63f15 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; +using Microsoft.Maui; + +namespace SkiaSharpSample +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + } +} \ No newline at end of file diff --git a/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Entitlements.plist b/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Entitlements.plist new file mode 100644 index 0000000000..36a8706706 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Info.plist b/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Info.plist new file mode 100644 index 0000000000..c70cb4ad8b --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Info.plist @@ -0,0 +1,34 @@ + + + + + LSMinimumSystemVersion + 10.15 + UIDeviceFamily + + 1 + 2 + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Program.cs b/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Program.cs new file mode 100644 index 0000000000..6175f1b237 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/MacCatalyst/Program.cs @@ -0,0 +1,15 @@ +using UIKit; + +namespace SkiaSharpSample +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, "AppDelegate"); + } + } +} \ No newline at end of file diff --git a/samples/Basic/Maui/SkiaSharpSample/MainPage.xaml b/samples/Basic/Maui/SkiaSharpSample/MainPage.xaml new file mode 100644 index 0000000000..c44c8e7e7c --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/MainPage.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample/MainPage.xaml.cs b/samples/Basic/Maui/SkiaSharpSample/MainPage.xaml.cs new file mode 100644 index 0000000000..b31afd6b86 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/MainPage.xaml.cs @@ -0,0 +1,47 @@ +using System.IO; +using Microsoft.Maui.Controls; +using SkiaSharp; + +namespace SkiaSharpSample +{ + public partial class MainPage : ContentPage + { + public MainPage() + { + InitializeComponent(); + + imageView.Source = ImageSource.FromStream(() => CreateImage()); + } + + private Stream CreateImage() + { + // crate a surface + var info = new SKImageInfo(256, 256); + using var surface = SKSurface.Create(info); + + // the the canvas and properties + var canvas = surface.Canvas; + + // make sure the canvas is blank + canvas.Clear(SKColors.White); + + // draw some text + using var paint = new SKPaint + { + Color = SKColors.Black, + IsAntialias = true, + Style = SKPaintStyle.Fill, + TextAlign = SKTextAlign.Center, + TextSize = 24 + }; + var coord = new SKPoint(info.Width / 2, (info.Height + paint.TextSize) / 2); + canvas.DrawText("SkiaSharp", coord, paint); + + // encode the file + using var image = surface.Snapshot(); + + var data = image.Encode(SKEncodedImageFormat.Png, 100); + return data.AsStream(true); + } + } +} diff --git a/samples/Basic/Maui/SkiaSharpSample/Resources/appicon.png b/samples/Basic/Maui/SkiaSharpSample/Resources/appicon.png new file mode 100644 index 0000000000000000000000000000000000000000..358a36dc460af40476c5c1743767af4337b05eff GIT binary patch literal 134890 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%0A%b`>ms9`tr-Q17}&Yc+U?9BA;MW4Sx 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 VCKl1~>Cif9-qN{Qc>Upv{|7$#tj+)c literal 0 HcmV?d00001 diff --git a/samples/Basic/Maui/SkiaSharpSample/Resources/skiasharplogo.png b/samples/Basic/Maui/SkiaSharpSample/Resources/skiasharplogo.png new file mode 100644 index 0000000000000000000000000000000000000000..358a36dc460af40476c5c1743767af4337b05eff GIT binary patch literal 134890 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%0A%b`>ms9`tr-Q17}&Yc+U?9BA;MW4Sx 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 VCKl1~>Cif9-qN{Qc>Upv{|7$#tj+)c literal 0 HcmV?d00001 diff --git a/samples/Basic/Maui/SkiaSharpSample/SkiaSharpSample.csproj b/samples/Basic/Maui/SkiaSharpSample/SkiaSharpSample.csproj new file mode 100644 index 0000000000..67b25319ce --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/SkiaSharpSample.csproj @@ -0,0 +1,35 @@ + + + + net6.0-ios;net6.0-android;net6.0-maccatalyst + Exe + true + SkiaSharpSample + SkiaSharpSample + com.companyname.SkiaSharpSample + 1.0 + 1 + + + + + + + + + + + + + + + + + true + iossimulator-x64 + maccatalyst-x64 + + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample/Startup.cs b/samples/Basic/Maui/SkiaSharpSample/Startup.cs new file mode 100644 index 0000000000..3fb85ccbb9 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/Startup.cs @@ -0,0 +1,12 @@ +using Microsoft.Maui; +using Microsoft.Maui.Controls.Hosting; +using Microsoft.Maui.Hosting; + +namespace SkiaSharpSample +{ + public class Startup : IStartup + { + public void Configure(IAppHostBuilder appBuilder) => + appBuilder.UseMauiApp(); + } +} diff --git a/samples/Basic/Maui/SkiaSharpSample/iOS/AppDelegate.cs b/samples/Basic/Maui/SkiaSharpSample/iOS/AppDelegate.cs new file mode 100644 index 0000000000..8a96b63f15 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/iOS/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; +using Microsoft.Maui; + +namespace SkiaSharpSample +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + } +} \ No newline at end of file diff --git a/samples/Basic/Maui/SkiaSharpSample/iOS/Entitlements.plist b/samples/Basic/Maui/SkiaSharpSample/iOS/Entitlements.plist new file mode 100644 index 0000000000..36a8706706 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/iOS/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/Basic/Maui/SkiaSharpSample/iOS/Info.plist b/samples/Basic/Maui/SkiaSharpSample/iOS/Info.plist new file mode 100644 index 0000000000..ed2ffb61b4 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/iOS/Info.plist @@ -0,0 +1,34 @@ + + + + + LSRequiresIPhoneOS + + MinimumOSVersion + 10.3.4 + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/samples/Basic/Maui/SkiaSharpSample/iOS/Program.cs b/samples/Basic/Maui/SkiaSharpSample/iOS/Program.cs new file mode 100644 index 0000000000..6175f1b237 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample/iOS/Program.cs @@ -0,0 +1,15 @@ +using UIKit; + +namespace SkiaSharpSample +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, "AppDelegate"); + } + } +} \ No newline at end of file From 0e0f227c0f002f3d48269889fc47c1154acbc7a1 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 00:14:34 +0200 Subject: [PATCH 53/61] More .net 6 things --- samples/Basic/Maui/SkiaSharpSample.Mac.sln | 33 +++++++++++++++ .../Basic/Maui/SkiaSharpSample.Windows.sln | 41 +++++++++++++++++++ .../SkiaSharpSample/SkiaSharpSample.csproj | 2 +- scripts/azure-pipelines.yml | 8 +++- scripts/azure-templates-bootstrapper.yml | 2 +- source/SkiaSharp.Build.props | 3 +- 6 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 samples/Basic/Maui/SkiaSharpSample.Mac.sln create mode 100644 samples/Basic/Maui/SkiaSharpSample.Windows.sln diff --git a/samples/Basic/Maui/SkiaSharpSample.Mac.sln b/samples/Basic/Maui/SkiaSharpSample.Mac.sln new file mode 100644 index 0000000000..884858e7f6 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.Mac.sln @@ -0,0 +1,33 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31220.234 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample", "SkiaSharpSample\SkiaSharpSample.csproj", "{4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{3258831C-E589-4A15-869B-877737D01F21}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.Build.0 = Release|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.Deploy.0 = Release|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} + EndGlobalSection +EndGlobal diff --git a/samples/Basic/Maui/SkiaSharpSample.Windows.sln b/samples/Basic/Maui/SkiaSharpSample.Windows.sln new file mode 100644 index 0000000000..fdbd3cdcb4 --- /dev/null +++ b/samples/Basic/Maui/SkiaSharpSample.Windows.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31220.234 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample", "SkiaSharpSample\SkiaSharpSample.csproj", "{4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample.WinUI", "SkiaSharpSample.WinUI\SkiaSharpSample.WinUI.csproj", "{7FC4C884-2318-4FEC-9B5E-7A891F9A439D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{3258831C-E589-4A15-869B-877737D01F21}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.Build.0 = Release|Any CPU + {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.Deploy.0 = Release|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Release|Any CPU.Build.0 = Release|Any CPU + {7FC4C884-2318-4FEC-9B5E-7A891F9A439D}.Release|Any CPU.Deploy.0 = Release|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3258831C-E589-4A15-869B-877737D01F21}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} + EndGlobalSection +EndGlobal diff --git a/samples/Basic/Maui/SkiaSharpSample/SkiaSharpSample.csproj b/samples/Basic/Maui/SkiaSharpSample/SkiaSharpSample.csproj index 67b25319ce..89ad4e4f11 100644 --- a/samples/Basic/Maui/SkiaSharpSample/SkiaSharpSample.csproj +++ b/samples/Basic/Maui/SkiaSharpSample/SkiaSharpSample.csproj @@ -1,7 +1,7 @@  - net6.0-ios;net6.0-android;net6.0-maccatalyst + net6.0-ios;net6.0-android Exe true SkiaSharpSample diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 35dae7f7a9..af24afc6f8 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -27,7 +27,7 @@ variables: DOTNET_VERSION: 5.0.301 DOTNET_VERSION_PREVIEW: 6.0.100-preview.5.21302.13 VS_VERSION_PREVIEW: 16/pre - MAUI_CHECK_MANIFEST: https://raw.githubusercontent.com/Redth/dotnet-maui-check/e4603b700f2983d0a734993344b626134d55afe9/manifests/maui-preview.manifest.json + MAUI_CHECK_MANIFEST: https://raw.githubusercontent.com/Redth/dotnet-maui-check/165c910079623e73ecb04c50bade01da1f78f6c9/manifests/maui-preview.manifest.json CONFIGURATION: 'Release' VM_IMAGE_WINDOWS: windows-2019 VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016 @@ -322,6 +322,8 @@ stages: displayName: Managed (Windows) vmImage: $(VM_IMAGE_WINDOWS) target: libs + variables: + BuildingForNet6: false additionalArgs: --skipExternals="all" requiredArtifacts: - native_android_x86_windows @@ -381,6 +383,8 @@ stages: displayName: Managed (macOS) vmImage: $(VM_IMAGE_MAC) target: libs + variables: + BuildingForNet6: false additionalArgs: --skipExternals="all" requiredArtifacts: - native_android_x86_macos @@ -402,6 +406,8 @@ stages: vmImage: $(VM_IMAGE_LINUX) packages: $(MANAGED_LINUX_PACKAGES) target: libs + variables: + BuildingForNet6: false additionalArgs: --skipExternals="all" requiredArtifacts: - native_linux_x64_linux diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index c379cd3fe9..a1f69b953e 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -115,7 +115,7 @@ jobs: displayName: Install the correct version of .NET Core # install the bits needed for net6 builds - - ${{ if contains(parameters.name, '_net6_') }}: + - ${{ if or(contains(parameters.name, '_net6_'), startsWith(parameters.name, 'samples_')) }}: - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" displayName: Install the preview version of .NET Core - ${{ if endsWith(parameters.name, '_windows') }}: diff --git a/source/SkiaSharp.Build.props b/source/SkiaSharp.Build.props index 2ef0168822..ace7e94e15 100644 --- a/source/SkiaSharp.Build.props +++ b/source/SkiaSharp.Build.props @@ -18,8 +18,7 @@ true true - true - false + true $(MSBuildThisFileDirectory)..\docs\SkiaSharpAPI 8.0 From 2db80a9bc90faed2512a6043763a78eaea63422d Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 00:44:42 +0200 Subject: [PATCH 54/61] Go net6 for realsies --- scripts/azure-pipelines.yml | 8 -------- scripts/azure-templates-bootstrapper.yml | 17 ++++++++--------- source/SkiaSharp.Build.props | 2 +- 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index af24afc6f8..f9c937375a 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -322,8 +322,6 @@ stages: displayName: Managed (Windows) vmImage: $(VM_IMAGE_WINDOWS) target: libs - variables: - BuildingForNet6: false additionalArgs: --skipExternals="all" requiredArtifacts: - native_android_x86_windows @@ -350,8 +348,6 @@ stages: displayName: Managed (Windows|.NET 6) vmImage: $(VM_IMAGE_WINDOWS) target: libs - variables: - BuildingForNet6: true additionalArgs: --skipExternals="all" requiredArtifacts: - native_android_x86_windows @@ -383,8 +379,6 @@ stages: displayName: Managed (macOS) vmImage: $(VM_IMAGE_MAC) target: libs - variables: - BuildingForNet6: false additionalArgs: --skipExternals="all" requiredArtifacts: - native_android_x86_macos @@ -406,8 +400,6 @@ stages: vmImage: $(VM_IMAGE_LINUX) packages: $(MANAGED_LINUX_PACKAGES) target: libs - variables: - BuildingForNet6: false additionalArgs: --skipExternals="all" requiredArtifacts: - native_linux_x64_linux diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index a1f69b953e..624d7515c2 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -115,15 +115,14 @@ jobs: displayName: Install the correct version of .NET Core # install the bits needed for net6 builds - - ${{ if or(contains(parameters.name, '_net6_'), startsWith(parameters.name, 'samples_')) }}: - - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" - displayName: Install the preview version of .NET Core - - ${{ if endsWith(parameters.name, '_windows') }}: - - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW - displayName: Install Visual Studio Preview - - ${{ if not(endsWith(parameters.name, '_linux')) }}: - - pwsh: .\scripts\install-maui.ps1 -Manifest $env:MAUI_CHECK_MANIFEST -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" - displayName: Install the .NET Core workloads + - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" + displayName: Install the preview version of .NET Core + - ${{ if endsWith(parameters.name, '_windows') }}: + - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW + displayName: Install Visual Studio Preview + - ${{ if not(endsWith(parameters.name, '_linux')) }}: + - pwsh: .\scripts\install-maui.ps1 -Manifest $env:MAUI_CHECK_MANIFEST -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" + displayName: Install the .NET Core workloads - pwsh: dotnet --info displayName: Display all the .NET information diff --git a/source/SkiaSharp.Build.props b/source/SkiaSharp.Build.props index ace7e94e15..ed488a0825 100644 --- a/source/SkiaSharp.Build.props +++ b/source/SkiaSharp.Build.props @@ -18,7 +18,7 @@ true true - true + true $(MSBuildThisFileDirectory)..\docs\SkiaSharpAPI 8.0 From 86c79844037e6f81255b9a5cba442c7060a18867 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 01:04:48 +0200 Subject: [PATCH 55/61] net6 is only windows for now mono's msbuild is too old --- source/SkiaSharp.Build.props | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/SkiaSharp.Build.props b/source/SkiaSharp.Build.props index ed488a0825..00feefa2fa 100644 --- a/source/SkiaSharp.Build.props +++ b/source/SkiaSharp.Build.props @@ -18,7 +18,8 @@ true true - true + true + false $(MSBuildThisFileDirectory)..\docs\SkiaSharpAPI 8.0 From 6ce2206d6944bb9262a68194893831e932502726 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 01:28:47 +0200 Subject: [PATCH 56/61] no need for net6 specifics --- cake/msbuild.cake | 8 ++++---- scripts/azure-pipelines.yml | 34 +--------------------------------- 2 files changed, 5 insertions(+), 37 deletions(-) diff --git a/cake/msbuild.cake b/cake/msbuild.cake index e680f842bb..11af85ddea 100644 --- a/cake/msbuild.cake +++ b/cake/msbuild.cake @@ -5,10 +5,10 @@ DirectoryPath OUTPUT_SPECIAL_NUGETS_PATH = MakeAbsolute(ROOT_PATH.Combine("outpu var NUGETS_SOURCES = new [] { OUTPUT_NUGETS_PATH.FullPath, "https://api.nuget.org/v3/index.json", - "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", - "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json", - "https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json", - "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json", + // "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", + // "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json", + // "https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json", + // "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json", }; void RunNuGetRestorePackagesConfig(FilePath sln) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index f9c937375a..d42e697fbd 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -342,37 +342,6 @@ stages: - native_win32_arm64_windows - native_win32_x64_nanoserver_windows - native_wasm_linux - - template: azure-templates-bootstrapper.yml # Build Managed (Windows|.NET 6) - parameters: - name: managed_net6_windows - displayName: Managed (Windows|.NET 6) - vmImage: $(VM_IMAGE_WINDOWS) - target: libs - additionalArgs: --skipExternals="all" - requiredArtifacts: - - native_android_x86_windows - - native_android_x64_windows - - native_android_arm_windows - - native_android_arm64_windows - - native_tizen_windows - - native_uwp_angle_x86_windows - - native_uwp_angle_x64_windows - - native_uwp_angle_arm_windows - - native_uwp_angle_arm64_windows - - native_uwp_x86_windows - - native_uwp_x64_windows - - native_uwp_arm_windows - - native_uwp_arm64_windows - - native_win32_x86_windows - - native_win32_x64_windows - - native_win32_arm64_windows - - native_win32_x64_nanoserver_windows - - native_wasm_linux - - native_ios_macos - - native_maccatalyst_macos - - native_macos_macos - - native_tvos_macos - - native_watchos_macos - template: azure-templates-bootstrapper.yml # Build Managed (macOS) parameters: name: managed_macos @@ -431,7 +400,6 @@ stages: - managed_linux - managed_macos - managed_windows - - managed_net6_windows postBuildSteps: - task: PublishBuildArtifacts@1 displayName: Publish the native artifacts @@ -460,7 +428,7 @@ stages: jobs: - template: azure-templates-bootstrapper.yml # API Diff parameters: - name: api_diff_net6_windows + name: api_diff_windows displayName: API Diff vmImage: $(VM_IMAGE_WINDOWS_PREVIOUS) target: docs-api-diff From e23c0c68d62645ae5f4bf2acc698b70c7203f8ed Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 01:54:55 +0200 Subject: [PATCH 57/61] Need the feed --- cake/msbuild.cake | 2 +- scripts/azure-pipelines.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cake/msbuild.cake b/cake/msbuild.cake index 11af85ddea..b1832ebc39 100644 --- a/cake/msbuild.cake +++ b/cake/msbuild.cake @@ -5,7 +5,7 @@ DirectoryPath OUTPUT_SPECIAL_NUGETS_PATH = MakeAbsolute(ROOT_PATH.Combine("outpu var NUGETS_SOURCES = new [] { OUTPUT_NUGETS_PATH.FullPath, "https://api.nuget.org/v3/index.json", - // "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", // "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json", // "https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json", // "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json", diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index d42e697fbd..0e1bfe3715 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -38,7 +38,7 @@ variables: NUGET_DIFF_PRERELEASE: false ENABLE_CODE_COVERAGE: true EMSCRIPTEN_VERSION: 2.0.12 - XHARNESS_VERSION: 1.0.0-prerelease.21180.1 + XHARNESS_VERSION: 1.0.0-prerelease.21314.1 resources: repositories: From 51fe9ccf5e627539a1388601927963a2f0aac96e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 03:40:12 +0200 Subject: [PATCH 58/61] Better control the installation of things --- cake/msbuild.cake | 5 +- samples/Basic/Maui/SkiaSharpSample.Mac.sln | 33 -------------- scripts/azure-pipelines.yml | 3 ++ scripts/azure-templates-bootstrapper.yml | 53 +++++++++++----------- 4 files changed, 31 insertions(+), 63 deletions(-) delete mode 100644 samples/Basic/Maui/SkiaSharpSample.Mac.sln diff --git a/cake/msbuild.cake b/cake/msbuild.cake index b1832ebc39..8e99484450 100644 --- a/cake/msbuild.cake +++ b/cake/msbuild.cake @@ -5,10 +5,7 @@ DirectoryPath OUTPUT_SPECIAL_NUGETS_PATH = MakeAbsolute(ROOT_PATH.Combine("outpu var NUGETS_SOURCES = new [] { OUTPUT_NUGETS_PATH.FullPath, "https://api.nuget.org/v3/index.json", - "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", - // "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json", - // "https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json", - // "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" }; void RunNuGetRestorePackagesConfig(FilePath sln) diff --git a/samples/Basic/Maui/SkiaSharpSample.Mac.sln b/samples/Basic/Maui/SkiaSharpSample.Mac.sln deleted file mode 100644 index 884858e7f6..0000000000 --- a/samples/Basic/Maui/SkiaSharpSample.Mac.sln +++ /dev/null @@ -1,33 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31220.234 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample", "SkiaSharpSample\SkiaSharpSample.csproj", "{4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{3258831C-E589-4A15-869B-877737D01F21}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.Build.0 = Release|Any CPU - {4AD1D2A5-5A7B-4E7B-87C5-C21756DA8D02}.Release|Any CPU.Deploy.0 = Release|Any CPU - {3258831C-E589-4A15-869B-877737D01F21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3258831C-E589-4A15-869B-877737D01F21}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3258831C-E589-4A15-869B-877737D01F21}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3258831C-E589-4A15-869B-877737D01F21}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} - EndGlobalSection -EndGlobal diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 0e1bfe3715..280ffc260f 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -395,6 +395,7 @@ stages: target: nuget additionalArgs: --packall=true --skipbuild=true installWindowsSdk: false + installDotNet: false shouldPublish: true requiredArtifacts: - managed_linux @@ -434,6 +435,7 @@ stages: target: docs-api-diff additionalArgs: --nugetDiffPrerelease=$(NUGET_DIFF_PRERELEASE) installWindowsSdk: false + installDotNet: false shouldPublish: false requiredArtifacts: - package_windows @@ -793,6 +795,7 @@ stages: vmImage: $(VM_IMAGE_WINDOWS_PREVIOUS) target: git-sync-deps installWindowsSdk: false + installDotNet: false shouldPublish: false postBuildSteps: - task: CredScan@2 diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 624d7515c2..0cf3b6d012 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -23,6 +23,7 @@ parameters: installAndroidNdk: true # whether or not to install the Android NDK installTizenSdk: true # whether or not to install the Tizen SDK installWindowsSdk: true # whether or not to install the Windows SDK + installDotNet: true # whether or not to install the dotnet SDK installLlvm: true # whether or not to install the LLVM compiler installEmsdk: false # whether or not to install the Emscripten SDK @@ -100,32 +101,32 @@ jobs: displayName: Install LLVM # install extra bits for the manged builds - - ${{ if not(startsWith(parameters.name, 'native_')) }}: - - task: UseDotNet@2 - inputs: - packageType: 'sdk' - version: $(DOTNET_VERSION_PREVIOUS) - performMultiLevelLookup: true - displayName: Install the previous version of .NET Core - - task: UseDotNet@2 - inputs: - packageType: 'sdk' - version: $(DOTNET_VERSION) - performMultiLevelLookup: true - displayName: Install the correct version of .NET Core - - # install the bits needed for net6 builds - - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" - displayName: Install the preview version of .NET Core - - ${{ if endsWith(parameters.name, '_windows') }}: - - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW - displayName: Install Visual Studio Preview - - ${{ if not(endsWith(parameters.name, '_linux')) }}: - - pwsh: .\scripts\install-maui.ps1 -Manifest $env:MAUI_CHECK_MANIFEST -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" - displayName: Install the .NET Core workloads - - - pwsh: dotnet --info - displayName: Display all the .NET information + - ${{ if not(startsWith(parameters.name, 'native_') }}: + - ${{ if eq(parameters.installDotNet, 'true')) }}: + - task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: $(DOTNET_VERSION_PREVIOUS) + performMultiLevelLookup: true + displayName: Install the previous version of .NET Core + - task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: $(DOTNET_VERSION) + performMultiLevelLookup: true + displayName: Install the correct version of .NET Core + # install the bits needed for net6 builds + - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" + displayName: Install the preview version of .NET Core + - ${{ if and(endsWith(parameters.name, '_windows'), endsWith(parameters.name, '_windows')) }}: + - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW + displayName: Install Visual Studio Preview + - ${{ if not(endsWith(parameters.name, '_linux')) }}: + - pwsh: .\scripts\install-maui.ps1 -Manifest $env:MAUI_CHECK_MANIFEST -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" + displayName: Install the .NET Core workloads + # display dotnet info + - pwsh: dotnet --info + displayName: Display all the .NET information # install the mac tools - ${{ if endsWith(parameters.name, '_macos') }}: From 3565335e3c37ed8ffb873fd4bf3d83028a67c45b Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 04:14:32 +0200 Subject: [PATCH 59/61] oopsies --- scripts/azure-templates-bootstrapper.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 0cf3b6d012..c7d3174e60 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -101,8 +101,8 @@ jobs: displayName: Install LLVM # install extra bits for the manged builds - - ${{ if not(startsWith(parameters.name, 'native_') }}: - - ${{ if eq(parameters.installDotNet, 'true')) }}: + - ${{ if not(startsWith(parameters.name, 'native_')) }}: + - ${{ if eq(parameters.installDotNet, 'true') }}: - task: UseDotNet@2 inputs: packageType: 'sdk' From 604f48f07470e6fbe2da07049214903f0c70fb44 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 05:33:13 +0200 Subject: [PATCH 60/61] we need dotnet but not vs for this one --- scripts/azure-pipelines.yml | 2 +- scripts/azure-templates-bootstrapper.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/azure-pipelines.yml b/scripts/azure-pipelines.yml index 280ffc260f..2306c611df 100644 --- a/scripts/azure-pipelines.yml +++ b/scripts/azure-pipelines.yml @@ -435,7 +435,7 @@ stages: target: docs-api-diff additionalArgs: --nugetDiffPrerelease=$(NUGET_DIFF_PRERELEASE) installWindowsSdk: false - installDotNet: false + installPreviewVs: false shouldPublish: false requiredArtifacts: - package_windows diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index c7d3174e60..49fc0a3ced 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -23,6 +23,7 @@ parameters: installAndroidNdk: true # whether or not to install the Android NDK installTizenSdk: true # whether or not to install the Tizen SDK installWindowsSdk: true # whether or not to install the Windows SDK + installPreviewVs: true # whether or not to install the preview VS installDotNet: true # whether or not to install the dotnet SDK installLlvm: true # whether or not to install the LLVM compiler installEmsdk: false # whether or not to install the Emscripten SDK @@ -118,7 +119,7 @@ jobs: # install the bits needed for net6 builds - pwsh: .\scripts\install-dotnet.ps1 -Version $env:DOTNET_VERSION_PREVIEW -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" displayName: Install the preview version of .NET Core - - ${{ if and(endsWith(parameters.name, '_windows'), endsWith(parameters.name, '_windows')) }}: + - ${{ if and(endsWith(parameters.name, '_windows'), eq(parameters.installPreviewVs, 'true')) }}: - pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW displayName: Install Visual Studio Preview - ${{ if not(endsWith(parameters.name, '_linux')) }}: From f247c0ba31d258d419c313e3353c69b71ee9dc81 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 16 Jun 2021 08:22:15 +0200 Subject: [PATCH 61/61] Build all --- scripts/azure-templates-bootstrapper.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/azure-templates-bootstrapper.yml b/scripts/azure-templates-bootstrapper.yml index 49fc0a3ced..19b197c1da 100644 --- a/scripts/azure-templates-bootstrapper.yml +++ b/scripts/azure-templates-bootstrapper.yml @@ -16,7 +16,7 @@ parameters: condition: succeeded() # whether or not to run this template shouldPublish: true # whether or not to publish the artifacts configuration: $(CONFIGURATION) # the build configuration - buildExternals: '4817377' # the build number to download externals from + buildExternals: '' # the build number to download externals from verbosity: $(VERBOSITY) # the level of verbosity to use when building docker: '' # the Docker image to build and use dockerArgs: '' # any additional arguments to pass to docker build @@ -29,17 +29,17 @@ parameters: installEmsdk: false # whether or not to install the Emscripten SDK jobs: -- ${{ if and(ne(parameters.buildExternals, ''), startsWith(parameters.name, 'native_')) }}: - - template: azure-templates-download.yml - parameters: - name: ${{ parameters.name }} - displayName: ${{ parameters.displayName }} - vmImage: ${{ parameters.vmImage }} - condition: ${{ parameters.condition }} - postBuildSteps: ${{ parameters.postBuildSteps }} - buildExternals: ${{ parameters.buildExternals }} +# - ${{ if and(ne(parameters.buildExternals, ''), startsWith(parameters.name, 'native_')) }}: +# - template: azure-templates-download.yml +# parameters: +# name: ${{ parameters.name }} +# displayName: ${{ parameters.displayName }} +# vmImage: ${{ parameters.vmImage }} +# condition: ${{ parameters.condition }} +# postBuildSteps: ${{ parameters.postBuildSteps }} +# buildExternals: ${{ parameters.buildExternals }} -- ${{ if or(eq(parameters.buildExternals, ''), not(startsWith(parameters.name, 'native_'))) }}: +# - ${{ if or(eq(parameters.buildExternals, ''), not(startsWith(parameters.name, 'native_'))) }}: - job: ${{ parameters.name }} displayName: ${{ parameters.displayName }} timeoutInMinutes: 120