2012-07-11 107 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为我做:)

相关问题