Iron Academy Logo
C# Framework

Understanding .NET Versions: .NET Core, .NET Standard, .NET Framework, and More

Tim Corey
1h 25s

Navigating the .NET ecosystem can be confusing with terms like .NET, .NET SDK, .NET Core, .NET Standard, and .NET Framework. Each of these plays a unique role in the C# development environment using Visual Studio 2022, and understanding their differences is crucial for choosing the right target framework for your project.

This article, based on Tim Corey's video on ".NET Versions Explained - .NET, .NET Core, .NET Standard, .NET Framework and more", aims to simplify these terms and provide clear guidance on which to use and when.

Why .NET Core Needed to Exist

The .NET Framework, often referred to simply as .NET, has been a staple in software development and desktop runtime for over two decades. However, its limitations necessitated the creation of .NET Core. Tim Corey highlights several key reasons:

  1. Patches and Workarounds: Over time, the .NET Framework accumulated numerous patches and workarounds, which slowed it down significantly (1:35).

  2. Windows Dependency: The .NET Framework is deeply integrated with Windows, making it difficult to use on other platforms. This dependency hindered cross-platform development (2:03).

  3. Monolithic Design: The .NET Framework was designed to include everything in one package, which, while convenient, resulted in a bloated and less efficient system (2:25).

  4. Outdated Conception: Developed over 20 years ago, the .NET Framework was not designed with modern internet and mobile usage in mind (3:20).

The Structure of .NET Applications

To understand .NET Core's benefits, it’s important to grasp how a .NET application is structured.

As Tim Corey explains:

  1. C# Source Code: Your C# code is first compiled into Intermediate Language (IL) code (5:49).

  2. Common Language Runtime (CLR): The IL code is then executed by the CLR. The .NET Framework and .NET Core have different CLRs, but they process IL code similarly, allowing much of your source code to remain the same across both platforms (6:42).

Benefits of .NET Core over .NET Framework

.NET Core runtime is a development framework that was developed to address the shortcomings of the .NET Framework. Tim Corey highlights its primary benefits:

  1. Cross-Platform Compatibility: Unlike the .NET Framework, .NET Core is designed to run on multiple platforms, including Windows, Mac, Linux, Android, iOS, Xbox, IoT, and more.

  2. Performance : .NET Core offers significant performance improvements. It eliminates the legacy patches and supports modern hardware and software practices, making it faster than the .NET Framework.

  3. Modularity: .NET Core is modular, allowing developers to include only the necessary components, reducing overhead and improving efficiency.

  4. Modern Features: .NET Core comes with more modern out of the box features, such as built-in dependency injection and logging, which promote best practices in development.

  5. Open Source: .NET Core is open source, encouraging community contributions and transparency in development.

  6. Compliant with Industry Standards: .NET Core adheres to industry standards, ensuring compatibility and integration with modern technologies, unlike .NET Framework, which is limited to Windows environments.

  7. Easy to Upgrade: Upgrading .NET Core is generally straightforward, often requiring only changes to version numbers and updating NuGet packages. Microsoft's portion of the upgrade process is simplified, with fewer breaking changes compared to .NET Framework, which historically involved more complex and problematic upgrades.

.NET Standard

Tim explains that .NET Standard is a specification that defines a set of APIs that all .NET platforms must implement and it is not just a runtime. It provides a uniform API that ensures code compatibility across different .NET implementations. This means you can write libraries that work on both .NET Core and the .NET Framework. At 33:35, Tim discusses about the all versions of .NET Standard up to the latest version. The summary is given below in the screenshot:

Detailed Breakdown of .NET Versions

.NET Framework Timeline

The .NET Framework has been around since the early 2000s and is tightly integrated with Windows. It's suitable for building Windows desktop and web applications but is limited in terms of cross-platform capabilities.

.NET Framework 1.0 (January 2002)

Tim Corey describes the initial release of .NET Framework 1.0 as revolutionary, introducing the concept of a common intermediate language that allowed multiple programming languages to work together (40:07). This foundational version set the stage for future development by offering a unified platform for various languages.

.NET Framework 2.0 (October 2005)

Released three years later, .NET Framework 2.0 brought significant improvements and new features, continuing the growth of the platform (41:40). This version was notable for its enhanced language features and support for a broader range of applications.

Major Updates:

  • November 2006: .NET Framework 3.0 was introduced (41:43).

  • November 2007: .NET Framework 3.5, a significant milestone, was released (41:49).

  • April 2010: .NET Framework 4.0, the last major version, came out (42:13).

  • August 2012: .NET Framework 4.5 was released (42:50).

  • April 2019: .NET Framework 4.8, the final minor version, was launched (47:17).

.NET Core Versions

.NET Core 1.0 (June 2016)

Tim Corey refers to .NET Core 1.0 as a proof of concept with limited functionality, aimed at demonstrating the potential of .NET Core (43:32). This initial version laid the groundwork but was not widely adopted due to its limited features.

.NET Core 2.0 (August 2017)

