2017-03-31 35 views
2

這是一個奇怪的問題,因爲我花了一段時間,並沒有真正意識到我,因爲程序需要重新編譯,但是,因爲如果可能的話會讓我的程序變得更簡單,我需要知道它是有辦法做到的。 基本上我有一個.exe程序。 該程序有一個組合框,從.txt文件中獲取其值。 編輯組合框上的值非常簡單,所有用戶必須做的是編輯.txt文件並重新啓動程序,但我需要這樣做,如果我們將.exe移動到另一臺計算機上,它會將.txt與他在一起,所以我將.txt加入我的項目。C#在運行時將嵌入式資源添加到項目中

問題: 我需要用戶,如果需要,編輯我的.txt文件。 如果他編輯.txt文件,這意味着我將不得不更新嵌入在我的.exe中的文件以及從我搜索的文件中,不可能做到這一點。

我的想法來解決這個問題: 程序啓動時,我複製.txt出來的方案,刪除該項目的嵌入的文件,當用戶關閉我的程序,它複製.txt這是在外面,裏面,就好像我要再次手動將它添加到程序中一樣,如果用戶編輯它,如果他將.exe移動到另一臺計算機上,它將更新組合框的值。它對我有些意義,這就是爲什麼我好奇,看看是否有可能,如果是這樣,如何在運行時向項目添加外部文件。

謝謝!

+1

我不認爲這是可能的 - 至少不是一個簡單的方法。您可以用十六進制編輯器編輯exe文件的txt塊並保存編輯後的exe文件,但普通用戶和高級用戶不會知道這一點,我強烈建議不要這樣做。你可以創建一個exe的副本並在它旁邊創建它,這樣用戶就可以對其進行編輯,但它仍會保留在那裏。或者,您可以使用「UserData」文件夾並將文件保存在那裏(固定位置)。但是把它重寫回你的exe文件?不容易或推薦。 – user3079834

回答

0

你可以嘗試另一種方式。

您可以添加一個應用程序配置文件,並且可以使用逗號分隔值在appSettings節內維護comboBox的值。在加載期間,它將從配置中獲取,並且在應用程序關閉期間,您只需使用更新的值更新appSettings部分。

代碼更新配置文件:

Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); 
config.AppSettings.Settings["comboKey"].Value = "comboValues with comma separated"; 
config.Save(ConfigurationSaveMode.Minimal); 

當你要複製你的應用到其他系統,那麼你應該與app.exe文件沿app.exe.config複製。

如果您嘗試使用不同系統中的任何安裝程序文件,並且您將擁有用戶設置,那麼您還可以使用具有用戶級別作用域變量的Settings.setting文件。

+0

是的,我知道使用設置,但我們正在討論幾個不同的.txt文件,而很多代碼行都是這樣,這意味着手動編寫每行代碼是沒有問題的,並且爲程序編寫循環也需要太多時間很多時間,而且這個程序需要快速運行,因爲它用於處理服務器數據庫。無論如何,感謝您的支持者! – jeyejow