2011-11-06 69 views
1

我在Windows 7上使用了Monodevelop 2.8.2和c#。我试图编写一个函数来获取目录和所有子目录中的所有文件。Monodevelop中的调试模式中没有显示Directory.EnumerateFiles的文件

当我在调试模式下做

string curdir = Directory.GetCurrentDirectory(); 
foreach (string file in Directory.EnumerateFiles(".", "*", SearchOption.AllDirectories)) 
{ 
    Console.WriteLine("{0} in {1}", file, curdir); 
} 

,只有可执行文件的名字中找到。但是,如果我直接通过Windows资源管理器运行可执行文件,即双击,所有文件都显示(有9个)。以管理员身份运行monodevelop没有任何效果。

这适用于视觉工作室,发生了什么?我已经尝试建立清洁并验证被检查的目录是否相同(如果可执行文件实际上是独立的,那么该程序将不会运行,它需要6个DLL!)。

编辑:除去免费参数

+0

你从哪里得到'dir'? – JaredPar

+0

@JaredPar哦,它只是“。”硬编码 – Lucina

+0

想知道你是否曾经为此找到任何解决方案?你记得,如果这是跳过子文件夹? – MrUnleaded

回答

2

当前工作目录是bin/Debug从MonoDevelop的IDE调试模式下运行时。

不出所料,它包含了一些文件,可执行:)

所以,要么

  • 使用另一种路径,而不是"."
  • 指定其他工作目录调试

编辑如果输出目录实际上是确实包含的文件多于列出的文件,您可能已经在在您的项目的调试选项中指定的特定工作目录。你可能想要检查它,或者只是将上面的项目符号应用不变:)

+0

我检查了使用GetCurrentDirectory()和在两种情况下被检查的目录是相同的。 – Lucina

+0

嗯。在这种情况下,它必须是运行时版本的差异。当您双击时,您将使用MS.Net,Monodevelop默认为Mono运行时。您可以尝试使用Monodevelop中的.Net框架进行调试(可能需要最新版本的Monodevelop) – sehe