Introduction to .NET: Install on Windows, macOS, and Linux

13 minutes

Table of Contents

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 VersionRelease Date
.NET Framework 1.0February 13, 2002
.NET Framework 1.1April 24, 2003
.NET Framework 2.0November 7, 2005
.NET Framework 3.0November 6, 2006
.NET Framework 3.5November 19, 2007
.NET Framework 4.0April 12, 2010
.NET Framework 4.5August 15, 2012
.NET Framework 4.6July 20, 2015
.NET Core 1.0June 27, 2016
.NET Core 1.1November 16, 2016
.NET Framework 4.7April 5, 2017
.NET Core 2.0August 14, 2017
.NET Core 2.1May 30, 2018
.NET Core 2.2December 4, 2018
.NET Framework 4.8April 18, 2019
.NET Core 3.0September 23, 2019
.NET Core 3.1December 3, 2019
.NET 5November 10, 2020
.NET 6November 8, 2021
.NET 7November 8, 2022
.NET 8November 14, 2023
.NET 9November 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
  1. Open a terminal from the Start Menu by right clicking on the Start button and choosing Terminal from the menu.
  2. 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
  1. Navigate in a browser to the Download .NET 9.0 website.
  2. 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.
  3. Once the installer has downloaded, open the file and follow the installation wizard to install the .NET SDK.

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.


Filed under Fundamentals, and tagged under .NET , Core Concepts