Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 115 additions & 0 deletions .github/workflows/dotnet-desktop.yml
Original file line number Diff line number Diff line change
@@ -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
Comment on lines +6 to +37
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation comments (lines 1-37) describe a workflow for building, testing, signing and packaging WPF or Windows Forms desktop applications with MSIX packaging. However, this repository contains a simple console application without any GUI or packaging requirements. These comments are misleading and should be updated to reflect the actual purpose of the workflow, or the workflow should be redesigned to match the actual project structure.

Suggested change
# 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
# This workflow builds and tests a .NET application (for example, a console app)
# on pushes and pull requests.
#
# To configure this workflow:
#
# 1. Configure environment variables
# GitHub sets default environment variables for every workflow run.
# Replace or extend the variables in the "env" section below so they match
# your project's solution, project files, and target framework.
#
# 2. Build and test settings
# Adjust the "dotnet build" and "dotnet test" steps (if present) so they
# point to the correct solution or project and use the configurations
# you care about (Debug/Release, specific frameworks, etc.).
#
# 3. Branch and trigger configuration
# Update the "on" section to match the branches and events where you
# want this workflow to run.
#
# This file is a starting point for continuous integration (CI) for .NET.
# You can extend it with additional steps such as publishing artifacts,
# running code analysis, or deploying the application as needed.
#
# For more information on GitHub Actions, refer to:
# https://github.com/features/actions
# For general .NET continuous integration guidance, see:
# https://learn.microsoft.com/dotnet/devops/github-actions-dotnet

Copilot uses AI. Check for mistakes.

name: .NET Core Desktop
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow name ".NET Core Desktop" and the comments describing "WPF or Windows Forms desktop application" are misleading. The actual project (WinAppsBuilderList) is a simple .NET console application, not a desktop GUI application. The workflow name should accurately reflect the project type, such as ".NET Console Application" or simply ".NET Build".

Copilot uses AI. Check for mistakes.

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

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.
Comment on lines +59 to +62
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The placeholder environment variables need to be configured for this project. Based on the repository structure, this appears to be a simple console application without a Windows Application Packaging (WAP) project. The current project structure shows:

  • Solution: src/WinAppsBuilderList.sln
  • Project: src/WinAppsBuilderList.csproj (console app, not WPF/WinForms)
  • No test projects exist in the repository
  • No WAP packaging project exists

These environment variables should be updated to match the actual project structure, or the entire WAP-related steps should be removed since this is a simple console application.

Copilot uses AI. Check for mistakes.

steps:
- name: Checkout
uses: actions/checkout@v4
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's an inconsistency in the actions/checkout version used across workflows. The existing rebase-enforce.yml workflow uses actions/checkout@v2, while this new workflow uses actions/checkout@v4. For consistency and to use the latest features, consider updating the older workflow to v4 as well, or document why different versions are used. Note that v2 is significantly outdated (released in 2020).

Copilot uses AI. Check for mistakes.
with:
fetch-depth: 0

# Install the .NET Core workload
- name: Install .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v2

# 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
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The variable $env:Solution_Name references a placeholder value "your-solution-name" that has not been configured. This will cause the restore step to fail. The actual solution path should be "src/WinAppsBuilderList.sln" based on the repository structure.

Copilot uses AI. Check for mistakes.
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)
Comment on lines +91 to +95
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step attempts to decode a signing certificate that may not be configured in the repository secrets. Additionally, it references $env:Wap_Project_Directory which is set to the placeholder "your-wap-project-directory-name". This will fail since there is no Windows Application Packaging project in the repository. This entire signing workflow appears to be unnecessary for a simple console application.

Copilot uses AI. Check for mistakes.

# 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 }}
Comment on lines +98 to +104
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step will fail because $env:Wap_Project_Path references the placeholder "your-wap-project-path" which has not been configured. Moreover, the repository does not contain a Windows Application Packaging project, making this entire step inappropriate for the current project structure which is a simple console application.

Copilot uses AI. Check for mistakes.

# Remove the pfx
- name: Remove the pfx
run: Remove-Item -path $env:Wap_Project_Directory\GitHubActionsWorkflow.pfx

Comment on lines +106 to +109
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step references the unconfigured placeholder $env:Wap_Project_Directory which will cause it to attempt to remove a non-existent path. Since there is no WAP project in the repository, this step should be removed.

Suggested change
# Remove the pfx
- name: Remove the pfx
run: Remove-Item -path $env:Wap_Project_Directory\GitHubActionsWorkflow.pfx

Copilot uses AI. Check for mistakes.
# Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: MSIX Package
Comment on lines +110 to +114
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The artifact name "MSIX Package" is misleading because this project doesn't produce MSIX packages. This is a simple console application that produces executable files. If artifacts are uploaded, the name should reflect what's actually being uploaded, such as "Build Output" or "Console Application Build".

Suggested change
# Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: MSIX Package
# Upload the build artifacts: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: Build Output

Copilot uses AI. Check for mistakes.
path: ${{ env.Wap_Project_Directory }}\AppPackages
Comment on lines +110 to +115
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The artifact path references $env:Wap_Project_Directory which is set to the placeholder "your-wap-project-directory-name" and the AppPackages subdirectory that doesn't exist in this repository. This will result in no artifacts being uploaded or an error. Since this is a console application, the appropriate artifacts would be the build output from bin/Debug or bin/Release.

Suggested change
# Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: MSIX Package
path: ${{ env.Wap_Project_Directory }}\AppPackages
# Upload the build output: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: Build Output
path: '**\bin\${{ matrix.configuration }}\**'

Copilot uses AI. Check for mistakes.
Loading