【问题标题】:Environment PATH variable affecting Relative File Path(s)影响相对文件路径的环境 PATH 变量
【发布时间】:2011-09-19 22:12:04
【问题描述】:

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

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

我有这行代码,

WriteToFile(@"..\Config\Settings.xml")

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

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

有什么帮助、建议吗?

【问题讨论】:

    标签: c# .net visual-studio


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 刚刚点击发布答案,你的答案排在首位:)
      【解决方案3】:

      从\开始的路径表示:从当前驱动器的根目录开始。从任何 C 子目录执行的 \Config\Settings.xml 给出:C:\Config\Settings.xml。

      顺便说一句,您发布确切的代码吗?它应该是 WriteToFile(@"\Config\Settings.xml") 或 WriteToFile("\Config\Settings.xml")

      无论如何,您需要决定是使用绝对路径搜索配置文件,还是相对于当前目录/安装目录/可执行目录的路径。代码、安装包和执行命令要相应修改。

      【讨论】:

      • 真的很抱歉没有发布确切的代码。但我主要关心的是首先确认,仅在设置中添加 Environment PATH 变量是否会引起如此严重的副作用。
      • 这不是 PATH,这是可以改变程序行为的当前目录,因为您使用的是相对路径。更改 PATH 变量后,您现在可以从控制台窗口运行应用程序,无需 cd 到应用程序可执行目录。
      猜你喜欢
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2012-05-27
      • 2013-09-16
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      相关资源
      最近更新 更多