The Road to Microsoft's .Net

I was thinking of what I should write as my first post and struggled to narrow down on a subject that will be interesting to me and, hopefully, others too. This blog will cover a range of technologies from open source to proprietary. However, I felt that since I will be covering a lot of subjects on Microsoft's .Net, it will be prudent to provide a historical whirlwind of how the platform has developed over the years to where we are (.Net 7 release candidate).

With no further ado, I will highlight the key features released under each major version of .Net Framework and .Net.

What is .Net and .Net Framework

Microsoft defines .Net and .Net Framework as follows:

  • .NET Framework is the original implementation of .NET. It supports running websites, services, desktop apps, and more on Windows.

  • .NET is a cross-platform implementation for running websites, services, and console apps on Windows, Linux, and macOS. .NET is open source on GitHub. .NET was previously called .NET Core.

Microsoft .Net Framework 1.0
  • The original version of .Net Framework was released in 2002.
Microsoft .Net Framework 2.0
  • This was a major upgrade to the previous version and brought the following features:

  • Generics - the need to write once and use everywhere as well as improving performance by avoiding boxing and unboxing

  • Debugger edit and continue feature that every developer has come to love

  • 64-bit support, improvements to ASP.NET and ClickOnce deployment

Microsoft .Net Framework 3.0
  • Windows CardSpace - Microsoft's attempt to address issues with password security and user identity

  • Windows Communication Foundation - aimed client-server communication models

  • Windows Workflow Foundation - ability to implement business processes using a visual workflow.

  • Windows Presentation Foundation - for developing desktop applications using declarative language syntax called XAML

Microsoft .Net Framework 3.5
  • The main features included expressions trees, HashSet collection, and LINQ
Microsoft .Net Framework 4.0
  • Garbage Collection - improved performance by introducing background garbage collection replacing concurrent garbage collection

  • Dynamic Language Runtime - enabled runtime type binding.

Other features included

Microsoft .Net Framework 4.5
  • Support for arrays larger than 2 gigabytes (GB) on 64-bit platforms

  • Background just-in-time (JIT) compilation

  • Improvements to:

  • Windows Presentation Foundation (WPF)

  • Windows Communication Foundation (WCF)

  • Windows Workflow Foundation (WF)

Microsoft .Net Framework 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, and 4.8
  • These are in-place updates to .Net Framework 4.5. Version 4.5 is in itself an in-place upgrade for .Net Framework 4.0. What this means is that all these versions use the same runtime despite new versions of assemblies with new features. Application targeting a lower runtime version than what is installed on the target machine will run without needing recompilation. However, if an application targets a higher version of the framework than what is on the machine, it may run just fine if it does not reference any APIs that are not present in the old version of the Framework
Microsoft .Net Core 1.0
  • Released in 2016 as an open-source project and the start of a new journey to bring Microsoft .Net to other platforms such as Linux and Mac. Support for this version ended in 2019
Microsoft .Net Core 2.0
  • This version brought improvements around tooling e.g. implicit running of restore during project build, support for C# 7.1 and Visual Basic and support for .Net Standard 2.0
Microsoft .Net Core 3.0
  • Added support for .Net Standard 2.1, C# 8.0, and introduced new types such System.Index.
Microsoft .Net 5.0
  • Improvement to System.Text.Json and Relational pattern matching

  • Introduced Records, top-level statements

Microsoft .Net 6.0
  • Support for C# 10

  • Minimal APIs

  • Single page applications

  • Unified platform across browser, cloud, desktop, IoT, and mobile apps

  • Performance improvements

  • Improvements to Blazor and Blazor WebAssembly (Wasm)