2012-10-05 29 views
1

執行我的代碼時收到的錯誤是:'ArgumentException未處理。路徑中的非法字符。'ArgumentException:C中的'路徑中的非法字符'#

我正在使用下面的代碼來訪問我的.xml文件。

string appPath = Path.GetDirectoryName(System.Environment.CommandLine); 
FileInfo fi = new FileInfo(appPath + @"\Books.xml"); 

我這樣做的控制檯應用程序,而不是一個WinForm。我一直在窮盡地搜索,並搜索了一段時間。

這是一個家庭作業項目的一部分。但這是我遇到的唯一問題。

+2

將'appPath'打印到控制檯,看看它是什麼 –

+0

你在CommandLine上傳遞的路徑是什麼 –

回答

3
string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
FileInfo fi = new FileInfo(Path.Combine(appPath, "Books.xml")); 
+0

這隻有在上面的代碼在exe中才有效,這可能足夠了。不要從一個DLL中完成它,除非它在同一個目錄:) –

+0

很棒!謝謝!如果有人遇到這個解決方案,請注意......確保包含'using System.Reflection' = P – user1721879

1

System.Environment.CommandLine不返回路徑 - 它返回執行的命令行的值以運行應用程序。

您可能需要使用Assembly.GetExecutingAssembly().Location(如Furqan Safdar在his answer中發佈)。

+1

要小心。當前目錄不一定與包含可執行文件的目錄相同。 –

+0

@DavidHeffernan - 確實如此,儘管我無法想起推薦的方式來獲取應用程序路徑。 – Oded

0

通過的CommandLine返回的EXE路徑的格式是時髦的,所以你需要做這樣的事情:

string appPath = Path.GetDirectoryName(System.Environment.CommandLine.Trim('"', ' ')); 

這應該工作。

0

使用此代碼來獲取應用程序目錄:

var rootDirectory = AppDomain.Current.BaseDirectory; 

祝你好運!

相關問題