从 .NET 10 开始, GnuTarEntryPaxTarEntry 创建新条目时不再自动设置访问时间(atime)和更改时间(ctime)字段。 这些字段在 tar 条目中存在问题,因为并非所有 tar 读取器都支持它们。 在读取时,这些字段仍会被保留,并且可以直接设置。 但是,它们不会在本来没有这些的现有条目上设置,也不会在从其他条目类型转换过来时设置。
TarEntry.ModificationTime行为不变。 它对于使用构造函数创建的 tar 条目被初始化为 UtcNow,对于从文件创建的条目则使用文件的修改时间。
已进行其他次要修复,以便 System.Formats.Tar 优先进行从读取到写入的 TarEntry 条目往返,而无需更改。
Version introduced
.NET 10 预览版 5
Previous behavior
以前,GnuTarEntry 和 PaxTarEntry 在创建新条目时始终添加 atime 和 ctime 值。
New behavior
从 .NET 10 开始,只有在以下条件下,GnuTarEntry 和 PaxTarEntry 才会设置 atime 和 ctime:
- 该条目从已包含这些字段的 tar 存档中读取。
 - 用户使用适当的属性显式设置它们。
 
TarEntry.ModificationTime行为保持不变。 它对于使用构造函数创建的 tar 条目被初始化为 DateTime.UtcNow,并对于从文件创建的条目使用文件的修改时间。
破坏性变更的类型
这是行为 变化。
更改原因
此更改是为了更好地与其他 tar 文件读取器兼容,并改进 tar 文件的完整往返处理,而无需修改。
Recommended action
大多数用户不需要执行任何作 - 大多数存档都不适用于这些时间戳。
如果需要设置这些字段,可以使用以下 API:
- 对于 
GnuTarEntry:使用 GnuTarEntry.AccessTime 和 GnuTarEntry.ChangeTime 属性。 - 对于 
PaxTarEntry:使用接受扩展属性的构造函数: PaxTarEntry(TarEntryType, String, IEnumerable<KeyValuePair<String,String>>)。 
但是,请注意,设置这些字段会创建许多 tar 客户端无法读取的 tar 文件。