簡體   English   中英

在運行時如何確定使用哪個單聲道版本?

[英]At runtime how does one determine which mono version is being used?

在系統上,可能存在多個Mono運行時版本。 例如

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

從C#應用程序創建新的托管流程時,明確說明要與之一起運行的單聲道版本可能很有用。 (路徑中的單聲道可能不是用於運行當前進程的單聲道)

使用Process類獲取當前進程名稱將返回Mono正在運行的程序集,而不是Mono本身。

確定當前正在使用哪個Mono運行時的最佳方法是什么?

在Linux上,可以使用進程ID和/proc查找單可執行文件。

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

monopath將是當前正在執行的Mono運行時的符號鏈接,可用於啟動新進程:

Process.Start(monopath);

您可以使用

    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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM