Поскольку Path.Combine
работает не во всех случаях, здесь есть более сложная функция: -)
static string GetFullPath(string maybeRelativePath, string baseDirectory) {
if (baseDirectory == null) baseDirectory = Environment.CurrentDirectory;
var root = Path.GetPathRoot(maybeRelativePath);
if (string.IsNullOrEmpty(root))
return Path.GetFullPath(Path.Combine(baseDirectory, maybeRelativePath));
if (root == "\\")
return Path.GetFullPath(Path.Combine(Path.GetPathRoot(baseDirectory), maybeRelativePath.Remove(0, 1)));
return maybeRelativePath;
}
Path.Combine(@"C:\foo\",@"\foo\bar")
возвращает @"\foo\bar"
и не так, как ожидалось @"C:\foo\bar"