From a7f6d73324fba7328c526660ac78e5c5eaeb0993 Mon Sep 17 00:00:00 2001 From: Tom Isaacson Date: Thu, 3 Aug 2023 07:06:05 +1200 Subject: [PATCH 1/5] Create dotnet-desktop.yml --- .github/workflows/dotnet-desktop.yml | 115 +++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 .github/workflows/dotnet-desktop.yml diff --git a/.github/workflows/dotnet-desktop.yml b/.github/workflows/dotnet-desktop.yml new file mode 100644 index 0000000..4f60c8b --- /dev/null +++ b/.github/workflows/dotnet-desktop.yml @@ -0,0 +1,115 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# This workflow will build, test, sign and package a WPF or Windows Forms desktop application +# built on .NET Core. +# To learn how to migrate your existing application to .NET Core, +# refer to https://docs.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-framework +# +# To configure this workflow: +# +# 1. Configure environment variables +# GitHub sets default environment variables for every workflow run. +# Replace the variables relative to your project in the "env" section below. +# +# 2. Signing +# Generate a signing certificate in the Windows Application +# Packaging Project or add an existing signing certificate to the project. +# Next, use PowerShell to encode the .pfx file using Base64 encoding +# by running the following Powershell script to generate the output string: +# +# $pfx_cert = Get-Content '.\SigningCertificate.pfx' -Encoding Byte +# [System.Convert]::ToBase64String($pfx_cert) | Out-File 'SigningCertificate_Encoded.txt' +# +# Open the output file, SigningCertificate_Encoded.txt, and copy the +# string inside. Then, add the string to the repo as a GitHub secret +# and name it "Base64_Encoded_Pfx." +# For more information on how to configure your signing certificate for +# this workflow, refer to https://github.com/microsoft/github-actions-for-desktop-apps#signing +# +# Finally, add the signing certificate password to the repo as a secret and name it "Pfx_Key". +# See "Build the Windows Application Packaging project" below to see how the secret is used. +# +# For more information on GitHub Actions, refer to https://github.com/features/actions +# For a complete CI/CD sample to get started with GitHub Action workflows for Desktop Applications, +# refer to https://github.com/microsoft/github-actions-for-desktop-apps + +name: .NET Core Desktop + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "*" ] + +jobs: + + build: + + strategy: + matrix: + configuration: [Debug, Release] + + runs-on: windows-latest # For a list of available runner types, refer to + # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on + + env: + Solution_Name: your-solution-name # Replace with your solution name, i.e. MyWpfApp.sln. + Test_Project_Path: your-test-project-path # Replace with the path to your test project, i.e. MyWpfApp.Tests\MyWpfApp.Tests.csproj. + Wap_Project_Directory: your-wap-project-directory-name # Replace with the Wap project directory relative to the solution, i.e. MyWpfApp.Package. + Wap_Project_Path: your-wap-project-path # Replace with the path to your Wap project, i.e. MyWpf.App.Package\MyWpfApp.Package.wapproj. + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Install the .NET Core workload + - name: Install .NET Core + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 6.0.x + + # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild + - name: Setup MSBuild.exe + uses: microsoft/setup-msbuild@v1.0.2 + + # Execute all unit tests in the solution + - name: Execute unit tests + run: dotnet test + + # Restore the application to populate the obj folder with RuntimeIdentifiers + - name: Restore the application + run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration + env: + Configuration: ${{ matrix.configuration }} + + # Decode the base 64 encoded pfx and save the Signing_Certificate + - name: Decode the pfx + run: | + $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.Base64_Encoded_Pfx }}") + $certificatePath = Join-Path -Path $env:Wap_Project_Directory -ChildPath GitHubActionsWorkflow.pfx + [IO.File]::WriteAllBytes("$certificatePath", $pfx_cert_byte) + + # Create the app package by building and packaging the Windows Application Packaging project + - name: Create the app package + run: msbuild $env:Wap_Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + env: + Appx_Bundle: Always + Appx_Bundle_Platforms: x86|x64 + Appx_Package_Build_Mode: StoreUpload + Configuration: ${{ matrix.configuration }} + + # Remove the pfx + - name: Remove the pfx + run: Remove-Item -path $env:Wap_Project_Directory\GitHubActionsWorkflow.pfx + + # Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact + - name: Upload build artifacts + uses: actions/upload-artifact@v3 + with: + name: MSIX Package + path: ${{ env.Wap_Project_Directory }}\AppPackages From 51bc64e89c2da14cbaaf51a37f6170972230e882 Mon Sep 17 00:00:00 2001 From: Tom Isaacson Date: Thu, 3 Aug 2023 07:18:35 +1200 Subject: [PATCH 2/5] Update dotnet-desktop.yml --- .github/workflows/dotnet-desktop.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/dotnet-desktop.yml b/.github/workflows/dotnet-desktop.yml index 4f60c8b..7ebb66e 100644 --- a/.github/workflows/dotnet-desktop.yml +++ b/.github/workflows/dotnet-desktop.yml @@ -56,7 +56,7 @@ jobs: # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on env: - Solution_Name: your-solution-name # Replace with your solution name, i.e. MyWpfApp.sln. + Solution_Name: GoFreeWebSocketTest/WebSocketTest.sln Test_Project_Path: your-test-project-path # Replace with the path to your test project, i.e. MyWpfApp.Tests\MyWpfApp.Tests.csproj. Wap_Project_Directory: your-wap-project-directory-name # Replace with the Wap project directory relative to the solution, i.e. MyWpfApp.Package. Wap_Project_Path: your-wap-project-path # Replace with the path to your Wap project, i.e. MyWpf.App.Package\MyWpfApp.Package.wapproj. @@ -77,10 +77,6 @@ jobs: - name: Setup MSBuild.exe uses: microsoft/setup-msbuild@v1.0.2 - # Execute all unit tests in the solution - - name: Execute unit tests - run: dotnet test - # Restore the application to populate the obj folder with RuntimeIdentifiers - name: Restore the application run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration From 25b7fc4e347143ceb24ac7b77e8b02794de16254 Mon Sep 17 00:00:00 2001 From: Tom Isaacson Date: Thu, 3 Aug 2023 07:25:14 +1200 Subject: [PATCH 3/5] Update dotnet-desktop.yml --- .github/workflows/dotnet-desktop.yml | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/.github/workflows/dotnet-desktop.yml b/.github/workflows/dotnet-desktop.yml index 7ebb66e..47e3901 100644 --- a/.github/workflows/dotnet-desktop.yml +++ b/.github/workflows/dotnet-desktop.yml @@ -83,29 +83,8 @@ jobs: env: Configuration: ${{ matrix.configuration }} - # Decode the base 64 encoded pfx and save the Signing_Certificate - - name: Decode the pfx - run: | - $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.Base64_Encoded_Pfx }}") - $certificatePath = Join-Path -Path $env:Wap_Project_Directory -ChildPath GitHubActionsWorkflow.pfx - [IO.File]::WriteAllBytes("$certificatePath", $pfx_cert_byte) - - # Create the app package by building and packaging the Windows Application Packaging project - - name: Create the app package - run: msbuild $env:Wap_Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + # Build the application + - name: Build the application + run: msbuild /p:Configuration=$env:Configuration env: - Appx_Bundle: Always - Appx_Bundle_Platforms: x86|x64 - Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} - - # Remove the pfx - - name: Remove the pfx - run: Remove-Item -path $env:Wap_Project_Directory\GitHubActionsWorkflow.pfx - - # Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact - - name: Upload build artifacts - uses: actions/upload-artifact@v3 - with: - name: MSIX Package - path: ${{ env.Wap_Project_Directory }}\AppPackages From e96ada1915ca15428a545e590a74ffc40bc46fdf Mon Sep 17 00:00:00 2001 From: Tom Isaacson Date: Thu, 3 Aug 2023 07:30:12 +1200 Subject: [PATCH 4/5] Update dotnet-desktop.yml --- .github/workflows/dotnet-desktop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-desktop.yml b/.github/workflows/dotnet-desktop.yml index 47e3901..d64e0f2 100644 --- a/.github/workflows/dotnet-desktop.yml +++ b/.github/workflows/dotnet-desktop.yml @@ -85,6 +85,6 @@ jobs: # Build the application - name: Build the application - run: msbuild /p:Configuration=$env:Configuration + run: msbuild $env:Solution_Name /p:Configuration=$env:Configuration env: Configuration: ${{ matrix.configuration }} From 1ef21aaa56a6778b8cd9c85b824f74a0e26b885f Mon Sep 17 00:00:00 2001 From: Tom Isaacson Date: Thu, 3 Aug 2023 11:33:59 +1200 Subject: [PATCH 5/5] Upgrade to NET v4.8. --- .vs/GoFreeWebSocketTest/v17/.wsuo | Bin 0 -> 14336 bytes .../03bad372-fbf0-4468-a7a3-b28a04e23d89.vsidx | Bin 0 -> 66407 bytes .../WebSocketTest/FileContentIndex/read.lock | 0 .../WebSocketTest/WebSocketTest.csproj | 4 ++-- GoFreeWebSocketTest/WebSocketTest/app.config | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 .vs/GoFreeWebSocketTest/v17/.wsuo create mode 100644 GoFreeWebSocketTest/.vs/WebSocketTest/FileContentIndex/03bad372-fbf0-4468-a7a3-b28a04e23d89.vsidx create mode 100644 GoFreeWebSocketTest/.vs/WebSocketTest/FileContentIndex/read.lock diff --git a/.vs/GoFreeWebSocketTest/v17/.wsuo b/.vs/GoFreeWebSocketTest/v17/.wsuo new file mode 100644 index 0000000000000000000000000000000000000000..8edf1337bd54fdf3873daed3c899275efea105ef GIT binary patch literal 14336 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 - + Debug x86 @@ -10,7 +10,7 @@ Properties WebSocketTest WebSocketTest - v4.5 + v4.8 512 diff --git a/GoFreeWebSocketTest/WebSocketTest/app.config b/GoFreeWebSocketTest/WebSocketTest/app.config index c5e1dae..786a845 100644 --- a/GoFreeWebSocketTest/WebSocketTest/app.config +++ b/GoFreeWebSocketTest/WebSocketTest/app.config @@ -1,3 +1,3 @@ - +