在 Windows 只读文件上设置时间戳
现在,在具有只读属性的文件上设置时间戳将在 Windows 上成功,不再引发异常。
旧行为
在 .NET 6 维护版本之前,在 Windows 只读文件上设置时间戳会导致出现 UnauthorizedAccessException。
新行为
从 .NET 6.0.2 开始,在 Windows 只读文件上设置时间戳会成功。
引入的版本
.NET 6.0.2(维护版本)
中断性变更的类型
此项更改可能会影响二进制兼容性。
更改原因
客户提供反馈,表示希望在只读文件上设置时间戳的操作成功。 此更改还将使 Windows 行为与 Linux 一致。 最后,此行为是由 bug 无意导致的。
建议的操作
现有代码不太可能希望在只读文件上设置时间戳的操作失败。 但是,如果你的代码希望它失败,那么在尝试设置时间戳之前,请使用 File.GetAttributes(String) 添加对只读属性的检查。
受影响的 API
- System.IO.File.SetCreationTime(String, DateTime)
- System.IO.File.SetCreationTimeUtc(String, DateTime)
- System.IO.File.SetLastAccessTime(String, DateTime)
- System.IO.File.SetLastAccessTimeUtc(String, DateTime)
- System.IO.File.SetLastWriteTime(String, DateTime)
- System.IO.File.SetLastWriteTimeUtc(String, DateTime)