GnuTarEntry 和 PaxTarEntry 默认排除 atime 和 ctime

从 .NET 10 开始, GnuTarEntryPaxTarEntry 创建新条目时不再自动设置访问时间(atime)和更改时间(ctime)字段。 这些字段在 tar 条目中存在问题,因为并非所有 tar 读取器都支持它们。 在读取时,这些字段仍会被保留,并且可以直接设置。 但是,它们不会在本来没有这些的现有条目上设置,也不会在从其他条目类型转换过来时设置。

TarEntry.ModificationTime行为不变。 它对于使用构造函数创建的 tar 条目被初始化为 UtcNow,对于从文件创建的条目则使用文件的修改时间。

已进行其他次要修复,以便 System.Formats.Tar 优先进行从读取到写入的 TarEntry 条目往返,而无需更改。

Version introduced

.NET 10 预览版 5

Previous behavior

以前,GnuTarEntryPaxTarEntry 在创建新条目时始终添加 atimectime 值。

New behavior

从 .NET 10 开始,只有在以下条件下,GnuTarEntryPaxTarEntry 才会设置 atimectime

  • 该条目从已包含这些字段的 tar 存档中读取。
  • 用户使用适当的属性显式设置它们。

TarEntry.ModificationTime行为保持不变。 它对于使用构造函数创建的 tar 条目被初始化为 DateTime.UtcNow,并对于从文件创建的条目使用文件的修改时间。

破坏性变更的类型

这是行为 变化

更改原因

此更改是为了更好地与其他 tar 文件读取器兼容,并改进 tar 文件的完整往返处理,而无需修改。

大多数用户不需要执行任何作 - 大多数存档都不适用于这些时间戳。

如果需要设置这些字段,可以使用以下 API:

但是,请注意,设置这些字段会创建许多 tar 客户端无法读取的 tar 文件。

Affected APIs