2012-07-11 108 views
0

我試圖用ConfigurationManager中首次所以這就是我所做的:使用ConfigurationManager中無法讀取配置

1)創建了一個新的項目(TestProject) 2)右擊上TestProject - >添加 - >新建項目 - >應用程序配置文件(名稱:Conf.config) 3)我編輯這樣的文件,所以它的外觀:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="key1" value="output1"/> 
    <add key="key2" value="output2"/> 
    <add key="key3" value="output3"/> 
    </appSettings> 
</configuration> 

現在,如果我嘗試讀取ŧ他的配置我的代碼是告訴我,其空:/

NameValueCollection appSettings = ConfigurationManager.AppSettings; 

    if (appSettings.Count == 0) //always true 
     Console.WriteLine("something is wrong"); 

即使我嘗試ConfigurationManager.AppSettings["key1"]我沒有得到任何輸出。嗯,我在做什麼錯了?

+4

嘗試重命名您的配置文件到'App.config'。 – 2012-07-11 09:58:31

+0

這是WPF,Forms還是ASP.Net應用程序?爲什麼不能將值存儲在web.config或app.config中? – 2012-07-11 10:09:16

+0

@Shaks它的ac#控制檯應用程序 - 我正在使用它,因爲它顯示在本教程中:http://blogs.technet.com/b/vanih/archive/2008/01/25/configurationmanager-class-in- c.aspx – miri 2012-07-11 11:22:03

回答

1

如果你正在做測試,然後嘗試嘲笑你的環境,而不是訪問配置文件,數據庫等

public interface IFooConfiguration 
{ 
    public string Key1 { get; } 
    public string Key2 { get; } 
    public string Key3 { get; } 
} 

實現此接口是這樣的:

public class FooConfiguration 
{ 
    public string Key1 
    { 
     get { return ConfigurationManager.AppSettings["key1"]; } 
    } 
} 

要不是你測試,使用模擬配置(我使用Moq爲例):

Mock<IFooConfiguration> mock = new Mock<IFooConfiguration>(); 
mock.Setup(foo => foo.Key1).Returns("output1"); 
var sut = new Sut(mock.Object); 

順便說一句應用n配置文件應該有名稱App.config

0

您應該重新構建項目,因爲新配置應該被複制到構建目錄中。

0

在控制檯應用程序中使用App.config而不是.config。在試圖在控制檯項目中使用EF6時遇到同樣的問題 - 它不起作用。經過一系列的試驗和錯誤,將設置移動到app.config爲我做:)

相關問題