Directory.GetFiles()不使用“。”模式。

当我将以下行添加到我的WPF应用程序中时,我有一些奇怪的问题。

private void button1_Click(object sender, RoutedEventArgs e) { foreach(string files in Directory.GetFiles(path,".",SearchOption.TopDirectoryOnly)) tb_FileBrowse.Text = files; } 

问题是在FrameWork 3.5中 ,上面的方法什么都不做,甚至没有错误,但是如果我将它改为FrameWork 4.5就可以了! 此外,如果我使用Framework 3.5并将其更改为ConsolApp,就像这样

 foreach (string files in Directory.GetFiles(path, ".", SearchOption.TopDirectoryOnly)) { Console.WriteLine("{0}",files); } 

代码给出了一些结果。

有没有人有同样的问题?

我尝试了这个并得到了相同的结果。 使用Resharper钻取API源代码可以发现.NET 3.5和4.5版本的Directory.GetFiles完全不同。

特别是.NET 4.5版本包含此function(而.NET 3.5不支持):

 private static string NormalizeSearchPattern(string searchPattern) { string searchPattern1 = searchPattern.TrimEnd(Path.TrimEndChars); if (searchPattern1.Equals(".")) searchPattern1 = "*"; Path.CheckSearchPattern(searchPattern1); return searchPattern1; } 

这解释了为什么搜索模式为’。’ 适用于.NET 4.5但不适用于3.5。

你应该使用’*’或’*。*’来兼容。