2011-09-19 103 views
2

我有這個控制檯應用程序。現在我已經添加了環境變量PATH到它的設置,以便它可以通過控制檯從任何位置執行。奇怪的是,同樣的應用程序正在打破這種變化。影響相對文件路徑的環境PATH變量

安裝目錄包含BIN和CONFIG文件夾。 Exe放在BIN文件夾內。

我有這行代碼,

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

用於寫入配置文件夾內的文件將Settings.xml安裝目錄內的路徑。但是,現在它會嘗試寫入執行路徑下的Config文件夾內的settings.xml文件。因此,如果我從控制檯執行我的應用程序作爲c:/users/guest/app.exe,它會嘗試解釋相對於此位置的路徑,而不是相對於應用程序的安裝目錄。

任何幫助,建議?

回答

0

獲取執行的程序集的路徑,然後添加到它的文件夾和文件名:

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

你爲什麼不嘗試獲得執行應用程序的路徑,並要保存路徑前追加它

+0

只是點擊張貼答案,你的答案在頂部:) – Madhan

0

從\開始的路徑\表示:從當前驅動器的根目錄開始。從任何C子目錄執行的\ Config \ Settings.xml給出:C:\ Config \ Settings.xml。

順便說一句,你發佈確切的代碼?它應該是WriteToFile(@「\ Config \ Settings.xml」)或WriteToFile(「\ Config \ Settings.xml」)

無論如何,您需要決定是否要使用絕對路徑搜索配置文件,或相對於當前目錄/安裝目錄/可執行目錄的路徑。代碼,安裝包和執行命令應相應更改。

+0

真的很抱歉沒有發佈確切的代碼。但是我主要關心的是首先要確認的是,只有將Environment PATH變量添加到設置中才能導致這樣嚴重的副作用。 – EagerToLearn

+0

這不是PATH,因爲你使用相對路徑,所以這是當前目錄,可以改變你的程序行爲。在更改PATH變量後,您現在可以從控制檯窗口運行應用程序,而不需要cd到應用程序可執行文件目錄。 –