回答:
これに対する1つの良いアプローチは、階段パターンを使用することです。
したがって、DALは1つのプロジェクトにあり、そのインターフェイスは別のプロジェクトにあり、BLLは3番目のプロジェクトにあり、そのインターフェイスは4番目のプロジェクトにあります。
たとえば、ビジネスレイヤーをテストするときは、実際のDALやNHibernateなどをすべてスコープにドラッグするのではなく、DALインターフェイスプロジェクトを参照するだけで、これらのインターフェイスを取得するという考え方です。
私の知る限り、このパターンは彼の著書「C#によるアダプティブコード:設計パターンとSOLID原則によるアジャイルコーディング」のGary McLean Hallの作成です。