2013-12-16 101 views
5

當我試圖通過創建應用程序配置文件,如果不存在,C#

ConfigurationManager.OpenExeConfiguration(filePath); 

它返回一個例外,打開我的應用程序的配置文件,因爲沒有文件。但是我需要在這種情況下創建這個文件。但據我所知,配置文件創建通過添加在VS像How to: Add an Application Configuration File to a C# Project

那麼,如何以其他方式創建此文件?

+0

爲什麼如果用戶刪除了它,你可以創建配置文件?打開文件之前檢查文件是否存在(或處理異常),如果找不到配置文件,則使用默認值 –

+0

我認爲用戶不會刪除它。文件在開始時不存在。 –

+0

這只是一個文本文件 - 您可以像創建任何其他文本文件一樣創建它。但_proper_方法是在_design time_將其包含在您的項目中。 –

回答

11

如果你真的要在運行時創建一個空的配置文件,你可以做這樣的事情,但要注意的是,如果配置文件已經存在,這個代碼將覆蓋它

System.Text.StringBuilder sb = new StringBuilder(); 
sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?>"); 
sb.AppendLine("<configuration>"); 
sb.AppendLine("</configuration>"); 

string loc = Assembly.GetEntryAssembly().Location; 
System.IO.File.WriteAllText(String.Concat(loc, ".config"), sb.ToString()); 
+1

「sb.toString()」應該是「sb.ToString()」,否則就是完美的答案。謝謝! –

+1

很棒的@RobVermeulen,謝謝!我編輯了答案。 –

+0

這是一半的答案。 – drowa

2

剛去App.config文件屬性並更改複製到輸出目錄從設置不要複製始終複製(或複製如果新)。這將在項目構建期間自動創建配置文件。

+0

如果項目中沒有'App.config',如何創建'myapp.exe.config'? –

+0

@ArtemKyba爲什麼不簡單地將'App.config'添加到項目中? –

+0

客戶希望不添加:) –

1

當您需要訪問它時,此文件是您的應用程序所需要的。 最好的方法是在你寫它的時候用Visual Studio添加它。您必須確保它在安裝時正確部署在目標機器上。

然後,如果它在運行時不在磁盤上,這是一個很好的行爲崩潰。您可以向用戶顯示一條消息(捕獲異常)。

1

爲什麼要以其他方式創建它?它是否確保你總是有一個配置文件,即使用戶刪除它?爲什麼用戶會這樣做?哦,沒關係。

如果你想確保總有一個配置文件,你可以自己創建它,如果它不存在:

if (!File.Exists(configFilePath)) ... 

配置文件只是XML。所以你可以創建一個新文件,並在你想從中讀取一個密鑰之前用缺省數據填充它。

然而,人們會希望用戶不要刪除配置文件。只是在說'。

+0

這種解決方案總是聞起來像競賽狀況; .NET Framework忽略TxF。 – drowa

相關問題