2011-03-22 52 views
0

我目前遇到了一個我無法解決的問題。僅在調試時纔會讀取App.config

我有一個應用程序,我有這樣的代碼:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", "App.config"); 
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile = Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, "App.config"); 
MessageBox.Show(ConfigurationSettings.AppSettings.Count.ToString()); 

配置文件確實是叫的App.config的應用程序文件夾(我這樣做是因爲我有兩個應用程序讀取/修改相同的配置文件)。

當我通過Visual Studio Debugger啓動它們中的任何一個時,它正確地告訴我我有11個appsettings。但是,當在調試器外部運行時,我得到0.

這裏可能有什麼問題? 我100%確定此代碼在過去有效。

+0

你有沒有嘗試將完整路徑傳遞給App.config而不是相對路徑?也許,app.config文件不能正確解析。 – 2011-03-22 13:15:20

回答

1

我現在終於可以自己解決了。解決的辦法是通過

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
0

它看起來像你沒有傳遞正確的路徑到App.Config。試試這個:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", "App.config"); 
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "App.config"); 
MessageBox.Show(ConfigurationSettings.AppSettings.Count.ToString()); 

注意對Path.GetDirectoryName()的調用。您的代碼正在獲取該exe文件的位置,然後將「App.Config」附加到該文件中,即解析爲不存在的文件。

相關問題