2012-01-13 12 views
2

私のC#4ソリューションには3つのプロジェクトがあります。C#ソリューションをどのように整理すればよいですか?

  • MooDB:は、NHibernateのマッピング、プレゼンテーションクラスを自分のドメインオブジェクトを持っています。
  • データ:私はしました

    enter image description here

    はここ

はスクリーンショットです私のテストクラスを持っている:は(NHibernateはを使用して)私のデータアクセス層のクラス

  • がテストを持っていますTestプロジェクトにapp.confighibernate.cfg.xmlがあることに気付きました。これは正しいようです。 Dataプロジェクトにはapp.configがありません。私はDataプロジェクトにlog4netを使用したいので問題はありますが、そこにはがなければ設定できません。

    私のソリューションを設定するにはどうすればよいですか?プロジェクトごとに、またはソリューション全体としてapp.configがあるでしょうか? Testプロジェクトに1つ必要ですか? 「ベストプラクティス」に従って編成しましたか?

  • +1

    私は、ホスティングアプリケーションの 'app.config'に接続文字列などの設定を入れて、クラスライブラリ(この場合は' Data')に渡す傾向があります。クラスライブラリをアプリケーション固有の外部リソースに依存させることは悪い考えです。 –

    答えて

    3

    私は通常、最上位層に設定ファイルを表示します。これは通常UIまたはテストです。

    これは、アプリケーションがデータを取得するリポジトリのデータ層を指示しているため、これは意味があります(少なくとも私にとって)。あなたのテストレイヤーは、おそらく実稼働アプリケーションとは別の場所に行きます。だから、データプロジェクトの設定は私にはあまり意味がないでしょう...それは最下位レイヤーで、最下位レイヤーを構成しています。

    1

    設定を変更する場所を1つにしたい場合は、メインプロジェクトにファイルを設定し、post-build eventsを使用して、出力ファイルを他の実行可能プロジェクトのbinフォルダにコピーします。

    メインアプリケーションで使用する構成が、単体テストで使用する構成と同じかどうかを検討する必要があります。そうでなければ、別々の設定ファイルは絶対に大丈夫です。

    +0

    混乱しているのは、設定ファイルがいつ読み込まれるか分かりません。 RepoTests.csを右クリックし、すべてのテストを実行すると、どの設定ファイルが読み込まれますか?もし 'Test'が' Data'を参照していれば 'Test'プロジェクトのものか他の設定ファイルも読み込まれますか? –

    +1

    読み込まれた設定ファイルは、実行されている実行可能(またはテスト)プロジェクトに関連付けられているものです。これはよくある質問です(http://stackoverflow.com/questions/594298/c-sharp-dll-config-file)。しかし、それについて考えてみると、本番アプリケーションの実行時に使用するlog4netの設定は次のようになります。あなたがテスト中に望むものとは異なる可能性があります。そのため、設定はコードではなく設定ファイルで行われます。 –

    +0

    ああ、感謝します。 –

    関連する問題