1

DAL に対してVS2008ユニットmachine.config統合テストを実行すると、アセンブリのapp.config.

コール スタックの概要は次のとおりです。

  • 単体テスト プロジェクトには、DataLayer プロジェクトを呼び出すメソッドがあります
  • MyDataLayerクラスは基本クラスから継承します。メソッドが呼び出されますGetStuff()
  • 基本クラスは を使用してSystem.Configurationいます。すべて良い。
  • コードでこのプロパティを呼び出すと、ConfigurationManager.ConnectionStrings["MyConnStr"]明らかに見つからないため、実際には null が返されます。
  • クラスをチェックすると MyDataLayer、はい、MyConnStr があります。
  • コレクションを確認するとConnectionStrings、はい、接続文字列が 1 つあります。終わったのはmachine.configのものですC:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config
  • なぜ私の DALapp.configmachine.config

どんな助けでも大歓迎です!

4

2 に答える 2

5

これが当てはまるかどうかはわかりませんが、構成文字列が DataLayer プロジェクトではなく、単体テスト プロジェクトの app.config にあることを確認する必要があります。

于 2009-03-09T03:47:48.603 に答える
2

これは、とを扱う一部の人々に役立つ可能性がありSettings.settingsますApp.config

GenerateDefaultValueInCodVisual Studio(私の場合はVS2008)のSettings.settingsグリッドの値(行)を編集している間、[プロパティ]ペインのe属性に注意してください。

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

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

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

于 2009-08-26T08:51:47.880 に答える