Framework-specific Windows development guidance for Electron, .NET (WPF, WinForms), C++, Rust, Flutter, and Tauri. Use when packaging or adding Windows features to an Electron app, .NET desktop app, Flutter app, Tauri app, Rust app, or C++ app.
Use this skill when:
Each framework has a detailed guide — refer to the links below rather than trying to guess commands.
| Framework | Install method | Guide |
|---|---|---|
| Electron | npm install --save-dev @microsoft/winappcli | Electron setup guide |
| .NET (WPF, WinForms, Console) | winget install Microsoft.winappcli | .NET guide |
| C++ (CMake, MSBuild) | winget install Microsoft.winappcli | C++ guide |
| Rust | winget install Microsoft.winappcli | Rust guide |
| Flutter | winget install Microsoft.winappcli | Flutter guide |
| Tauri | winget install Microsoft.winappcli | Tauri guide |
Use the npm package (@Microsoft/WinAppCli), not the standalone CLI. The npm package includes:
node_modulesnpx winapp nodeQuick start:
npm install --save-dev @microsoft/winappcli
npx winapp init --use-defaults
npx winapp node create-addon --template cs # create a C# native addon
npx winapp node add-electron-debug-identity # register identity for debugging
Additional Electron guides:
.NET projects have direct access to Windows APIs. Key differences:
Microsoft.Windows.SDK.BuildTools or Microsoft.WindowsAppSDK don't need winapp.yaml — winapp auto-detects SDK versions from the .csprojappxmanifest.xml, not winapp.yamlwinapp init automatically adds the Microsoft.Windows.SDK.BuildTools.WinApp NuGet package, enabling dotnet run with automatic identity registrationIf you already have a Package.appxmanifest (e.g., WinUI 3 apps or projects with an existing packaging setup), you likely don't need winapp init — your project is already configured for packaged builds. Just make sure:
.csproj references the Microsoft.WindowsAppSDK NuGet package (WinUI 3 apps already have this)<WindowsPackageType>MSIX</WindowsPackageType> or equivalent)Quick start:
winapp init --use-defaults
dotnet build <path-to-project.csproj> -c Debug -p:Platform=x64
winapp run bin\x64\Debug\<tfm>\win-x64\
Replace <tfm> with your target framework (e.g., net10.0-windows10.0.26100.0), and adjust x64 to match your target architecture.
C++ projects use winapp primarily for SDK projections (CppWinRT headers) and packaging:
winapp init --setup-sdks stable downloads Windows SDK + App SDK and generates CppWinRT headers.winapp/generated/include.cppwinrt.rsp for build system integration.winapp/packages to include/lib paths in your build systemwindows crate for Windows API bindingstarget/release/myapp.exeflutter build windows)build\windows\x64\runner\Release\.msi installers| Framework | Recommended command | Notes |
|---|---|---|
| .NET | winapp run .\bin\x64\Debug\<tfm>\win-x64\ | Build with dotnet build -c Debug -p:Platform=x64 first; GUI apps launch directly; console apps need --with-alias |
| C++ | winapp run .\build\Debug --with-alias | Console apps need --with-alias + uap5:ExecutionAlias in manifest |
| Rust | winapp run .\target\debug --with-alias | Console apps need --with-alias + uap5:ExecutionAlias in manifest |
| Flutter | winapp run .\build\windows\x64\runner\Debug | GUI app — plain winapp run works |
| Tauri | winapp run .\dist | Stage exe to dist/ first (avoids copying entire target/ tree); GUI app |
| Electron | npx winapp node add-electron-debug-identity | Uses Electron-specific identity registration; winapp run is not recommended for Electron |
Key rules:
winapp run <build-output> — launches via AUMID activationwinapp run <build-output> --with-alias — launches via execution alias to preserve stdin/stdout. Requires uap5:ExecutionAlias in appxmanifest.xmlnpx winapp node add-electron-debug-identity because electron.exe is in node_modules/, not your build outputwinapp create-debug-identity <exe> so your IDE can F5-launch the exe with identity from the first instructionFor full debugging scenarios and IDE setup, see the Debugging Guide.
winapp-setup — initial project setup with winapp initwinapp-manifest — creating and customizing appxmanifest.xmlwinapp-signing — certificate generation and managementwinapp-package — creating MSIX installers from build outputwinapp-identity — enabling package identity for Windows APIs during developmentwinapp-troubleshoot for a command selection flowchart