In einem Projekt verwende ich den Aufruf
if (File.Exists(filePath))
{
File.SetCreationTime(filePath, date);
}
Bei einem Kund trat der Fehler auf:
Not a valid Win32 FileTime.
Die Exception ist vom Typ System.ArgumentOutOfRangeException
und der Fehler trat hier im Callstack auf:
at System.DateTime.ToFileTimeUtc()
at System.IO.File.SetCreationTimeUtc(String path, DateTime creationTimeUtc)
Also innerhalb von DateTime.ToFileTimeUtc
. Hier ist der Quelltext der Funktion.
Ich nutze den Code im Kontext:
- Creation-Datum von Datei 1 lesen.
- Dieses gelesene Datum auf Datei 2 setzen.
Und eben dort kommt die Exception. Und nur bei einem Kunden.
Frage:
Was kann die Ursache sein und wie genau kann ich sie vermeiden?
Weitere Recherchen:
Anscheinend erzeugt folgender Aufruf diese Exception:
// Not a valid Win32 FileTime.
System.DateTime.MinValue.ToFileTime()
Es könnte also sein, dass das Creation-Datum von Datei 1 DateTime.MinValue
zurück gibt, z.B. weil sie nicht vorhanden ist (so mache ich das auch in der von mir hier verwendeten ZetaLongPaths-Bibliothek).