2009-03-09 12 views
0

私のVS2008 ユニット のDALとの統合テストを実行しているとき、アセンブリのの代わりにmachine.configが読み取られています。アセンブリのApp.Configが無視されています。

はここでコールスタック上の荒廃です:

  • ユニットテストプロジェクトはDataLayerプロジェクト
  • MyDataLayerクラスにメソッド呼び出しは、基本クラスから継承しています。メソッドはGetStuff()
  • と呼ばれ、基底クラスはSystem.Configurationを使用しています。すべての良い。
  • コードでこのプロパティを呼び出します。ConfigurationManager.ConnectionStrings["MyConnStr"]は、明らかに見つからないため実際にはnullを返します。
  • MyDataLayerクラスをチェックすると、うまくいけば、My​​ConnStrがあります。
  • コレクションを確認するConnectionStrings、はい、1つの接続文字列があります。それは私のDALのapp.configは、すべてのヘルプは高く評価されmachine.config

に取って代わられている理由は、私はわからないC:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config

  • に終わったのmachine.configで一つです!

  • 答えて

    4

    これはあなたに当てはまりますが、構成文字列がDataLayerプロジェクトではなくユニットテストプロジェクトのapp.configにあることを確認する必要があるかどうかは不明です。 Visual StudioでSettings.settingsグリッドの値のいずれか(行)を編集しながら

    [プロパティ]ペインでGenerateDefaultValueInCod電子属性に気をつけろ(VS2008:これは、何人かの人々はSettings.settingsApp.configを扱うに役立つかもしれない

    +0

    レイ、あなたはモンスターです!私がしなければならなかったことは、System.Configurationのリファレンスと、DataLayerプロジェクトのApp.ConfigをUnitTestプロジェクトにコピー/共有することだけでした。ブラボー! –

    2

    私の場合)。

    GenerateDefaultValueInCodeをTrueに設定すると、デフォルト値がexe(またはdll)にコンパイルされます。プレーンテキストエディタで開くと、そのファイルに埋め込まれています。

    私はコンソールアプリケーションで作業していましたが、exeファイルにデフォルトがあった場合、アプリケーションは常に同じディレクトリにある設定ファイルを無視しました!

    非常に悪夢で、これに関する情報はインターネット全体ではありません。

    関連する問題