Skip to content

Commit

Permalink
Set up Windows Application Packaging Project (#9)
Browse files Browse the repository at this point in the history
Adds app package for the ms store to pipeline
- [x] x86
- [ ] x64

Add a welcome page

- showing the current config
- points to the config such that the user experienced users can change their settings
- exits the app such that the user doesnt need the taskmanager anymore

---------------------------------

* Set up Windows Application Packaging Project

* [Ignore("Skipping this unit test in the pipeline")]

* # Add  MsBuild to the PATH: https://github.com/microsoft/setup-msbuild
    - name: Setup MSBuild.exe
      uses: microsoft/[email protected]

* - name: Add msbuild to PATH
  uses: microsoft/setup-msbuild@v2

* /p:TargetFramework=net8.0-windows /p:Runtimeidentifier=win-$env:TargetPlatform

* Create an X509Certificate2 object from the byte array

* certFilePath

* # if: github.event_name != 'pull_request' && env.Wap_build == 'true'

* dir ${{env.AppxPackageDir}}

* AppxPackageDir

* ${{env.AppxPackageDir}}

* restore

* Configuration

* Release

* ${{ matrix.configuration }}

* /p:Runtimeidentifier=win-$env:TargetPlatform `

* #

* /t:Restore `

* dir

* dir mkdir ${{env.AppxPackageDir}}

* dir ${{env.AppxPackageDir}}

* /t:Restore;Build `

* /t:"Restore;Build" `

* Runtimeidentifier

* x86

* ${{ env.AppxPackageDir }}

* /t:"Restore;Build" `

* /p:AppxBundlePlatforms="${{matrix.targetplatform}}" `

* ${{matrix.targetplatform}}

* fix idendity

* Update manifest version

* if: github.event_name != 'pull_request' && env.Wap_build == 'true'

* x64

* # Only build the wapproj for x86

* add Welcome page

* if: env.Wap_build == 'true' && matrix.targetplatform != 'x64'
  • Loading branch information
mfe- authored Mar 24, 2024
1 parent cda5fdb commit 86ec173
Show file tree
Hide file tree
Showing 23 changed files with 623 additions and 17 deletions.
161 changes: 151 additions & 10 deletions .github/workflows/dotnet-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,35 @@ on:
pull_request:
branches: [ "master" ]

jobs:
env:
Wap_build: true

jobs:

build:

strategy:
matrix:
configuration: [Debug, Release]
# configuration: [Debug, Release]
# targetplatform: [x86, x64]
configuration: [Release]
targetplatform: [x86,x64]

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: KeyboardMouse.sln # Replace with your solution name, i.e. MyWpfApp.sln.
Test_Project_Path: KeyboardMouseWin.Test # Replace with the path to your test project, i.e. MyWpfApp.Tests\MyWpfApp.Tests.csproj.
Wpf_build: false
Wpf_Project_Path: KeyboardMouseWin # Replace with the path to your Wap project, i.e. MyWpf.App.Package\MyWpfApp.Package.wapproj.
Wap_build: true
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: KeyboardMouseWin.csproj # Replace with the path to your Wap project, i.e. MyWpf.App.Package\MyWpfApp.Package.wapproj.
Wap_Project_Path: KeyboardMouseWin.Wap # Replace with the path to your Wap project, i.e. MyWpf.App.Package\MyWpfApp.Package.wapproj.
AppxBundle: Never # Possible Values: Always, Never
BuildMode: SideloadOnly # Possible Values: StoreUpload SideLoadOnly
TargetPlatform: ${{ matrix.targetplatform }}
RuntimeIdentifier: win-${{ matrix.targetplatform }}
AppxPackageDir: ${{ github.workspace }}\AppPackages\

steps:
- name: Checkout
Expand All @@ -36,29 +49,157 @@ jobs:
with:
dotnet-version: 8.0.x

# Add MsBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Add msbuild to PATH
if: env.Wap_build == 'true'
uses: microsoft/setup-msbuild@v2
with:
vs-prerelease: false
#msbuild-architecture: x64

# Restore the application to populate the obj folder with RuntimeIdentifiers
- name: Restore the application
run: dotnet restore ${{ env.Solution_Name }}
if: env.Wpf_build == 'true'
run: dotnet restore ${{ env.Wpf_Project_Path }}/${{ env.Wpf_Project_Path }}.csproj
env:
Configuration: ${{ matrix.configuration }}

# Build the application
- name: Build the application
run: dotnet build ${{ env.Solution_Name }} --configuration ${{ matrix.configuration }}
if: env.Wpf_build == 'true'
run: dotnet build ${{ env.Wpf_Project_Path }}/${{ env.Wpf_Project_Path }}.csproj --configuration ${{ matrix.configuration }}

- name: Build the test application
if: env.Wpf_build == 'true'
run: dotnet build ${{ env.Test_Project_Path }}/${{ env.Test_Project_Path }}.csproj --configuration ${{ matrix.configuration }}

# Execute all unit tests in the solution
- name: Execute unit tests
if: env.Wpf_build == 'true'
run: dotnet test ${{ env.Test_Project_Path }} --configuration ${{ matrix.configuration }}

# Publish the Wap package
- name: Publish the Wap package
if: github.event_name != 'pull_request'
run: dotnet publish ${{ env.Wap_Project_Path }} --no-restore -c ${{ matrix.configuration }} --self-contained true -r win-x64 -o ./published
- name: Publish the Wpf package
if: github.event_name != 'pull_request' && env.Wpf_build == 'true'
run: dotnet publish ${{ env.Wpf_Project_Path }} --no-restore -c ${{ matrix.configuration }} --self-contained true -r win-x64 -o ./published

# Upload the published app as an artifact
- name: Upload artifact
if: github.event_name != 'pull_request'
if: github.event_name != 'pull_request' && env.Wpf_build == 'true'
uses: actions/upload-artifact@v2
with:
name: published-app
path: ./published/

- name: Get rid of all for wapproj
if: env.Wap_build == 'true'
run: dotnet clean ${{ env.Wpf_Project_Path }}/${{ env.Wpf_Project_Path }}.csproj

- uses: azure/login@v1
if: env.Wap_build == 'true'
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
enable-AzPSSession: true

- name: Generate version number with date and workflow Run Number
if: env.Wap_build == 'true'
id: version-creator
run: |
$buildDay = Get-Date -Format "yyyy.Mdd"
$runNumber = "$env:GITHUB_RUN_NUMBER"
$ver = $buildDay + "." + $runNumber + ".0"
echo "::set-output name=APP_VERSION::$ver"
- name: Update manifest version
if: env.Wap_build == 'true'
run: |
[xml]$manifest = get-content "$env:Wap_Project_Path\Package.appxmanifest"
$manifest.Package.Identity.Version = "${{ steps.version-creator.outputs.APP_VERSION }}"
$manifest.save("$env:Wap_Project_Path\Package.appxmanifest")
# Display the content of the Package.appxmanifest file
# Get-Content "$env:Wap_Project_Path\Package.appxmanifest"
- name: Download certificate & install
if: env.Wap_build == 'true'
uses: azure/powershell@v1
with:
inlineScript: |
# Define the name of the key vault and the secret field
$keyvaultname="${{ secrets.KEYVAULTNAME }}"
$keyvaultSecretField="AppPublisherCertificateName"
$keyvaultPublisherCertificatePasswordField="AppPublisherCertificatePassword"
# Get the certificate name from the Azure Key Vault and Convert the SecureString to a regular string
$certificateName = Get-AzKeyVaultSecret -VaultName $keyvaultname -Name $keyvaultSecretField
$certificateNameString = $certificateName.SecretValue | ConvertFrom-SecureString -AsPlainText

# Get the secret (the certificate) from the Azure Key Vault
$secret = Get-AzKeyVaultSecret -VaultName $keyvaultname -Name $certificateNameString
$PlainTextString = $secret.SecretValue | ConvertFrom-SecureString -AsPlainText

# Get the password for the certificate
$publisherCertificatePasswordSecure = Get-AzKeyVaultSecret -VaultName $keyvaultname -Name $keyvaultPublisherCertificatePasswordField
$publisherCertificatePassword = $publisherCertificatePasswordSecure.SecretValue | ConvertFrom-SecureString -AsPlainText

$PFXBase64 = $PlainTextString
$PFXBytes = [System.Convert]::FromBase64String($PFXBase64)
$storageFlags = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable -bor [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::PersistKeySet
$x509Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $PFXBytes, "", $storageFlags
$PFXBytes = $x509Cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx, $publisherCertificatePassword)

# Define the file path where the certificate will be saved
$certFilePath="${{ github.workspace }}\appCert.pfx"
[System.IO.File]::WriteAllBytes($certFilePath, $PFXBytes)

# Set the certFilePath as an environment variable
echo "CERT_FILE_PATH=$certFilePath" | Out-File -FilePath $env:GITHUB_ENV -Append
azPSVersion: "latest"

- name: Build the Windows Application Packaging Project (wapproj) with powershell
if: env.Wap_build == 'true' && matrix.targetplatform != 'x64'
uses: azure/powershell@v1
with:
inlineScript: |
$keyvaultname="${{ secrets.KEYVAULTNAME }}"
$keyvaultPublisherCertificatePasswordField="AppPublisherCertificatePassword"
$keyvaultPublisherCertificateThumbprintField="AppPublisherCertificateThumbprint"
# Get the password for the certificate
$publisherCertificatePasswordSecure = Get-AzKeyVaultSecret -VaultName $keyvaultname -Name $keyvaultPublisherCertificatePasswordField
$publisherCertificatePassword = $publisherCertificatePasswordSecure.SecretValue | ConvertFrom-SecureString -AsPlainText
# Get the thumbprint for the certificate
$resizesigningCertthumbprint = Get-AzKeyVaultSecret -VaultName $keyvaultname -Name $keyvaultPublisherCertificateThumbprintField
$resizesigningCertthumbprint = $resizesigningCertthumbprint.SecretValue | ConvertFrom-SecureString -AsPlainText
mkdir ${{env.AppxPackageDir}}
msbuild $env:Wap_Project_Path/$env:Wap_Project_Path.wapproj `
/t:"Restore;Build" `
/p:AppxBundlePlatforms="${{matrix.targetplatform}}" `
/p:Configuration=${{ matrix.configuration }} `
/p:UapAppxPackageBuildMode=$env:BuildMode `
/p:AppxBundle=$env:AppxBundle `
/p:PackageCertificateKeyFile=$env:CERT_FILE_PATH `
/p:AppxPackageDir="$env:AppxPackageDir" `
/p:GenerateAppxPackageOnBuild=true `
/p:TargetFramework=net8.0-windows `
/p:AppInstallerUri="${{env.AppxPackageDir}}" `
/p:RuntimeIdentifiers=win-${{matrix.targetplatform}}
if ($LASTEXITCODE -ne 0) {
Write-Error "MSBuild Build failed with exit code $LASTEXITCODE"
exit $LASTEXITCODE
}
azPSVersion: "latest"

# Upload the MSIX package: https://github.com/marketplace/actions/upload-artifact
- name: Upload build artifacts
uses: actions/upload-artifact@v2
if: github.event_name != 'pull_request' && env.Wap_build == 'true'
with:
name: MSIX Package
path: ${{ env.AppxPackageDir }}
109 changes: 109 additions & 0 deletions KeyboardMouse.sln
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,137 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleApp1", "ConsoleApp1\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KeyboardMouseWin.TestApp", "KeyboardMouseWin.TestApp\KeyboardMouseWin.TestApp.csproj", "{B81DDE30-BE7A-405D-93E2-4F613A302746}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "KeyboardMouseWin.Wap", "KeyboardMouseWin.Wap\KeyboardMouseWin.Wap.wapproj", "{6450077F-593C-42BD-97A6-6011B6B2AE2F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{237993AD-E171-4D65-AE86-AC4C4E05A3EF}"
ProjectSection(SolutionItems) = preProject
.github\workflows\dotnet-desktop.yml = .github\workflows\dotnet-desktop.yml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|ARM.Build.0 = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|ARM64.Build.0 = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|x64.ActiveCfg = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|x64.Build.0 = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|x86.ActiveCfg = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Debug|x86.Build.0 = Debug|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|Any CPU.Build.0 = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|ARM.ActiveCfg = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|ARM.Build.0 = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|ARM64.ActiveCfg = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|ARM64.Build.0 = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|x64.ActiveCfg = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|x64.Build.0 = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|x86.ActiveCfg = Release|Any CPU
{1494E607-91E6-481D-B0A5-64EC5F56B916}.Release|x86.Build.0 = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|ARM.Build.0 = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|ARM64.Build.0 = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|x64.ActiveCfg = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|x64.Build.0 = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|x86.ActiveCfg = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Debug|x86.Build.0 = Debug|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|Any CPU.Build.0 = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|ARM.ActiveCfg = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|ARM.Build.0 = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|ARM64.ActiveCfg = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|ARM64.Build.0 = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|x64.ActiveCfg = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|x64.Build.0 = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|x86.ActiveCfg = Release|Any CPU
{D02DD2D1-F2CB-4B7F-9D6F-0316EE0FC21B}.Release|x86.Build.0 = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|ARM.ActiveCfg = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|ARM.Build.0 = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|ARM64.Build.0 = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|x64.ActiveCfg = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|x64.Build.0 = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|x86.ActiveCfg = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Debug|x86.Build.0 = Debug|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|Any CPU.Build.0 = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|ARM.ActiveCfg = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|ARM.Build.0 = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|ARM64.ActiveCfg = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|ARM64.Build.0 = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|x64.ActiveCfg = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|x64.Build.0 = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|x86.ActiveCfg = Release|Any CPU
{B8107673-C22A-4489-A8D4-7E0D9ECAF8CE}.Release|x86.Build.0 = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|ARM.ActiveCfg = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|ARM.Build.0 = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|ARM64.Build.0 = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|x64.ActiveCfg = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|x64.Build.0 = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|x86.ActiveCfg = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Debug|x86.Build.0 = Debug|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|Any CPU.Build.0 = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|ARM.ActiveCfg = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|ARM.Build.0 = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|ARM64.ActiveCfg = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|ARM64.Build.0 = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|x64.ActiveCfg = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|x64.Build.0 = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|x86.ActiveCfg = Release|Any CPU
{B81DDE30-BE7A-405D-93E2-4F613A302746}.Release|x86.Build.0 = Release|Any CPU
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|ARM.ActiveCfg = Debug|ARM
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|ARM.Build.0 = Debug|ARM
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|ARM.Deploy.0 = Debug|ARM
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|ARM64.ActiveCfg = Debug|ARM64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|ARM64.Build.0 = Debug|ARM64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|ARM64.Deploy.0 = Debug|ARM64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|x64.ActiveCfg = Debug|x64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|x64.Build.0 = Debug|x64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|x64.Deploy.0 = Debug|x64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|x86.ActiveCfg = Debug|x86
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|x86.Build.0 = Debug|x86
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Debug|x86.Deploy.0 = Debug|x86
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|Any CPU.Build.0 = Release|Any CPU
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|Any CPU.Deploy.0 = Release|Any CPU
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|ARM.ActiveCfg = Release|ARM
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|ARM.Build.0 = Release|ARM
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|ARM.Deploy.0 = Release|ARM
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|ARM64.ActiveCfg = Release|ARM64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|ARM64.Build.0 = Release|ARM64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|ARM64.Deploy.0 = Release|ARM64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|x64.ActiveCfg = Release|x64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|x64.Build.0 = Release|x64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|x64.Deploy.0 = Release|x64
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|x86.ActiveCfg = Release|x86
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|x86.Build.0 = Release|x86
{6450077F-593C-42BD-97A6-6011B6B2AE2F}.Release|x86.Deploy.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
1 change: 1 addition & 0 deletions KeyboardMouse/KeyboardMouse.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
Expand Down
Loading

0 comments on commit 86ec173

Please sign in to comment.