我需要从相对路径获取绝对路径,但使用除执行程序集之外的文件夹来解析"."和"..".Path.GetFullPath没有提供这样的过载.
例如,假设我有以下路径:
..\MyOtherFolder\foo.bar
程序集正在执行的文件夹是:
c:\users\me\desktop\source\myproj\bin\debug\
但实际上,它可以位于任何地方.
我想指定"当前"文件夹,c:\test因此".."解析为"c:\".
有谁知道这是否内置于.NET框架中?如果没有,我打算制作一个实用工具方法,但我想我先检查一下(特别是因为没有静态扩展方法......).
编辑:
Path.Combine不管用.所有这些方法基本上都是连接两个字符串.
你有没有尝试过
Path.GetFullPath(Path.Combine(@"C:\test", @"..\MyOtherFolder\foo.bar"))
Run Code Online (Sandbox Code Playgroud)
这应该够了吧.
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)