Sorry! I shouldn't have assumed that it was a retort. Mono's latest supported .NET framework (v4.8) is four years old, or even older if you include the general movement to .NET Core, and it only supports C# versions <= 9.0 (via Roslyn), also 2-3 years old.
msbuild, the toolchain still used by Mono, has also been widely replaced by dotnet (CLI).
It's still (decreasingly) common to use Mono for cross-platform development, especially for Unity, which hasn't yet transitioned to .NET >= 7.0.
That makes it sound like Mono has fallen behind. I would say it like this:
The original .NET platform is now called .NET Framework.
.NET Framework was ( and is ) only available for Windows. Mono is an Open Souce project to implement a cross-platform implementation of .NET Framework. In addition to MacOS, Windows, and Linux, Mono targets iOS, Android, and WASM.
Microsoft released a second .NET platform alongside Framework and called it .NET Core. Unlike Framework, Core is cross-platform, and targets Windows, Linux and MacOS.
After .NET Core 3.1, the “Core” was dropped from the name. There has been .NET 5, .NET 6, and now .NET 7 but these are all just newer versions of .NET Core.
.NET Framework is still supported but there has not been a real release in several years. Framework is stuck at version 4.x and, since .NET 5, there is really one version of .NET again ( the descendent of Core ).
As Mono implements, .NET Framework ( not core ), it still implements .NET 4.x, like the “real” .NET Framework does. Mono “only supports C# versions <= 9.0 (via Roslyn), also 2-3 years old” because those are true of the “real” .NET Framework as well.
.NET Core ( dotnet at the CLI ) has replaced .NET Framework and ( by implication ) has replaced Mono as well. That is what I think the post above is trying to say.
Except, while it is true that the “real” .NET Framework has been replaced by .NET 5+ ( by .NET Core ), Mono has not been fully replaced.
Above, I said that .NET Core targeted Windows, MacOS, and Linux. It did not target iOS, Android, or WASM ( Blazor ). Well, .NET 7 targets all those platforms. How? Well, for Windows, MacOS and Linux it uses the original .NET Core runtime. For iOS, Android, and WASM it uses the runtime for Mono!
So, Mono is alive and well inside every version of .NET since 5. It will still be there in .NET 8 as well.
That said, when people say Mono, they mean the implementation of Framework released by the Mono Project. That version, as the post above implies, is pretty dated at this point.
> .NET Core ( dotnet at the CLI ) has replaced .NET Framework and ( by implication ) has replaced Mono as well. That is what I think the post above is trying to say.
dotnet build (from the modern .NET CLI) can compile .NET SDK projects that target legacy Framework versions. A csproj with a .NET.Sdk reference can use a TargetFramework of net48 or lower.
dotnet build times are an order of magnitude faster than Mono’s msbuild command, and migrated projects also receive the recent dotnet toolchain improvements (like automatic nuget restore, among many others).
Unity projects sometimes use dotnet's csc, even when the compiled libraries are executed with the Mono .NET (Framework!) 4.x runtime.
> So, Mono is alive and well inside every version of .NET since 5.
The official mono project is no longer under active development since the acquisition of Xamarin and the reassignment of core Mono team members to .NET Core.
Microsoft’s zombification of Mono by lifting code into .NET doesn’t suddenly make it alive. We’re not going to someday get a .NET 8 reimplementation inside Mono.
msbuild, the toolchain still used by Mono, has also been widely replaced by dotnet (CLI).
It's still (decreasingly) common to use Mono for cross-platform development, especially for Unity, which hasn't yet transitioned to .NET >= 7.0.