是否可以在目标为4.7.1的WinForms项目中使用Path.GetRelativePath(.NET Core2)?

时间:2018-07-04 18:32:40

标签: c# .net .net-core

这似乎是一个非常简单的问题,但是谷歌搜索没有任何用处。

我有针对.NET Framework 4.7.1的VS2017 WinForms C#项目。

我想利用Path.GetRelativePath中的.NET Core 2.X

这是可以实现的(裸包或其他东西)吗?

PS。对于那些不愿自己移植.NET Core代码的人来说,这里是my adapted version of it

1 个答案:

答案 0 :(得分:2)

解决方法:如果由于某种原因无法在运行时引用或调用Core库,则可以自己实现该函数,这很简单:

public string GetRelativePath(string relativeTo, string path)
{
    var uri = new Uri(relativeTo);
    var rel = Uri.UnescapeDataString(uri.MakeRelativeUri(new Uri(path)).ToString()).Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
    if (rel.Contains(Path.DirectorySeparatorChar.ToString()) == false)
    {
        rel = $".{ Path.DirectorySeparatorChar }{ rel }";
    }
    return rel;
}