具有不同当前文件夹的相对路径的绝对路径

MgS*_*Sam 2 .net c# path

我需要从相对路径获取绝对路径,但使用除执行程序集之外的文件夹来解析".""..".Path.GetFullPath没有提供这样的过载.

例如,假设我有以下路径:

..\MyOtherFolder\foo.bar

程序集正在执行的文件夹是:

c:\users\me\desktop\source\myproj\bin\debug\

但实际上,它可以位于任何地方.

我想指定"当前"文件夹,c:\test因此".."解析为"c:\".

有谁知道这是否内置于.NET框架中?如果没有,我打算制作一个实用工具方法,但我想我先检查一下(特别是因为没有静态扩展方法......).

编辑:

Path.Combine不管用.所有这些方法基本上都是连接两个字符串.

Mar*_*cus 7

你有没有尝试过

Path.GetFullPath(Path.Combine(@"C:\test", @"..\MyOtherFolder\foo.bar"))
Run Code Online (Sandbox Code Playgroud)

这应该够了吧.


pli*_*nth 5

public string FullPathRelativeTo(string root, string partialPath)
{
    string oldRoot = Directory.GetCurrentDirectory();
    try {
        Directory.SetCurrentDirectory(root);
        return Path.GetFullPath(partialPath);
    }
    finally {
        Directory.SetCurrentDirectory(oldRoot);
    }
}
Run Code Online (Sandbox Code Playgroud)