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

ところで、アプリケーション構成ファイルの名前はApp.config

于 2012-07-11T10:01:31.293 に答える
0

コンソール アプリケーションで .config の代わりに App.config を使用します。コンソール プロジェクト内で EF6 を使用しようとすると、ここで同じ問題が発生しました。機能しません。試行錯誤の末、設定を app.config に移動しました:)

于 2016-09-13T10:15:56.127 に答える
0

新しい構成をビルド ディレクトリにコピーする必要があるため、プロジェクトを再ビルドする必要があります。

于 2012-07-11T10:30:44.380 に答える