c# - C# .net 核心中的 Path.GetDirectoryName

标签 c# linux path nunit .net-core-2.0

我在 .Net Core 2 中有一个测试用例,我在其中向 Path.GetDirectoryName 提供以下输入。

@"C:" + Path.DirectorySeparatorChar

当我在测试用例中为 Path.GetDirectoryName 断言时,对于 Windows 操作系统它返回 null 但对于 Linux 操作系统返回 C:,为什么这样? 谁能解释一下我在这里做错了什么?

最佳答案

在 Windows 上,C:\ 是根目录。它没有名字。

在 Linux 上,C:\ 也是一个目录。它的名称是 c: 并且 - 因为您使用了相对路径 - 它是当前目录的子目录。

问题是您正确使用了 Path.DirectorySeparatorChar 以便所提供的路径在两个操作系统中都有效,但是您使用了驱动器指示符 (C:),这是不正确的在 Linux 中不存在。

关于c# - C# .net 核心中的 Path.GetDirectoryName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46420049/

相关文章:

linux - 循环读取 bash 文件中的多个查询

linux - 无法在另一台机器上使用 IP 打开 Web 应用程序?

Android沿路径移动对象

bash - 如何更改 $PATH 的顺序?

c# - 具有枚举的 Wcf DataContract 类导致 "' 枚举值 '-1' 对类型无效“错误

c# - LINQ to Entities 如何更新记录

c - 如何拦截 gtk 窗口关闭按钮单击?

c# - 相同的路径适用于文件但不适用于文件夹

c# - Asp.NET MVC3 - URL 中没有区域的访问区域 Controller

c# - DescriptionAttribute 与 <summary> 标签的属性