.net Desktop Runtime 8 ((exclusive)) Guide
return installedVersion != null && new Version(installedVersion) >= new Version("8.0.4");
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true Zero runtime dependencies. Works on Windows 7, 10, 11, and Server 2016+. Cons: Large file size (~70-120 MB per app). Must redeploy to update runtime. Strategy 2: Bootstrap with the Official Detector (The "User-Friendly" Way) Keep your app small (framework-dependent) but add a runtime check on startup. .net desktop runtime 8
You build your app against 8.0.4 . Your user has 8.0.1 installed. Your app tries to load and fails with: "Application has stopped working" or a silent crash in event logs. Why? Starting with .NET 8, the runtime rolls forward, but only within certain bounds. If your app is published as framework-dependent (the default), it requires the exact same major.minor version (8.0.x). A missing 8.0.4 dependency will break. The Fix: Two Professional Strategies Stop telling users to "go download a runtime." Here are your two reliable solutions. Strategy 1: Self-Contained Deployment (The "Nuclear Option") Publish your app with the runtime bundled inside the .exe . No runtime installation required. return installedVersion
// In App.xaml.cs or Program.cs using Microsoft.Win32; private static bool IsDesktopRuntimeInstalled() Must redeploy to update runtime
