如何找到.NET应用程序的当前目录 在Visual Studio调试器下运行?
更新1 。要明确:我不想更改代码 或者在程序中获取信息 - 我只是想 获取有关当前应用程序的信息 调试。
调试.NET Windows Forms应用程序时(混合VB.NET和 C#)我不确定XML文件的位置 从中读取。我希望当前目录是 应用程序的目录。但是,使用Process Explorer, 该过程的属性导致:
D:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \
(右键单击进程/属性/选项卡图像/当前目录)。
将光标悬停在Process Explorer主视图中的进程上 揭示了不同的结果(见下面的截图):
d:\ dproj \ DTASCall \ DTASuperCharge \ BIN \
什么是正确的?
启动应用程序独立显示预期 当前目录,
d:\ dproj \ DTASCall \ DTASuperCharge \ BIN \
在Process Explorer流程属性窗口中。
Process Explorer的带注释的屏幕截图:
Alt text http://www.pil.sdu.dk/1/until2039-12-31/PEdiscrepancy_2009-09-02.png
答案 0 :(得分:26)
在Visual Studio中,在调试选项卡中的项目设置下,您可以根据需要设置“工作目录”。
要在代码中或在断点的即时窗口中确定当前工作目录,请尝试
System.IO.Directory.GetCurrentDirectory()
答案 1 :(得分:4)
在您的代码中,调用函数
System.IO.Directory.GetCurrentDirectory()
默认情况下,除非您更改了项目的Debug属性,否则当前目录将作为项目的bin \ Debug目录(运行.exe的目录)启动。
答案 2 :(得分:-3)
最好的方法是在WinDbg(Windows调试器)中运行应用程序,然后附加到进程并运行!handle
命令。每个打开的文件都有一个关联的句柄。通过转储相应进程的所有句柄,您将看到相应的文件路径。
以下是一个例子:
!handle 0 f process-id
将process-id替换为进程ID的值。您也可以使用进程地址代替进程ID。如果这不显示文件对象,则文件句柄已被关闭。在这种情况下,您需要跟踪句柄。这可以使用!htrace
命令完成。