This sample demonstrates how to use winapp CLI with a .NET console application to add package identity and package as MSIX.
For a complete step-by-step guide, see the .NET Getting Started Guide.
- Basic .NET console application with automatic .NET project detection by
winapp init - Using Windows Runtime APIs to retrieve package identity
- NuGet package references (
Microsoft.WindowsAppSDK,Microsoft.Windows.SDK.BuildTools) added directly to.csprojbywinapp init - Using
Microsoft.Windows.SDK.BuildTools.WinAppNuGet package for automaticdotnet runsupport with package identity - Using execution alias (
WinAppRunUseExecutionAlias) so console output stays in the current terminal - Using Windows App SDK via NuGet for modern Windows APIs
- MSIX packaging with app manifest and assets
- .NET 10.0 SDK
- winapp CLI built locally: run
.\scripts\build-cli.ps1from the repo root (this builds the CLI and produces theMicrosoft.Windows.SDK.BuildTools.WinAppNuGet package inartifacts/nuget/)
Run winapp init in this directory. It auto-detects the .csproj and runs the .NET-specific setup flow:
winapp initThis will validate the TargetFramework, add required NuGet packages to the .csproj, and generate the manifest, assets, and development certificate. No winapp.yaml is needed for .NET projects.
The .csproj includes the Microsoft.Windows.SDK.BuildTools.WinApp NuGet package, which hooks into dotnet run to automatically register a loose layout package with identity and launch the app.
Because this is a console app, the project sets WinAppRunUseExecutionAlias to true so the app runs via its execution alias. This keeps console I/O in the current terminal instead of opening a new window:
dotnet runOutput:
Package Family Name: dotnet-app_12345abcde
Windows App Runtime Version: 1.8-stable (1.8.0)
Note: The execution alias (
dotnet-app.exe) is defined inappxmanifest.xmlviauap5:AppExecutionAlias. You can add one withwinapp manifest add-alias.
The .csproj is configured to automatically package when publishing:
# Create a dev certificate (first time only)
winapp cert generate --if-exists skip
# Publish and package in one command
dotnet publish
# Install certificate (first time only, requires admin)
winapp cert install .\devcert.pfx
# Install the generated MSIX
# The .msix file will be in the root directoryDouble-click the .msix file to install, then run from anywhere:
dotnet-app