单声道 - 从Path.GetDirectoryName返回的无效路径

时间:2015-12-10 18:13:55

标签: path mono

var codebase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
var path = Path.GetDirectoryName(codebase);

它适用于Windows。 在单声道版本4.2.1上,结果是:

codebase: file:///home/...
path: file:/home/...

这是一个错误,还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。

Uri应该直接从CodeBase构造,因为它以Uri格式返回路径。然后Uri.LocalPath返回汇编的本地路径(路径格式),这里是可以使用GetDirectoryName的地方。

我做了一个扩展:

using System;
using System.IO;
using System.Reflection;
public static class AssemblyExtensions
{
    public static string GetCodeBaseLocation(this Assembly assembly)
    {
        var uri = new Uri(assembly.CodeBase);
        return Path.GetDirectoryName(uri.LocalPath);
    }
}