How to Find the .NET Version Installed on Your Computer

Knowing which version of .NET is running on your system matters more than most people realize. Whether you're troubleshooting a crashed application, preparing to install new software, or configuring a development environment, the installed .NET version directly affects what will — and won't — work on your machine.

The tricky part? Microsoft has released multiple generations of .NET, and a single computer can have several versions installed simultaneously. Finding the right one requires knowing which .NET you're looking for.

Understanding the .NET Landscape First

Before diving into commands and file paths, it helps to understand that ".NET" isn't a single thing — it's a family of related frameworks that evolved over time.

  • .NET Framework — The original Windows-only runtime, versions ranging from 1.0 through 4.8.x. Still widely used by legacy applications and built into Windows.
  • .NET Core — A cross-platform reimagining of .NET, released starting with version 1.0. Versions 1.x through 3.1 carry the "Core" label.
  • .NET 5 and later — Microsoft unified the two lines under a single ".NET" name starting with version 5. Current releases follow this naming (5, 6, 7, 8, and beyond).

This distinction matters because the methods for checking each version differ, and some software specifically requires one lineage over the other.

How to Check the .NET Framework Version on Windows

.NET Framework is a Windows component, so the fastest place to look is the Registry.

Using the Registry Editor

  1. Press Windows Key + R, type regedit, and press Enter
  2. Navigate to: HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDP
  3. Expand the subkeys — each installed Framework version appears as a folder (e.g., v4, v3.5)
  4. For .NET Framework 4.5 and later, go deeper: v4 > Full and look for the Release DWORD value

The Release value is a number that maps to a specific version. For example, a Release value of 528040 or higher corresponds to .NET Framework 4.8. Microsoft maintains the full mapping table in its official documentation.

Using Command Prompt (Quick Method)

Open Command Prompt and run:

reg query "HKLMSOFTWAREMicrosoftNET Framework SetupNDP" /s 

This outputs all installed .NET Framework versions and subversions in one pass. Look for the Version string values under each key.

How to Check .NET Core / .NET 5+ Versions

For the modern, cross-platform .NET runtime, the dotnet CLI is the authoritative tool — assuming the .NET SDK or Runtime is installed.

Open Command Prompt, PowerShell, or Terminal (on macOS/Linux) and run:

dotnet --version 

This returns the default SDK version currently active. But there's a more complete command:

dotnet --list-runtimes 

This shows every installed runtime, including:

  • Microsoft.AspNetCore.App — for web applications
  • Microsoft.NETCore.App — the base runtime
  • Microsoft.WindowsDesktop.App — for WPF and Windows Forms apps (Windows only)

To see all installed SDKs specifically:

dotnet --list-sdks 

💡 Why You Might See Multiple Versions

It's completely normal to have three, five, or more .NET versions installed simultaneously. Applications target specific runtimes, and Windows doesn't remove old versions when new ones install. Each runtime entry in dotnet --list-runtimes is a separate, functional installation.

Checking .NET Version on macOS and Linux

The dotnet CLI approach works identically on non-Windows platforms:

dotnet --list-runtimes dotnet --list-sdks 

On macOS, if dotnet isn't recognized as a command, .NET may not be in your PATH. It's often installed at /usr/local/share/dotnet/. You can run it directly:

/usr/local/share/dotnet/dotnet --list-runtimes 

On Linux, the installation path varies by distribution and install method (package manager vs. manual). Common paths include /usr/share/dotnet/ or /opt/dotnet/.

Using PowerShell for a Complete Picture 🖥️

PowerShell offers a scriptable approach that can be useful for system administrators checking multiple machines:

Get-ChildItem 'HKLM:SOFTWAREMicrosoftNET Framework SetupNDP' -Recurse | Get-ItemProperty -Name Version, Release -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -Match '^(?!S)p{L}' } | Select-Object PSChildName, Version, Release 

This queries the registry recursively and returns a clean table of all .NET Framework versions with their release numbers.

Quick Reference: Which Method to Use

What You're Looking ForBest Method
.NET Framework (legacy apps)Registry Editor or reg query
.NET 5 / 6 / 7 / 8 runtimedotnet --list-runtimes
Installed SDKs (development)dotnet --list-sdks
Default active SDK versiondotnet --version
All versions at once (Windows)PowerShell registry query

What Affects Which Version Matters to You

The version you need to care about depends on several variables:

  • The application you're running — a legacy enterprise app may hard-require .NET Framework 4.6.2, while a modern tool might need .NET 8 Runtime
  • Developer vs. end user — developers typically need the full SDK; end users usually only need the Runtime
  • Windows version — older versions of Windows ship with specific .NET Framework versions baked in and can't always be upgraded to the latest
  • Architecture — x86 vs. x64 runtimes are separate installations and behave differently for 32-bit vs. 64-bit applications

Some applications check the installed version automatically and will tell you exactly what's missing. Others fail silently or with cryptic error messages, which is what usually sends people looking for this information in the first place.

Whether one specific installed version is sufficient — or whether you need to install an additional runtime, update an existing one, or stick with an older version for compatibility — depends entirely on what your software requires and what your system currently has.