2013-12-19 47 views
1

在系统上可能存在多个单声道运行时版本。 例如在运行时如何确定正在使用哪个单声道版本?

/usr/bin/mono 
/usr/local/bin/mono 

当创建从一个C#应用程序中的新的管理过程中它可能是有用的明确了解哪些单声道要与运行版本。 (路径中的单声道可能不是用于运行当前进程的单声道)

使用Process类获取当前进程名将返回单声道本身不运行mono的程序集。

什么是确定当前正在使用哪个mono运行时的最佳方法?

回答

0

在Linux上,进程Id和/proc可用于查找单声道可执行文件。

string monopath = String.Format("/proc/{0}/exe", Process.GetCurrentProcess().Id); 

monopath将是一个符号链接到当前执行的单声道运行,并且可以用来启动一个新的进程:

Process.Start(monopath); 
0

您可以使用

Type monoRuntimeType; 
    MethodInfo getDisplayNameMethod; 
    if ((monoRuntimeType = typeof(object).Assembly.GetType("Mono.Runtime")) != null && 
     (getDisplayNameMethod = monoRuntimeType.GetMethod("GetDisplayName", 
      BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.ExactBinding, null, 
        Type.EmptyTypes, null)) != null) 

    Console.WriteLine("Mono " + (string)getDisplayNameMethod.Invoke(null, null)); 
+0

我看单。运行。在我的情况下,它可能有多个版本的单声道安装都报告相同的运行时版本。此外,我认为从运行时版本中获取路径位置涉及的工作量仍然不少。 – Tom

相关问题