如何获得在调试器中工作时“知道”的文件的完整路径

时间:2013-09-25 23:20:35

标签: c# file-io

我有一个XML文件,我正在作为XDocument流式传输。我需要能够使用反射等获取文件的完整路径(不是bin / Debug路径)(因此这将是它所使用的用户机器的路径)。

我尝试了大量不同的方式,包括:

 System.Reflection.Assembly.GetCallingAssembly().Location
 System.Reflectin.Assembly.GetEntryAssembly().Location
 System.Reflection.GetExecutingAssembly().Location
 AppDomain.CurrentDomain.BaseDirectory.

如何使用System.IO查找用户计算机上的路径到我的文件?非常惊讶我在谷歌搜索一整天都没有找到简单的答案。

::编辑::我现在发现根据应用程序是否在调试器中运行,无法“反射性地”定位路径。我唯一的选择就是做一些检测。

提前致谢!!

2 个答案:

答案 0 :(得分:1)

我假设该文件位于可执行文件的子目录中?

您可以使用Environment类获取当前工作目录的完整路径(即运行.exe的位置)。然后,您可以将其与子目录

连接起来
Environment.CurrentDirectory + @"\folder\file.xml"

http://msdn.microsoft.com/en-us/library/system.environment.aspx

希望这有帮助!

编辑:稍微阅读后发现可以很容易地更改CurrentDirectory。这里接受的答案Environment.CurrentDirectory is yielding unexpected results when running installed app提供了一种更可靠的方法。

答案 1 :(得分:1)

找到我的答案here (using path stripping and GetFullPath() )。这是一个真正的无赖,只是剥离路径的bin / debug部分。我使用了上面链接的问题的第三部分。