环境路径影响相对文件路径的变量



我有这个控制台应用程序。现在我已经将环境变量PATH添加到它的设置中,这样它就可以通过控制台从任何位置执行。奇怪的是,同样的应用程序在此更改后会崩溃。

安装目录包含,BIN和CONFIG文件夹。Exe放在BIN文件夹内。

我有这行代码,
WriteToFile(@"..ConfigSettings.xml")

用于写入安装目录下Config文件夹下的Settings.xml文件的路径。但是,现在它尝试写入执行路径下配置文件夹中的settings.xml。

所以,如果我从控制台以c:/users/guest/app.exe执行我的应用程序,它会尝试解释相对于此位置的路径,而不是相对于应用程序的安装目录。

有什么帮助,建议吗?

获取执行程序集的路径,然后在其中添加文件夹和文件名:

string pathOfExecutingAssembly = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string settingsPath = pathOfExecutingAssembly + "\..\Config\Settings.xml"

为什么不尝试获取正在执行的应用程序的路径并将其附加在要保存的路径之前

Path starting from 表示从当前驱动器的根目录开始。ConfigSettings.xml从任意C子目录执行得到:C:ConfigSettings.xml.

顺便说一句,你贴准确的代码吗?它应该是WriteToFile(@"ConfigSettings.xml")或WriteToFile("ConfigSettings.xml")

在任何情况下,你需要决定,你是想使用绝对路径搜索配置文件,还是相对于当前目录/安装目录/可执行目录的路径。修改代码、安装包和执行命令

最新更新