Skip to content

feat: Avoid startup exception for WinAppSDK Unpackaged apps #721

feat: Avoid startup exception for WinAppSDK Unpackaged apps

feat: Avoid startup exception for WinAppSDK Unpackaged apps #721

Workflow file for this run

name: CI
on:
push:
branches:
- main
- release/**
- legacy/**
pull_request:
types: [opened, synchronize, reopened]
branches:
- main
- release/**
- legacy/**
env:
UnoCheck_Version: '1.26.0-dev.28'
jobs:
build_tool:
name: Build
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET 5
uses: actions/setup-dotnet@v4
with:
dotnet-version: '5.0.408'
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.401'
- name: Setup GitVersion
uses: gittools/actions/gitversion/[email protected]
with:
versionSpec: '5.6.11'
- name: GitVersion
id: gitversion
uses: gittools/actions/gitversion/[email protected]
with:
useConfigFile: true
configFilePath: gitversion.yml
- name: Adjust msbuild task name
run: |
cd src
gci -r -File -Include *.cs,*.targets,*.props,*.csproj | foreach-object { $a = $_.fullname; ( get-content $a ) | foreach-object { $_ -replace "v0","${{steps.gitversion.outputs.sha}}" } | set-content $a }
- run: |
& dotnet tool update --global uno.check --version ${{ env.UnoCheck_Version }} --add-source https://api.nuget.org/v3/index.json
& uno-check -v --ci --non-interactive --fix --skip xcode --skip androidemulator --skip gtk3 --skip vswin --skip vsmac
name: Install .NET Workloads
- name: Build - CI
run: |
$adjustedPackageVersion="${{ steps.gitversion.outputs.semVer }}".ToLower();
dotnet pack -c Release -p:PackageVersion=$adjustedPackageVersion -p:Version=${{ steps.gitversion.outputs.assemblySemVer }} -o .\artifacts src/Resizetizer/src/Resizetizer.csproj
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: NuGet
path: .\artifacts
- name: Run UnitTests
run: |
dotnet test src/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj -c Release -p:PackageVersion=$adjustedPackageVersion -p:Version=${{ steps.gitversion.outputs.assemblySemVer }} --logger GitHubActions --blame-crash --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
validation_5_2_nix:
name: Validate 5.2
needs: build_tool
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
config: [Debug, Release]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: NuGet
path: samples/packages
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.401'
- run: |
ubuntu_release=`lsb_release -rs`
wget https://packages.microsoft.com/config/ubuntu/${ubuntu_release}/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install -y msopenjdk-11
sudo update-alternatives --list java
echo "JAVA_HOME=/usr/lib/jvm/msopenjdk-11-amd64" >> "$GITHUB_ENV"
if: runner.os == 'Linux'
name: Install OpenJDK 11
- run: |
& dotnet tool update --global uno.check --version ${{ env.UnoCheck_Version }} --add-source https://api.nuget.org/v3/index.json
& uno-check -v --ci --non-interactive --fix --skip xcode --skip androidemulator --skip gtk3 --skip vswin --skip vsmac
shell: pwsh
name: Install .NET Workloads
- name: Restore 5.2 Sample App (${{ matrix.config }})
shell: pwsh
run: |
cd samples/5.2/Uno52ResizetizerTests
& dotnet restore
- name: Delete nupkg files
run: |
Remove-Item -Recurse -Path $env:USERPROFILE\.nuget\packages\*.nupkg -Force
if: runner.os == 'Windows'
shell: pwsh
- name: Delete nupkg files
run: |
Remove-Item -Recurse -Path $env:HOME\.nuget\packages\*.nupkg -Force
if: runner.os != 'Windows'
shell: pwsh
- name: Validate 5.2 Samples app (${{ matrix.config }})
shell: pwsh
# Skip the macOS release build, the agent does not have
# enough disk space to handle it.
if: matrix.os == 'macos-latest' && matrix.config != 'Release'
run: |
& dotnet build -c ${{ matrix.config }} -p:RunAOTCompilation=false -p:WasmShellILLinkerEnabled=false /p:WindowsAppSDKSelfContained=false /p:WindowsPackageType=None -bl:./logs/sample-5.2-${{ matrix.config }}.binlog samples/5.2/Uno52ResizetizerTests/Uno52ResizetizerTests.sln
- name: Validate 5.2 Samples app (${{ matrix.config }} Incremental)
# Skip the macOS release build, the agent does not have
# enough disk space to handle it.
if: matrix.os == 'macos-latest' && matrix.config != 'Release'
shell: pwsh
run: |
& dotnet build -c ${{ matrix.config }} /p:RunAOTCompilation=false /p:WasmShellILLinkerEnabled=false /p:WindowsAppSDKSelfContained=false /p:WindowsPackageType=None /bl:.\logs\sample-5.2-${{ matrix.config }}-incremental.binlog samples\5.2\Uno52ResizetizerTests\Uno52ResizetizerTests.sln
- name: Upload Artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: logs_5_2_${{ matrix.config }}_${{ matrix.os }}
path: .\logs
validation_5_2_win:
name: Validate 5.2 Samples (msbuild)
needs: build_tool
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.401'
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: NuGet
path: samples/packages
- name: Validate 5.2 Sample app (Debug - DesignTimeBuild)
run: |
$installationPath = vswhere -latest -property installationPath
$designTimeTarget = Join-Path $installationPath -ChildPath "\MSBuild\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets"
$sampleSolution = 'samples\5.2\Uno52ResizetizerTests\Uno52ResizetizerTests.sln'
$msbuild = vswhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe
dotnet restore $sampleSolution
& $msbuild $sampleSolution /p:TargetFramework=net8.0-android /p:AfterMicrosoftNETSdkTargets=$designTimeTarget /p:Configuration=Debug /p:DesignTimeBuild=true /p:DefineExplicitDefaults=true /p:ProvideCommandLineArgs=true /p:ResolveAssemblyReferencesSilent=false /p:SkipCompilerExecution=true /p:ContinueOnError=ErrorAndContinue /p:DesignTimeSilentResolution=false /t:ResolveFrameworkReferencesDesignTime /t:ResolveProjectReferencesDesignTime2 /t:CollectResolvedSDKReferencesDesignTime /t:CollectPackageReferences /t:ResolveComReferencesDesignTime /t:BuiltProjectOutputGroup /t:CollectFrameworkReferences /t:CollectUpToDateCheckBuiltDesignTime /t:CollectPackageDownloads /t:CollectBuildAccelerationIncompatiblePackageDesignTime /t:ResolveAssemblyReferencesDesignTime /t:GenerateSupportedTargetFrameworkAlias /t:CollectAnalyzersDesignTime /t:CollectUpToDateCheckInputDesignTime /t:CollectUpToDateCheckOutputDesignTime /t:ResolvePackageDependenciesDesignTime /t:CollectCentralPackageVersions /t:CollectCopyToOutputDirectoryItemDesignTime /t:CollectResolvedCompilationReferencesDesignTime
& $msbuild $sampleSolution /p:TargetFramework=net8.0-android /p:Configuration=Debug /p:AndroidInstallAfterBuild=False /p:BuildingInsideVisualStudio=true /p:UseHostCompilerIfAvailable=false /p:DefineExplicitDefaults=true /p:RunConfiguration=Default /t:GetAndroidDependencies
& $msbuild $sampleSolution /p:TargetFramework=net8.0-android /p:AfterMicrosoftNETSdkTargets=$designTimeTarget /p:Configuration=Debug /p:DesignTimeBuild=true /p:BuildingInsideVisualStudio=true /p:DefineExplicitDefaults=true /p:ProvideCommandLineArgs=true /p:ResolveAssemblyReferencesSilent=false /p:SkipCompilerExecution=true /p:ContinueOnError=ErrorAndContinue /p:DesignTimeSilentResolution=false /t:ResolveFrameworkReferencesDesignTime /t:ResolveProjectReferencesDesignTime2 /t:CollectResolvedSDKReferencesDesignTime /t:CollectPackageReferences /t:ResolveComReferencesDesignTime /t:BuiltProjectOutputGroup /t:CollectFrameworkReferences /t:CollectUpToDateCheckBuiltDesignTime /t:CollectPackageDownloads /t:CollectBuildAccelerationIncompatiblePackageDesignTime /t:ResolveAssemblyReferencesDesignTime /t:GenerateSupportedTargetFrameworkAlias /t:CollectAnalyzersDesignTime /t:CollectUpToDateCheckInputDesignTime /t:CollectUpToDateCheckOutputDesignTime /t:ResolvePackageDependenciesDesignTime /t:CollectSuggestedWorkloads /t:CollectCentralPackageVersions /t:CompileDesignTime /t:CollectCopyToOutputDirectoryItemDesignTime /t:CollectResolvedCompilationReferencesDesignTime
& $msbuild $sampleSolution /p:TargetFramework=net8.0-android /p:AfterMicrosoftNETSdkTargets=$designTimeTarget /p:Configuration=Debug /p:DesignTimeBuild=true /p:BuildingInsideVisualStudio=true /p:DefineExplicitDefaults=true /p:ProvideCommandLineArgs=true /p:ResolveAssemblyReferencesSilent=false /p:SkipCompilerExecution=true /p:ContinueOnError=ErrorAndContinue /p:DesignTimeSilentResolution=false /t:ResolveFrameworkReferencesDesignTime /t:ResolveProjectReferencesDesignTime2 /t:CollectResolvedSDKReferencesDesignTime /t:CollectPackageReferences /t:ResolveComReferencesDesignTime /t:BuiltProjectOutputGroup /t:CollectFrameworkReferences /t:CollectUpToDateCheckBuiltDesignTime /t:CollectPackageDownloads /t:CollectBuildAccelerationIncompatiblePackageDesignTime /t:ResolveAssemblyReferencesDesignTime /t:GenerateSupportedTargetFrameworkAlias /t:CollectAnalyzersDesignTime /t:CollectUpToDateCheckInputDesignTime /t:CollectUpToDateCheckOutputDesignTime /t:ResolvePackageDependenciesDesignTime /t:CollectSuggestedWorkloads /t:CollectCentralPackageVersions /t:CompileDesignTime /t:CollectCopyToOutputDirectoryItemDesignTime /t:CollectResolvedCompilationReferencesDesignTime
& $msbuild $sampleSolution /p:TargetFramework=net8.0-android /p:AfterMicrosoftNETSdkTargets=$designTimeTarget /p:Configuration=Debug /p:DesignTimeBuild=true /p:BuildingInsideVisualStudio=true /p:DefineExplicitDefaults=true /p:ProvideCommandLineArgs=true /p:ResolveAssemblyReferencesSilent=false /p:SkipCompilerExecution=true /p:ContinueOnError=ErrorAndContinue /p:DesignTimeSilentResolution=false /t:ResolveFrameworkReferencesDesignTime /t:ResolveProjectReferencesDesignTime2 /t:CollectResolvedSDKReferencesDesignTime /t:CollectPackageReferences /t:ResolveComReferencesDesignTime /t:BuiltProjectOutputGroup /t:CollectFrameworkReferences /t:CollectUpToDateCheckBuiltDesignTime /t:CollectPackageDownloads /t:CollectBuildAccelerationIncompatiblePackageDesignTime /t:ResolveAssemblyReferencesDesignTime /t:GenerateSupportedTargetFrameworkAlias /t:CollectAnalyzersDesignTime /t:CollectUpToDateCheckInputDesignTime /t:CollectUpToDateCheckOutputDesignTime /t:ResolvePackageDependenciesDesignTime /t:CollectSuggestedWorkloads /t:CollectCentralPackageVersions /t:CompileDesignTime /t:CollectCopyToOutputDirectoryItemDesignTime /t:CollectResolvedCompilationReferencesDesignTime
& $msbuild $sampleSolution /p:TargetFramework=net8.0-android /p:Configuration=Debug /p:AndroidInstallAfterBuild=False /p:BuildingInsideVisualStudio=true /p:DefineExplicitDefaults=true /p:RunConfiguration=Default /t:GetAndroidDependencies
& $msbuild $sampleSolution /p:TargetFramework= /p:Configuration=Debug /p:AndroidInstallAfterBuild=False /p:BuildingInsideVisualStudio=true /p:UseHostCompilerIfAvailable=false /p:DefineExplicitDefaults=true /p:RunConfiguration=Default /t:rebuild
- name: Upload Artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: logs_5_2
path: .\logs
validation_5_1:
name: Validate 5.1 Samples
needs: build_tool
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: NuGet
path: samples/packages
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.401'
- run: |
& dotnet tool update --global uno.check --version ${{ env.UnoCheck_Version }} --add-source https://api.nuget.org/v3/index.json
& uno-check -v --ci --non-interactive --fix --skip xcode --skip androidemulator --skip gtk3 --skip vswin --skip vsmac
name: Install .NET Workloads
- name: Validate 5.1 Samples app
run: |
$msbuild = vswhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe
& $msbuild /r /bl:.\logs\samples.binlog samples\NewTemplate\build.slnf /p:AotAssemblies=false /p:WindowsPackageType=None /p:WasmShellILLinkerEnabled=false
- name: Validate 5.1 Samples (incremental)
run: |
$msbuild = vswhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe
& $msbuild /r /bl:.\logs\samples-incremental.binlog samples\NewTemplate\build.slnf /p:AotAssemblies=false /p:WindowsPackageType=None /p:WasmShellILLinkerEnabled=false
- name: Upload Artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: logs_5_1
path: .\logs
# This step is only used to add a required check for the PR
Validation_Check:
name: Validation Check
runs-on: windows-latest
needs:
- build_tool
- validation_5_1
- validation_5_2_win
- validation_5_2_nix
steps:
- name: Checkout
uses: actions/checkout@v4
sign:
name: Sign
if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) }}
runs-on: windows-latest
needs:
- build_tool
- validation_5_1
- validation_5_2_win
- validation_5_2_nix
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
name: NuGet
path: artifacts
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: '3.1.x'
- name: Setup SignClient
run: |
dotnet tool install --tool-path build SignClient
- name: SignClient
shell: pwsh
run: |
build\SignClient sign -i artifacts\*.nupkg -c build\SignClient.json -r "${{ secrets.UNO_PLATFORM_CODESIGN_USERNAME }}" -s "${{ secrets.UNO_PLATFORM_CODESIGN_SECRET }}" -n "uno.resizetizer" -d "uno.resizetizer" -u "https://github.com/unoplatform/uno.resizetizer"
- name: Upload Signed Artifacts
uses: actions/upload-artifact@v4
with:
name: NuGet-Signed
path: .\artifacts
publish_dev:
name: Publish Dev
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
environment: Development
runs-on: windows-latest
needs:
- sign
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
name: NuGet-Signed
path: artifacts
- name: NuGet Push
shell: pwsh
run: |
dotnet nuget push artifacts\*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_ORG_API_KEY }}
publish_prod:
name: Publish Prod
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/') }}
runs-on: windows-latest
environment: Stable
needs:
- sign
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
name: NuGet-Signed
path: artifacts
- name: NuGet Push
shell: pwsh
run: |
dotnet nuget push artifacts\*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_ORG_API_KEY }}