Introduction to .NET: Install on Windows, macOS, and Linux
Table of Contents
- What is the .NET Framework?
- .NET version history
- List of .NET versions as of 2025
- Breakdown of .NET
- The Common Language Infrastructure (CLI)
- The Intermediate Language (IL) of .NET
- Common Language Runtime of .NET
- System libraries of .NET
- .NET Framework vs .NET Core vs .NET: Differences Explained
- .NET development all changed with .NET Core
- .NET replaced both .NET Framework and .NET Core
- Installing .NET
- Verifying your .NET installation
- Summary
In this article, we will introduce you to the .NET Framework, outline the different versions of the framework, and give instructions for how to install it on Windows, macOS, and Linux.
This article is not meant to be a huge deep dive into the framework. It is meant to give new learners enough to understand the broad outline of what .NET is, what it can help you accomplish, and how to install it on your machine.
What is the .NET Framework?
Before we start, who thought to put the first character of a framework's name as a period? 🥴
Although the .NET Framework has an unusual name, it remains the dominant platform for C#, F#, and VB.NET. It was originally released by Microsoft Corporation (MSFT) in 2002 along with the C# & VB.NET programming languages.
.NET is used to run services, desktop and mobile applications, mixed-reality experiences and more, on Windows, macOS & Linux operating systems. In other words, you write programs using the C#, F#, or VB.NET languages, and your code runs on the .NET Framework.
.NET version history
At the time of writing, .NET is at version 9. Since the release of .NET Core and onwards, new .NET versions are released in a yearly cadence.
List of .NET versions as of 2025
.NET Version | Release Date |
---|---|
.NET Framework 1.0 | February 13, 2002 |
.NET Framework 1.1 | April 24, 2003 |
.NET Framework 2.0 | November 7, 2005 |
.NET Framework 3.0 | November 6, 2006 |
.NET Framework 3.5 | November 19, 2007 |
.NET Framework 4.0 | April 12, 2010 |
.NET Framework 4.5 | August 15, 2012 |
.NET Framework 4.6 | July 20, 2015 |
.NET Core 1.0 | June 27, 2016 |
.NET Core 1.1 | November 16, 2016 |
.NET Framework 4.7 | April 5, 2017 |
.NET Core 2.0 | August 14, 2017 |
.NET Core 2.1 | May 30, 2018 |
.NET Core 2.2 | December 4, 2018 |
.NET Framework 4.8 | April 18, 2019 |
.NET Core 3.0 | September 23, 2019 |
.NET Core 3.1 | December 3, 2019 |
.NET 5 | November 10, 2020 |
.NET 6 | November 8, 2021 |
.NET 7 | November 8, 2022 |
.NET 8 | November 14, 2023 |
.NET 9 | November 12, 2024 |
Breakdown of .NET
The .NET Framework is an implementation of a Common Language Infrastructure (CLI). We briefly described the CLI in our Introduction to C#: A Beginner's Guide article:
The Common Language Infrastructure (CLI)
The CLI is an ECMA-335 standard which outlines the architecture for the runtime environment that allows multiple high-level languages to be executed on computer architectures and platforms without being rewritten.
Code written in C#, F# or VB.NET is compiled into an intermediate language and executed on the Common Language Runtime (CLR). You may hear the term IL or Intermediate Language being thrown around. Microsoft Intermediate Language (MSIL) IL is .NET's implementation of the Common Intermediate Language (CIL).
The Intermediate Language (IL) of .NET
Compiling to a Common intermediate language (CIL) provides seamless interoperability between multiple programming languages such as C#, F#, and VB.NET, ensures platform independence by enabling code execution across various hardware architectures without recompilation, and allows centralized optimization and security enhancements at a single intermediate stage.
Common Language Runtime of .NET
Another part of the Common Language Infrastructure (CLI) is the Common Language Runtime (CLR), the Common Language Runtime (CLR) oversees the execution of .NET applications. It provides memory management through garbage collection, security checks, exception handling, and ensures type safety. When applications compile to Common Intermediate Language (CIL), the CLR translates this intermediate code into native machine instructions optimized for the specific platform the code is to be run on.
System libraries of .NET
.NET out of the box provides a large collection of system libraries to assist developers with a wide array of tasks. Providing these libraries prevents the need to reinvent the wheel for tasks which Microsoft believe are common.
Here is a list of .NET Framework system libraries, along with descriptions of their uses:
- System.Collections.Immutable – Provides immutable data structures, improving thread safety and performance in concurrent scenarios.
- System.Data – Database interactions, accessing and managing data using ADO.NET, connection pooling, and data adapters.
- System.Diagnostics – Debugging and logging, performance measurement, tracing application events, and monitoring resource usage.
- System.Drawing – Working with graphics, images, fonts, colors, printing, and graphical interfaces.
- System.IO – File and directory handling, reading and writing streams, file system operations.
- System.Linq – Enables querying collections, databases, and XML through Language Integrated Query (LINQ).
- System.Net.Http – Provides modern HTTP client functionality, enabling asynchronous REST API calls and web interactions.
- System.Numerics – Offers advanced numeric types, vectors, matrices, and complex number operations optimized for performance.
- System.Reflection – Allows dynamic type inspection, metadata access, and runtime invocation of methods.
- System.Runtime.CompilerServices – Supports advanced language features, asynchronous programming constructs, and code optimizations.
- System.Security.Cryptography – Advanced cryptographic operations, hashing, encryption algorithms, and secure random number generation.
- System.Text.Json – High-performance JSON serialization and deserialization built into modern .NET frameworks.
- System.Threading.Tasks – Provides asynchronous programming constructs, task-based parallelism, and enhanced concurrency management.
- System.Web – Building web applications, handling HTTP requests and responses, session management, and ASP.NET features.
- System.Xml – Parsing, generating, validating, and managing XML documents and streams.
As you can see, Microsoft provide a great springboard for developers to jump right in to solving any programming problem they have.
.NET Framework vs .NET Core vs .NET: Differences Explained
Now that you have a basic understanding of what .NET is and what it does, it is now time to confuse you with some more names for the framework. Just kidding, although you should understand that the .NET Framework is no longer just the only framework to run .NET applications.
.NET development all changed with .NET Core
As stated earlier, the .NET Framework appeared approximately 2002 and was primarily a closed-source, Windows-only framework. This meant that to run in Linux or macOS, you would be out of luck. Around the mid-2010s, Microsoft embraced open-source and cross-platform development, resulting in the creation of .NET Core. .NET Core was a cross platform rewrite of the .NET Framework, which allowed it to run in Linux, macOS, Windows, along with Android and iOS on the mobile side.
.NET Developers finally had a single framework they could use on the devices and operating systems they wanted. Many developers find it frustrating to switch languages or frameworks simply due to platform limitations. With .NET Core, that was no longer the case.
.NET replaced both .NET Framework and .NET Core
On November 10, 2020, Microsoft transitioned to just .NET. No more .NET Framework or .NET Core. Future releases would be only .NET. The reason for this was that the original .NET Framework possessed several notable strengths that were initially not available in early versions of .NET Core.
One advantage was its support for Windows-specific desktop applications through technologies such as Windows Forms (WinForms) and Windows Presentation Foundation (WPF). These frameworks were deeply integrated with Windows, making them powerful tools for building rich desktop user interfaces, something that early .NET Core versions did not support.
Additionally, the .NET Framework enjoyed a vast ecosystem of third-party libraries, components, and tools due to its long history and widespread adoption in the industry. In contrast, early versions of .NET Core initially had fewer compatible third-party components, requiring developers to wait or build their own.
Furthermore, the .NET Framework included built-in support for certain enterprise-focused technologies, such as ASP.NET WebForms and Windows Communication Foundation (WCF), while older technologies, were widely used and supported in the industry. Early .NET Core releases did not offer equivalent support, creating barriers for developers maintaining existing legacy applications.
Finally, the maturity and stability of the .NET Framework made it particularly well-suited to enterprise environments and legacy system integrations. Its compatibility with legacy technologies like COM and older Windows APIs simplified maintaining and extending existing Windows-based software. .NET Core just did not support these technologies.
With each .NET Core release, and by the .NET 5 release and later, Microsoft narrowed these feature and capability gaps by incorporating additional desktop support, expanding the compatible third-party ecosystem, and enhancing stability and performance, resulting in a modern, unified .NET platform.
Installing .NET
Now that we understand what .NET is and what it is for, let us guide you in getting it installed on your machine, so that we can truly begin your journey into learning C#.
We have broken the installation instructions down into tabs. Choose the tab that matches your operating system. Follow the guide, then join us in our next article for your first introduction to programming with C# in .NET.
Installing .NET SDK in Windows
Let us guide you through installing .NET on Microsoft Windows. These instructions relate to .NET 9.0, and will be updated each year as new .NET versions are released each November.
This guide will show you multiple methods of installing the .NET 9 SDK. We recommend you use the winget method, because as a developer, you should familiarize yourself with command line tools, as they play a big part in developing for .NET with C#, and all programming languages for that matter.
Install .NET 9 SDK using winget on Windows
- Open a terminal from the Start Menu by right clicking on the Start button and choosing Terminal from the menu.
- Input the following command to install the .NET 9.0 SDK.
winget install Microsoft.DotNet.SDK.9
Install .NET 9 SDK via installer on Windows
- Navigate in a browser to the Download .NET 9.0 website.
- Under the SDK column on the left, find the row for Windows and tap on the download link that is for your platform. If you have an Intel or AMD CPU in your device, choose x64, and if you have a ARM chip, choose Arm64.
- Once the installer has downloaded, open the file and follow the installation wizard to install the .NET SDK.
Install .NET 9 SDK in macOS
Let us guide you through installing .NET on Apple macOS. These instructions relate to .NET 9.0, and will be updated each year as new .NET versions are released each November.
Install .NET 9 SDK using Homebrew in macOS
If you do not have Homebrew installed, open your terminal and use the following command to install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Use the following command to install the .NET 9 SDK using Homebrew
brew install dotnet
Install .NET 9 SDK via installer in macOS
- Navigate in a browser to the Download .NET 9.0 website.
- Under the SDK column on the left, find the row for macOS and tap on the download link that is for your platform. If you have an Intel CPU in your Mac, choose x64, and if you have a M1-M4 chip, choose Arm64.
- Once the installer has downloaded, open the file and follow the installation wizard to install the .NET SDK.
Install .NET 9 SDK in Ubuntu Linux
Let us guide you through installing .NET in Linux, with the Ubuntu distribution. These instructions relate to .NET 9.0, and will be updated each year as new .NET versions are released each November.
Be aware that .NET 9 is unsupported on Ubuntu 20.04 or lower, therefore this guide will not cover installing on versions lower than 22.04.
Install .NET 9 SDK on Ubuntu version 24.10 or higher
- Open a terminal and input the following two commands. Input your password for sudo if you are prompted
sudo apt-get update -y
sudo apt-get install -y dotnet-sdk-9.0
Install .NET 9 SDK on Ubuntu version 24.04 or 22.04
- Open a terminal and input the following commands. Input your password for sudo if you are prompted
sudo add-apt-repository ppa:dotnet/backports
sudo apt-get update -y
sudo apt-get install -y dotnet-sdk-9.0
Verifying your .NET installation
In the final part of this article, let us guide you in verifying your .NET installation.
Open your terminal of choice and input the following command:
dotnet --version
You should receive a version number as the response, such as:
9.0.201
What this command is doing is running the dotnet binary, which is installed along with the .NET Framework. Along with running the binary, the command is passing along the --version
parameter, which requests the currently active .NET version number. We will outline and guide you on the dotnet binary in a later article. Stay tuned!
If you receive an error message instead of a version number, please verify that you followed the installation instructions.
Summary
In this article, you should now understand what .NET is, where it came from, and how to get .NET installed and up and running on your machine.
Thank you for taking the time to read this guide, and please check back often for more C# and .NET articles.