mono C#获取正在运行的mono vm的路径

本文关键字:mono vm 路径 运行 获取 | 更新日期: 2023-09-27 18:29:26

我有一个C#程序,它将由mono执行。从C#程序中,我想获得运行该程序的monovm二进制文件的路径。有API吗?

请注意,我不是要C#程序的路径,而是要mono-vm二进制文件(例如/usr/local/bin/mono)的路径。

mono C#获取正在运行的mono vm的路径

您可以像MonoDevelop那样查找Mono的位置。这是基于查找程序集的位置,然后返回四个目录以查找Mono当前使用的前缀。

首先找到包含int的程序集的位置。

string location = typeof (int).Assembly.Location;

然后,您可以在四个目录中查找前缀。MonoDevelop使用以下代码来实现这一点,其中up设置为4。

    static string PathUp (string path, int up)
    {
        if (up == 0)
            return path;
        for (int i = path.Length -1; i >= 0; i--) {
            if (path[i] == Path.DirectorySeparatorChar) {
                up--;
                if (up == 0)
                    return path.Substring (0, i);
            }
        }
        return null;
    }
string prefix = PathUp (typeof (int).Assembly.Location, 4);

这将为您提供前缀,通常是/usr/local或/usr/local,然后您可以附加bin来查找运行Mono的目录。