0

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

我尝试了无数种不同的方式,包括:

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

我如何使用 System.IO 在用户机器上找到我的文件的路径?很惊讶我在谷歌搜索了一整天后没有找到简单的答案。

::EDIT:: 我现在发现没有办法根据应用程序是否在调试器中运行来“反射地”动态定位路径。我唯一的选择是进行一些检测。

提前致谢!!

4

2 回答 2

1

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

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

Environment.CurrentDirectory + @"\folder\file.xml"

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

希望这可以帮助!

编辑:在读了一点之后,事实证明 CurrentDirectory 可以很容易地改变。此处接受的答案Environment.CurrentDirectory 在运行已安装的应用程序时产生了意想不到的结果,提供了一种更可靠的方法。

于 2013-09-25T23:43:29.237 回答
1

在这里找到了我的答案(使用路径剥离和 GetFullPath() )。这是一个真正的无赖,没有办法只是剥离路径的 bin/debug 部分。我使用了上面链接的问题的第三部分。

于 2013-09-26T17:23:57.197 回答