【问题标题】:Is it possible to use Path.GetRelativePath (.NET Core2) in WinForms proj targeting 4.7.1?是否可以在针对 4.7.1 的 WinForms 项目中使用 Path.GetRelativePath (.NET Core2)?
【发布时间】:2018-07-04 18:32:39
【问题描述】:

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

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

我想从.NET Core 2.X使用Path.GetRelativePath

是否可以实现(nuget 包之类的)?

附言。对于那些懒得自己移植 .NET Core 代码的人来说,这里是my adapted version of it

【问题讨论】:

  • 尝试从 dotnetcore 导入 System.Runtime.Extensions.dll。如果您对同名的类有问题,因为 .net 框架已经有一个 System.IO 命名空间,请检查 this answer
  • @Magnetron 我如何从 dotnetcore 导入 System.Runtime.Extensions.dll
  • 是的,这只是一个想法,因为文章说它属于该程序集。我在这里试过,但我做不到。 nuget 版本没有给我任何类,所以我构建了一个 dotnet 核心应用程序来选择程序集,它给了我一些类但没有给我 Path 类。

标签: c# .net .net-core


【解决方案1】:

解决方法:如果由于某种原因,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;
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多