Commands
Run these on a Windows dev machine. This Linux workspace can write the pack, but it cannot validate Visual Studio templates, MSIX packaging, WACK, Store upload, Appium Windows driver, or WinUI launch behavior.
Environment Check
dotnet --info
dotnet --list-sdks
winget --version
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
Confirm Developer Mode and Visual Studio workloads manually:
Settings -> System -> Advanced -> Developer Mode
Visual Studio Installer -> WinUI application development workload
Visual Studio Installer -> MSIX Packaging Tools
The current official quickstart names Visual Studio 2026 and .NET 10 SDK. Recheck the quickstart before creating a new app.
Install Templates
dotnet new install Microsoft.WindowsAppSDK.WinUI.CSharp.Templates
dotnet new list winui
Create And Run
dotnet new winui -n MyWinUIApp
cd MyWinUIApp
dotnet build
dotnet run
The official quickstart says the template includes tooling that registers a debug identity and launches with MSIX package identity during dotnet run.
Build
dotnet build --configuration Debug
dotnet build --configuration Release
For Visual Studio packaging, use the IDE path when the official docs or project template expects it:
Visual Studio -> right-click package project or app project -> Publish -> Create App Packages
Test
Pure logic tests:
dotnet test .\tests\MyApp.Core.Tests\MyApp.Core.Tests.csproj
WinUI/XAML tests need a WinUI Unit Test App or Visual Studio Test Explorer path:
Visual Studio -> Test Explorer -> Run All
When a normal MSTest, NUnit, or xUnit project references WinUI-related code, align the target framework/runtime identifiers and bootstrap property with current Microsoft testing guidance.
Package
Use Visual Studio packaging first for Store-bound MSIX because it handles Store-oriented flows and manifest checks.
Visual Studio -> Publish -> Create App Packages -> Microsoft Store or sideloading path
If your current Windows App SDK docs or tooling use winapp, record the exact docs page and command. Do not invent package commands from memory.
Runtime Deployment
Framework-dependent unpackaged or external-location apps need runtime planning:
WindowsAppRuntimeInstall.exe --quiet
Self-contained apps use an MSBuild property in the app project:
<PropertyGroup>
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
</PropertyGroup>
Signing
Inspect signing state before release:
Get-AuthenticodeSignature .\path\to\MyApp.exe
Get-AuthenticodeSignature .\path\to\MyApp.msix
Store MSIX submissions are re-signed by Microsoft after certification. Non-Store MSIX, MSI, and EXE distribution needs publisher-managed signing.
Store And Certification Prep
Run WACK on the Windows machine before claiming Store readiness:
Windows App Certification Kit -> Select packaged app -> Run validation suite
Partner Center actions are manual and app-specific:
Reserve app name -> configure pricing and availability -> properties -> age ratings -> packages -> Store listings -> certification notes -> submit
Gotcha:
dotnet buildsuccess does not prove the MSIX installs, launches, passes certification, has correct identity, or can be submitted to the Store.