Share via


Enumerazione del percorso della directory corrente dell'unità

Le voci del file system ottenute usando un argomento path nella forma della directory corrente di un'unità, ad esempio C:, sono state formate erroneamente combinando directory path + separator + entry name. Per restituire il percorso corretto per le voci, il separatore non viene più aggiunto in presenza di questi percorsi.

Comportamento precedente

In precedenza, era stato aggiunto un carattere separatore in modo che le voci del file system enumerate apparissero nella radice dell'unità.

string pathToEnumerate = "C:";

Console.WriteLine($"Full path of \"{pathToEnumerate}\" is {Path.GetFullPath(pathToEnumerate)}.");
Path.GetFullPath(pathToEnumerate);

Console.WriteLine($"Enumerating files and folders in \"{pathToEnumerate}\".");
foreach (string entry in Directory.GetFileSystemEntries(pathToEnumerate))
{
    Console.WriteLine(entry);
}

L'esecuzione di questo frammento di codice generava quindi l'output seguente.

Full path of "C:" is C:\Users\myalias\consoleapps\Program

Enumerating files and folders in "C:".
C:\Program.csproj
C:\Program.sln
C:\bin
C:\obj
C:\Program.cs

Nuovo comportamento

L'esecuzione dello stesso frammento di codice in .NET 9 e versioni successive produce un output senza un carattere separatore in ogni percorso.

Full path of "C:" is C:\Users\myalias\consoleapps\Program.

Enumerating files and folders in "C:".
C:Program.csproj
C:Program.sln
C:bin
C:obj
C:Program.cs

Versione introdotta

.NET 8

Tipo di modifica che causa un'interruzione

Questa è una modifica funzionale.

Motivo della modifica

Gli utenti avevano segnalato che il comportamento precedente non era corretto. Si trattava anche di una regressione da .NET Framework.

Per gli utenti Windows che si basano sull'enumerazione di percorsi come C: si consiglia di prendere nuovamente in considerazione le operazioni di I/O dell'applicazione. Si tratta di uno scenario insolito che probabilmente non verrà usato in un ambiente di produzione. La maggior parte degli utenti che desiderano enumerare la directory corrente usa invece Environment.CurrentDirectory.

API interessate