How to detect which .NET runtime is being used (MS vs. Mono)?
I would like to know during execution of a program whether it is being executed using the Mono runtime or the Microsoft runtime.
I'm currently using the following code to determine whether I'm on a MS CLR:
static bool IsMicrosoftCLR()
{
return RuntimeEnvironment.GetRuntimeDirectory().Contains("Microsoft");
}
However, this is somewhat dependent on the installation folder of the runtime and I'm not sure whether this will work on all installations.
Is there a better way to check for the current runtime?
Solution 1:
From the Mono Project's Guide to Porting Winforms Applications:
public static bool IsRunningOnMono ()
{
return Type.GetType ("Mono.Runtime") != null;
}
I'm sure you'll have a lot more questions, so worth checking this guide and the mono-forums
Solution 2:
You can check for the Mono Runtime Like this
bool IsRunningOnMono = (Type.GetType ("Mono.Runtime") != null);
Solution 3:
With the advent of C# 6, this can now be turned into a get-only property, so the actual check is only done once.
internal static bool HasMono { get; } = Type.GetType("Mono.Runtime") != null;