Released as a more feature-rich update, .NET Core 2.0 included important advancements, particularly in web application development (45:23). However, it was not an LTS version, and Tim highlights that it contained breaking changes that led to the release of a more stable version later.

.NET Core 2.1 (May 2018)

.NET Core 2.1 was an LTS (Long-Term Support) version, which Tim points out as crucial for businesses needing stability and extended support (45:42). It was a significant update that made .NET Core more suitable for production use.

.NET Core 3.0 (September 2019)

.NET Core 3.0 introduced support for desktop applications, including WinForms and WPF, expanding its use beyond web applications (53:04). This release made .NET Core a more comprehensive platform, attracting businesses to migrate from .NET Framework.

.NET Core 3.1 (December 2019)

Building on 3.0, .NET Core 3.1 was another LTS version, providing continued support and stability for desktop and web applications (53:16). Tim explains that this version marked a point where .NET Core was considered feature-complete and reliable for enterprise use.

.NET 5 and Beyond

.NET 5.0 (November 2020)

With the release of .NET 5, Microsoft dropped the "Core" from the name to simplify the branding (58:03). Tim explains that this change aimed to reduce confusion between .NET Framework and .NET Core. .NET 5 represented a major step in unifying the .NET ecosystem under a single name.

.NET 6.0 (November 2021)

.NET 6 continued the annual release cycle introduced with .NET 5 (59:56). Tim notes that each new version, including .NET 6, is part of a yearly update rhythm, allowing for regular improvements and feature additions.

.NET 7.0 (November 2022)

.NET 7 followed the annual release pattern, further advancing the platform with minor updates and improvements (59:56). Tim discusses the details of how this version, along with its predecessors, reflects Microsoft’s commitment to ongoing development and innovation in the .NET ecosystem.

Understanding .NET Versions and Support Lifecycle

Tim Corey provides a detailed explanation of the .NET versions and their support lifecycle at (1:01:27). Here’s a summary of the key points discussed:

Support Lifecycle: STS vs. LTS

Tim Corey explains the difference between two types of support windows: Standard Term Support (STS) and Long-Term Support (LTS).

  • STS (Standard Term Support): Provides an 18-month support window. For example, .NET 5, released in November 2020, was supported until May 2022. .NET 7, released in November 2022, has a similar 18-month support window, ending in May 2024.

  • LTS (Long-Term Support): Offers a longer support window of 3 years. .NET 6, which came out in November 2021, is supported until November 2024. .NET 8, set for release in November 2023, will be the next LTS version, providing support until November 2026.

Tim points out that while fast-moving app developers may prefer STS versions to access the latest features, companies often favor LTS versions for stability and longer support.

Upgrade Path and Version Releases

Tim Corey outlines the upgrade path for .NET versions:

  • From .NET 5 to .NET 6: You have a year of overlap where both versions are supported.

  • From .NET 6 to .NET 8: You will have a full year to upgrade from .NET 6 to .NET 8 before .NET 6 support ends.

  • Future Upgrades: Following this pattern, .NET 8 (as of now it is the latest release) will be supported until .NET 10 arrives, giving you ample time to upgrade.

Tim emphasizes that this predictable release cycle allows companies to plan their upgrades with confidence.

Microsoft’s Support Strategy

Tim discusses Microsoft's approach to support and development:

  • Cost and Complexity: Extending support for older versions can be expensive and complex due to the need to maintain security updates across multiple versions. This is why Microsoft has adopted a more predictable and manageable support strategy.

  • Modular Framework: .NET Core and .NET's modular approach allows for rapid feature updates and a more manageable support lifecycle.

Choosing Between .NET Framework and .NET Core

Tim Corey advises on when to use different .NET versions:

  • .NET Framework: Use it for existing projects or when supporting older operating systems like Windows XP.

  • .NET Core (now .NET): For new projects, start with the latest version of .NET. Upgrading from older versions of .NET Framework to .NET can offer significant performance improvements.

ASP.NET vs. ASP.NET Core

Tim explains the differences between ASP.NET and ASP.NET Core:

  • ASP.NET: Built on the .NET Framework and supports Web Forms, MVC, and Web API. Web Forms, in particular, is not included in ASP.NET Core.

  • ASP.NET Core: A modular framework for building web applications on .NET Core. It includes Razor Pages, MVC, API, Blazor Server, and Blazor WebAssembly. ASP.NET Core is designed to be more flexible and modern compared to its predecessor.

Tim at 1:21:00 clarifies that ASP.NET Core continues to support web development with new features and greater modularity, while ASP.NET (Framework) is more traditional and limited to older .NET versions.

Conclusion

Tim Corey offers a clear and insightful guide to navigating the .NET ecosystem, from the historical context of .NET Framework to the modern capabilities of .NET Core and beyond. His video explains the evolution of .NET versions, the necessity of .NET Core, and the benefits of modularity and cross-platform compatibility. Whether you're choosing between .NET Framework and .NET Core or understanding the support lifecycle of various .NET versions, Tim's explanations provide a valuable roadmap for making informed development decisions.

For more in-depth discussions and practical coding examples, be sure to visit Tim Corey’s YouTube channel, IAmTimCorey.