2010-12-20 132 views
0

我有一個應用程序,我通過右鍵單擊該項目添加一個文件夾,選擇添加文件夾。在這個文件夾裏面,我有設置爲構建動作的xml文件:內容,複製到輸出目錄:複製如果更新(我嘗試設置嵌入資源)以及這個我有幾個文本文件等等。部署c#應用程序問題

在我的bin/debug輸出目錄中,我有exe,帶有xml的文件夾,獨立的.txt文件等等。我的問題是,如果我發送exe文件給我的朋友嘗試,他總是得到一個異常拋出。

說他把exe放在桌面上,我的程序在某個時候讀取文件夾中xml文件的文件名。它使用下面的代碼這樣做

String[] filePaths = Directory.GetFiles(@"DataSources\"); 

我認爲正因爲如此,當EXE從桌面上運行時,它期望的.xml文件的文件夾是在同一個地方?我也嘗試讀取.txt文件時遇到相同類型的異常。我在這裏做錯了什麼?

感謝您的時間

+0

我設法通過製作一個安裝工具包,將所需文件複製到一個輸出目錄與exe文件。我認爲這更專業? – tom 2010-12-20 15:21:11

回答

1

使用相對路徑從文件中讀取時,會得到與應用程序當前目錄相關的文件。 則提示:在C#中,您可以看到使用Environment.CurrentDirectory的目錄。

因此,如果您在桌面上創建快捷方式,則需要確保右鍵單擊該快捷方式並將其「開始」 - 文件夾設置爲您應用程序的目錄。這樣,當它的開始和相對路徑將相對於該路徑而不是快捷方式的路徑時,其當前目錄將被設置。

如果你實際上將exe文件移動到桌面上,你還需要移動它需要的任何資源,所以如果它想要一個名爲「datasources」的文件夾,你也必須移動該文件夾,或者設置當前目錄當你啓動應用程序。

1

你有沒有嘗試過這樣的:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspxhttp://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx

所以 Directory.GetFiles(environment.currentdirectory + @「\ DataSources \」);

+0

不會說明我到達StreamReader時所得到的錯誤sr = new StreamReader(「txtfile.txt」); – tom 2010-12-20 14:56:40

+0

拋出什麼異常? – 2010-12-20 15:02:47