Version Compatibility
.NET, ASP.NET Core, and C# version matrix
C# Versions — hover to highlight rows
| .NET | ASP.NET Core / MVC | C# | Year | Status | C# Range | Compatibility |
|---|---|---|---|---|---|---|
| .NET 10 | ASP.NET Core 10 | C# 14 | 2025 | Preview | 1.0 → 14 | ✓ Fully compatible |
| .NET 9 | ASP.NET Core 9 | C# 13 | Nov 2024 | STS | 1.0 → 13 | ✓ Fully compatible |
| .NET 8 ★ | ASP.NET Core 8 | C# 12 | Nov 2023 | LTS | 1.0 → 12 | ✓ Fully compatible |
| .NET 7 | ASP.NET Core 7 | C# 11 | Nov 2022 | EOL | 1.0 → 11 | ✓ Fully compatible |
| .NET 6 ★ | ASP.NET Core 6 | C# 10 | Nov 2021 | EOL | 1.0 → 10 | ✓ Fully compatible |
| .NET 5 | ASP.NET Core 5 | C# 9 | Nov 2020 | EOL | 1.0 → 9 | ✓ Fully compatible |
| .NET Core 3.1 ★ | ASP.NET Core 3.1 | C# 8 | Dec 2019 | EOL | 1.0 → 8 | ✓ Fully compatible |
| .NET Core 3.0 | ASP.NET Core 3.0 | C# 8 | Sep 2019 | EOL | 1.0 → 8 | ✓ Fully compatible |
| .NET Core 2.2 | ASP.NET Core 2.2 | C# 7.3 | Dec 2018 | EOL | 1.0 → 7.3 | IAsyncEnumerable<T> — needs .NET Core 3.0+Default interface members — needs .NET Core 3.0+ |
| .NET Core 2.1 ★ | ASP.NET Core 2.1 | C# 7.3 | May 2018 | EOL | 1.0 → 7.3 | IAsyncEnumerable<T> — needs .NET Core 3.0+Default interface members — needs .NET Core 3.0+ |
| .NET Core 2.0 | ASP.NET Core 2.0 | C# 7.1 | Aug 2017 | EOL | 1.0 → 7.1 | IAsyncEnumerable<T> — needs .NET Core 3.0+Default interface members — needs .NET Core 3.0+ |
| .NET Core 1.1 | ASP.NET Core 1.1 | C# 6 | Nov 2016 | EOL | 1.0 → 6 | IAsyncEnumerable<T> not availableDefault interface members not availableSpan<T> has limited support |
| .NET Core 1.0 | ASP.NET Core 1.0 | C# 6 | Jun 2016 | EOL | 1.0 → 6 | IAsyncEnumerable<T> not availableDefault interface members not availableSpan<T> has limited support |
| .NET 4.8.1 | ASP.NET 4.8.1 | C# 7.3 | 2022 | LTS | 1.0 → 7.3 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.8 | ASP.NET 4.8 | C# 7.3 | 2019 | LTS | 1.0 → 7.3 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.7.2 | ASP.NET 4.7.2 | C# 7.2 | 2018 | EOL | 1.0 → 7.2 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.7.1 | ASP.NET 4.7.1 | C# 7.1 | 2017 | EOL | 1.0 → 7.1 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.7 | ASP.NET 4.7 | C# 7.0 | 2017 | EOL | 1.0 → 7.0 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.6.2 | ASP.NET 4.6.2 | C# 6 | 2016 | EOL | 1.0 → 6 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.6.1 | ASP.NET 4.6.1 | C# 6 | 2015 | EOL | 1.0 → 6 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.6 | ASP.NET 4.6 | C# 6 | 2015 | EOL | 1.0 → 6 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.5.2 | ASP.NET 4.5.2 | C# 5 | 2014 | EOL | 1.0 → 5 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.5.1 | ASP.NET 4.5.1 | C# 5 | 2013 | EOL | 1.0 → 5 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.5 | ASP.NET 4.5 | C# 5 | 2012 | EOL | 1.0 → 5 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfill |
| .NET 4.0 | ASP.NET 4.0 | C# 4 | 2010 | EOL | 1.0 → 4 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfillNo async/await (C# 5 not available) |
| .NET 3.5 | ASP.NET 3.5 | C# 3 | 2007 | EOL | 1.0 → 3 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfillNo async/await (C# 5 not available) |
| .NET 3.0 | ASP.NET 3.0 | C# 2 | 2006 | EOL | 1.0 → 2 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfillNo async/await (C# 5 not available) |
| .NET 2.0 | ASP.NET 2.0 | C# 2 | 2005 | EOL | 1.0 → 2 | Default interface members (CLR not supported)IAsyncEnumerable<T> not in BCLRecords / init setters need polyfillNo async/await (C# 5 not available) |
| .NET 1.1 | ASP.NET 1.1 | C# 1.2 | 2003 | EOL | 1.0 → 1.2 | ✓ Fully compatible |
| .NET 1.0 | ASP.NET 1.0 | C# 1.0 | 2002 | EOL | 1.0 | ✓ Fully compatible |