在运行时如何确定使用哪个单声道版本?

时间:2013-12-19 20:31:25

标签: c# mono

在系统上可能存在多个单声道运行时版本。 例如

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

从C#应用程序创建新的托管进程时,明确说明要运行它的单声道版本会很有用。 (路径中的单声道可能不是用于运行当前进程的单声道)

使用Process类获取当前进程名称将返回mono运行的程序集,而不是mono本身。

确定当前使用哪个单声道运行时的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

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

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

monopath将是当前正在执行的单声道运行时的符号链接,可用于启动新进程:

Process.Start(monopath);

答案 1 :(得分: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));