在系统上可能存在多个单声道运行时版本。 例如
/usr/bin/mono
/usr/local/bin/mono
从C#应用程序创建新的托管进程时,明确说明要运行它的单声道版本会很有用。 (路径中的单声道可能不是用于运行当前进程的单声道)
使用Process类获取当前进程名称将返回mono运行的程序集,而不是mono本身。
确定当前使用哪个单声道运行时的最佳方法是什么?
答案 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));