Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Windows has a rich development ecosystem spanning native desktop apps, web experiences, games, and cross-platform solutions. Whether you're switching from macOS, bringing a Linux workflow to Windows, or extending an existing web or mobile codebase, this guide helps you find your footing quickly.
Pick the path that matches your background:
- Coming from macOS
- Coming from Linux
- Coming from web development
- Coming from iOS or Android development
- Coming from .NET on another platform
Coming from macOS
You're comfortable with Xcode, Homebrew, the Terminal, and building apps that feel native on the platform they run on. On Windows, that same instinct for native quality has a clear path.
Your tools map to these Windows equivalents:
| macOS | Windows |
|---|---|
| Homebrew | WinGet |
| Xcode | Visual Studio 2026 |
| iTerm2 / Terminal.app | Windows Terminal |
| zsh / bash | PowerShell |
| Spotlight | Windows Search / PowerToys Run |
| Finder | File Explorer |
| launchd plists | Windows Services / Task Scheduler |
~/Library/Application Support |
%APPDATA% |
Build native Windows apps with WinUI 3
WinUI 3 is the recommended UI framework for new Windows desktop apps—the equivalent of SwiftUI or AppKit for Windows. It uses Fluent Design components, supports light/dark themes automatically, and runs on Windows 10 version 1809 and later.
Get started in one command:
winget configure -f https://aka.ms/winui-config
This installs Visual Studio 2026 with the required workloads and enables Developer Mode. Then see Quick start: Create your first WinUI 3 app.
Key differences to be aware of
- File paths use backslash (
\) by default, but PowerShell and most tools also accept forward slashes (/). - File paths are case-insensitive by default on Windows (though per-directory case sensitivity can be enabled).
- Apps are distributed as MSIX packages (similar to
.appbundles) or through the Microsoft Store. - There is no direct equivalent of the macOS Keychain for storing secrets; use the Windows Credential Manager or Azure Key Vault for apps.
- In Windows Terminal or PowerShell, use
explorer .to open the current folder in File Explorer — the equivalent ofopen .in macOS Terminal.
Coming from Linux
You're at home in a terminal, comfortable with shell scripts, package managers, and build toolchains. Windows has strong support for Linux-style workflows without sacrificing access to the Windows platform.
Run your existing Linux tools with WSL
Windows Subsystem for Linux (WSL) runs a full Linux distribution alongside Windows. Your existing bash scripts, makefiles, gcc/clang toolchains, Docker workflows, and Python environments work unchanged.
wsl --install
After installation, open Ubuntu from Windows Terminal. Your Windows files are accessible at /mnt/c/. VS Code connects to your WSL environment via the WSL extension.
Your tools map to these Windows equivalents:
| Linux | Windows |
|---|---|
| apt / dnf / pacman | WinGet |
| bash / zsh | PowerShell (or bash inside WSL) |
| GNOME Terminal / Konsole | Windows Terminal |
| systemd units | Windows Services / sc.exe |
/home/<user> |
C:\Users\<username> ($HOME in PowerShell) |
~/.config |
%APPDATA% |
/tmp |
%TEMP% |
make install → /usr/local/bin |
Add directory to %PATH% |
Install packages with WinGet
winget install Git.Git
winget install Microsoft.VisualStudioCode
winget install Docker.DockerDesktop
Build native Windows apps with C++ or C#
For system-level work, Win32 APIs are the Windows equivalent of POSIX. For GUI apps, WinUI 3 with C++ or C# gives you native performance and platform integration. See Quick start: Create your first WinUI 3 app.
Tip
For heavy build workloads (compiling large C++ or Rust projects), store source code on a Dev Drive volume. Dev Drive uses the Resilient File System (ReFS) with developer-optimized settings and can significantly reduce build times.
Line endings
Windows uses CRLF (\r\n); Linux uses LF (\n). Add a .gitattributes file to your repo to avoid issues:
* text=auto
*.sh text eol=lf
*.ps1 text eol=crlf
Tips and gotchas
- WSL lets you run
code .from a Linux shell to open VS Code on Windows with full access to your Linux filesystem — no copying files between environments. - Use
pip installin WSL for your training environment, but ship inference via the ONNX Runtime NuGet package in your Windows app — same model file, two runtimes, zero rework.
Coming from web development
You build with JavaScript, TypeScript, React, Node.js, or similar technologies. Windows is a great platform for web development, and you have multiple options for reaching the Windows desktop.
Set up a web dev environment
WSL lets you run Node.js, npm, and your existing shell scripts natively. Most web developers on Windows use WSL for server-side tooling and Windows Terminal for everything else.
wsl --install
winget install Microsoft.VisualStudioCode
See Set up Node.js on Windows for a full walkthrough.
Reach the Windows desktop from web technologies
You have several options for shipping a Windows app from a web codebase:
| Approach | Best for |
|---|---|
| Progressive Web App (PWA) | Existing web app, light Windows presence |
| WebView2 | Embedding web UI in a native app shell |
| React Native for Windows | Shared React codebase targeting Windows and other platforms |
| Electron on Windows | Existing Electron app shipping on Windows |
React Native for Windows is the most direct path if you're already writing React Native for iOS and Android. Add Windows as a target platform with:
npx react-native init MyApp
cd MyApp
npx react-native-windows-init --overwrite
See React Native for Windows – Getting Started for a full guide.
Key Windows platform features for web developers
- Windows Notifications: Toast notifications that appear in the Action Center.
- Share target: Let users share content from other apps to yours.
- File type associations: Open files directly in your app from File Explorer.
Tips and gotchas
- Use Edge DevTools (F12) to debug your WebView2 content with the same tools you already use for web development — breakpoints, network inspector, and console all work identically.
- You can keep your existing
package.jsonscripts — MSBuild can invoke npm/node as a pre-build step, so your existing web build pipeline still works alongside a native app shell.
Coming from iOS or Android development
You're used to a simulator, a mobile-first design mindset, and deploying through an app store. Windows has equivalents for each—and a familiar app lifecycle model.
Your tools map to these Windows equivalents:
| iOS / Android | Windows |
|---|---|
| Xcode / Android Studio | Visual Studio 2026 |
| Swift / Kotlin | C# (with Windows App SDK) |
| SwiftUI / Jetpack Compose | WinUI 3 (XAML + Fluent Design) |
| Simulator / Emulator | Deploy and debug directly on Windows |
| App Store / Google Play | Microsoft Store |
.ipa / .apk |
MSIX package |
UserDefaults / SharedPreferences |
ApplicationData (requires package identity) or local settings |
| Push notifications (APNs / FCM) | Windows Push Notification Services (WNS) |
Build cross-platform with .NET MAUI
If you're targeting Windows, iOS, and Android from a single codebase, .NET MAUI is the recommended framework. You write C# and XAML once and deploy to all platforms.
winget install Microsoft.DotNet.SDK.9
dotnet new maui -n MyApp
cd MyApp
dotnet run -f net9.0-windows10.0.19041.0
Build a native Windows app with WinUI 3
For a Windows-only experience that takes full advantage of Fluent Design, notifications, and platform APIs, WinUI 3 is the native choice. The development model—XAML markup, a code-behind file, an app lifecycle, and a Store packaging path—will feel familiar.
App lifecycle on Windows
WinUI 3 desktop apps do not have a managed lifecycle the way iOS and Android apps do. There is no applicationDidEnterBackground equivalent. Apps run as normal Windows processes. For background work, use background execution in Windows App SDK or Windows Services.
Tips and gotchas
- Use
wingetfrom the command line to install dev tools quickly — it's similar to usingsdkmanagerfor Android SDK components. For example:winget install Microsoft.VisualStudio.2022.Community.
Coming from .NET on another platform
You write C# or F# and use .NET on macOS or Linux. Most of your skills transfer directly—the main adjustment is learning which Windows-specific APIs and UI frameworks to use.
Your .NET code already runs on Windows
.NET 8 and later are cross-platform. Your class libraries, ASP.NET Core services, console apps, and worker services run on Windows without modification. The Windows-specific differences are:
- UI frameworks: On Windows, you have WinUI 3, WPF, and WinForms in addition to .NET MAUI.
- Platform APIs: The Windows App SDK exposes Windows-specific capabilities—notifications, windowing, file pickers, sharing, push notifications—as NuGet packages.
- Packaging: Windows apps are distributed as MSIX packages, not
.deb,.rpm, or.dmgfiles.
Choose the right UI framework
| Scenario | Recommended framework |
|---|---|
| New Windows desktop app | WinUI 3 |
| Windows + macOS + iOS + Android | .NET MAUI |
| Existing WPF app, add new features | WPF + Windows App SDK |
| Existing WinForms app | WinForms + Windows App SDK |
| Web app with Windows presence | ASP.NET Core + WebView2 |
Get set up
Install the .NET SDK and Visual Studio with the WinUI workload:
winget configure -f https://aka.ms/winui-config
Then follow the Quick start: Create your first WinUI 3 app.
Key Windows-specific NuGet packages
Microsoft.WindowsAppSDK— windowing, notifications, app lifecycle, push notificationsMicrosoft.Windows.SDK.BuildTools— Windows SDK build supportMicrosoft.Toolkit.Uwp.Notifications— toast notification builder (legacy; preferMicrosoft.WindowsAppSDKfor new apps)
Windows platform concepts for everyone
Regardless of your background, a few Windows-specific concepts come up early.
Package management with WinGet
WinGet installs apps and developer tools from the command line:
winget install Git.Git
winget install Microsoft.VisualStudioCode
winget install OpenJS.NodeJS
winget search python
Use a WinGet Configuration file to reproduce your entire dev environment from a single YAML file—ideal for onboarding or setting up a new machine.
Developer Mode
Enable Developer Mode before running or sideloading apps you build. Open Windows Settings > System > Advanced and toggle Developer Mode to On, or run:
# Requires elevation
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1"
Packaging and distribution
Windows apps are distributed as MSIX packages or through traditional installers. MSIX provides clean install/uninstall, automatic updates via the Store, and app isolation.
- Microsoft Store: Submit packaged apps for discovery and distribution. See Publish Windows apps and games.
- WinGet: Publish to the winget-pkgs community repository so users can install your app with
winget install.
AI-assisted development tools
Several Windows developer tools include AI features:
- GitHub Copilot in Visual Studio / VS Code: Inline completions, chat, and multi-file edits.
- Intelligent Terminal: An experimental Windows Terminal build with a built-in agent pane — see Announcing Intelligent Terminal version 0.1.
- Windows Development Skills: Structured knowledge that lets AI agents build native Windows apps end-to-end — see Get started with Windows Development Skills.
- WinApp CLI: A command-line tool for scaffolding, packaging, and deploying Windows apps, designed for automation and AI agent workflows.
See AI-assisted development for Windows for more.
Next steps
Windows developer