How to detect which .NET runtime is being used (MS vs. Mono)?

前端 未结 5 1260
你的背包
你的背包 2020-11-28 10:33

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

5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-28 11:04

    Here's a version with caching that I'm using in my project:

    public static class PlatformHelper
    {
        private static readonly Lazy IsRunningOnMonoValue = new Lazy(() =>
        {
            return Type.GetType("Mono.Runtime") != null;
        });
    
        public static bool IsRunningOnMono()
        {
            return IsRunningOnMonoValue.Value;
        }
    }
    

    As @ahmet alp balkan mentioned, caching is useful here if you're calling this frequently. By wrapping it in a Lazy, the reflection call only happens once.

提交回复
热议问题