Behebung der Dateipfadbeschränkung von .NET auf 259 Zeichen
Bei der Arbeit mit Dateien in .NET muss häufig die durch die Klasse FileInfo
auferlegte Pfadlängenbeschränkung von 259 Zeichen beachtet werden. Diese Einschränkung kann je nach .NET-Version mit verschiedenen Methoden umgangen werden.
Für .NET Framework 4.6.2 und höher:
Die einfachste Lösung für Anwendungen, die auf .NET Framework 4.6.2 oder neuer abzielen, ist die Verwendung des Präfixes \?
. Wie von Microsoft dokumentiert, ermöglicht das Voranstellen von \?C:
(oder des entsprechenden Laufwerksbuchstabens) vor Ihrem Pfad Pfade mit bis zu 32.767 Zeichen. Zum Beispiel: "\?\C:\Verrrrrrrrrrrry long path"
.
Für .NET Core und .NET:
.NET Core und spätere Versionen von .NET unterstützen automatisch lange Pfade, sodass keine manuellen Problemumgehungen erforderlich sind. Das Framework übernimmt intern die notwendige Syntax für lange Pfade.
Für .NET Framework-Versionen vor 4.6.2:
Für ältere .NET Framework-Versionen (vor 4.6.2) ist ein kombinierter Ansatz erforderlich: Verwendung der Long-Path-Syntax mit Unicode-kompatiblen Win32-API-Aufrufen über P/Invoke. Dies kann erreicht werden mit:
<code class="language-csharp">System.IO.Path.Combine("\\?\", System.IO.Path.GetFullPath(path));</code>
Bedenken Sie, dass die Verwendung dieser Methode die Verwendung von Unicode-API-Funktionen erfordert, um eine ordnungsgemäße Kompatibilität mit langen Pfaden gemäß den Empfehlungen von Microsoft zu gewährleisten.
Wichtige Hinweise:
Selbst wenn die Unterstützung für lange Pfade aktiviert ist, werden im BCL-Team-Blog von Microsoft potenzielle Feinheiten hervorgehoben. Einige Windows-APIs verhalten sich bei langen Pfaden möglicherweise anders. Es können Probleme wie Pfadnormalisierungsfehler und Inkompatibilitäten mit bestimmten Anwendungen oder der Windows-Shell selbst auftreten. Microsoft arbeitet aktiv daran, die Kompatibilität und Unterstützung für erweiterte Dateipfade in zukünftigen Windows-Versionen zu verbessern.
Das obige ist der detaillierte Inhalt vonWie kann ich in .NET mit Dateipfaden umgehen, die länger als 259 Zeichen sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!