Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

`Path.Combine`, `HasExtension`, `GetFileName` docs still describe .NET Framework volume-separator (`:`) handling

已关闭 适合新手
#13,124 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@ForNeVeR 已经在做这个了。

开始于 2026年9月30日。

  • #13125 来自 @ForNeVeR —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
86/100
Issue 类型
文档
描述清晰度
描述清楚
活跃度
活跃
技术栈
csharp
领域
documentation

调研方向

打开 xml/System.IO/Path.xml,找到 issue 中提到的 Combine、HasExtension 和 GetFileName 重载的文档。将它们的备注和返回值文本与现代行为以及提供的 .NET Framework 示例进行比较。完成标准是所有受影响的措辞都描述当前的分隔符处理方式,并指出卷分隔符行为是 .NET Framework 特有的。

由索引模型根据 Issue 内容生成。

描述

untriaged
Type of issue

Outdated article

Description

Several docs related to System.IO.Path APIs describe special handling of the volume separator (:) that modern .NET removed in .NET Core 2.1.

Path.Combine: the remarks for Combine(string, string), Combine(string, string, string), Combine(string, string, string, string) and Combine(params string[]) say a separator is appended only if the preceding path "is not a drive reference (that is, "C:" or "D:")" and does not end in DirectorySeparatorChar, AltDirectorySeparatorChar, or VolumeSeparatorChar. On .NET Core 2.1+ only DirectorySeparatorChar/AltDirectorySeparatorChar are checked, and no drive references:

Call .NET 10 .NET Framework 4.x
Path.Combine("C:", "foo") C:\foo C:foo
Path.Combine("C:", "foo", "bar") C:\foo\bar C:foo\bar
Path.Combine(new[] { "C:", "foo" }) C:\foo C:foo

The fixed-arity overloads changed in dotnet/coreclr#15579, and the params string[] overload in dotnet/coreclr#16447. Discussion in dotnet/runtime#27535 confirms that the change was intentional.

The same PR, dotnet/coreclr#16447, has adjusted behavior of several other APIs in a similar manner (removed special treatment of :), invalidating some other remarks:

  • HasExtension (both overloads): return value and remarks say the search stops at VolumeSeparatorChar. It no longer does: Path.HasExtension(@"C:\a.b:c") is true on .NET 10 and false on .NET Framework.
  • GetFileName (both overloads): says the result is empty when the path ends in a volume separator. Only a drive root counts now: Path.GetFileName(@"C:\file.txt:stream") returns file.txt:stream on .NET 10 and stream on .NET Framework; Path.GetFileName("foo:") returns foo: on .NET 10 and an empty string on .NET Framework. (The string overload's remarks already list only DirectorySeparatorChar/AltDirectorySeparatorChar, which contradicts its own return-value text.)

Proposal: describe the modern behavior (only DirectorySeparatorChar/AltDirectorySeparatorChar are treated as separators; a drive reference such as C: is still recognized at the start of a path, but not treated specifically by the affected APIs, e.g. Path.Combine). Add notes on the volume-separator behavior being specific .NET Framework only.

Page URL

https://learn.microsoft.com/en-us/dotnet/api/system.io.path.combine?view=net-10.0#system-io-path-combine(system-string-system-string)

Content source URL

https://github.com/dotnet/dotnet-api-docs-temp/blob/live/xml/System.IO/Path.xml

Document Version Independent Id

fe224bbb-0eec-28fe-93e4-80a25b795e62

Platform Id

3916d1a3-5b50-d6c3-65d1-d12ac54cc834

Article author

@dotnet-bot

主要语言
C#
星标
954
派生
1.7k
平均合并
1 天 6 小时
30 天内合并 PR
61

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

dotnet/dotnet-api-docs 的其他 Issue

查看 dotnet/dotnet-api-docs 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。