1

我第一次尝试使用 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

3 回答 3

2

如果您正在进行测试,请尝试模拟您的环境,而不是访问配置文件、数据库等。

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);

BTW 应用程序配置文件应该有 name App.config

于 2012-07-11T10:01:31.293 回答
0

您应该重新构建项目,因为应该将新配置复制到构建目录。

于 2012-07-11T10:30:44.380 回答
0

在控制台应用程序中使用 App.config 而不是 .config。尝试在控制台项目中使用 EF6 时遇到了同样的问题 - 它只是不起作用。经过一堆试验和错误,将设置移动到 app.config 为我做到了:)

于 2016-09-13T10:15:56.127 回答