【发布时间】:2010-09-20 04:31:35
【问题描述】:
对于我的应用程序,我将一些配置文件与程序集(exe)一起存储在 xml 中,以及用于处理目的的其他临时文件。
我发现了".\\" 和Application.StartupPath 的一些怪癖。
我一直在用
String configPath = ".\\config.xml";
在我调用OpenFIleDialog 打开其他文件夹中的一些文件之前,它工作正常,上面的语句失败了。显然“.\”指的是“CurrentDirectory”,每次我们浏览到另一个文件夹时都会改变。
在某些时候,我正在使用
String configPath = Path.Combine(Application.StartupPath + "config.xml");
在某些时候,当我需要使用 Process.Start() 从另一个文件夹执行此程序集时,事情开始分崩离析。显然工作目录设置不正确,Application.StartupPath 实际上指的是工作目录,而不是我假设的程序集正在执行的目录。所以我不得不求助于使用 ProcessInfo 将工作目录设置为程序集的目录。我在写 VSTO 时也遇到过这个问题。
所以,我的问题是,在没有我刚才提到的那些怪癖(或误解)的情况下,获取程序集正在执行的当前目录的最佳、最简单和最可靠的方法是什么?
编辑:我的意思是获取程序集所在的目录
编辑:根据AppDomain.BaseDirectory 上的 MSDN,它似乎可以在运行时进行更改,这是我不想要的(只是为了澄清,不是我不想允许更改 BaseDirectory,而是,当我在不确定是否已更改的情况下检索它时)
编辑:我注意到一个相关问题发布得更早。 What would cause the current directory of an executing app to change?
谢谢大家的回答。
【问题讨论】: