次のような構造のソリューションがあるとします。
- Project.DAL - データ アクセス レイヤー。下位レベルのライブラリに依存します (例: Oracle.DataAccess w/copy local = true)
- Project.BLL - ビジネスロジック層。プロジェクトとして Project.DAL を参照します。
- Project.UI - UI レイヤー、実行可能ファイルにコンパイル、Project.BLL を参照、デフォルト プロジェクト
Project.UI がコンパイルされると、VS は Project.DAL.dll を出力ディレクトリにコピーするほどスマートですが、クライアントへの配布のために Oracle.DataAccess も出力ディレクトリにコピーする必要があることを理解するほどスマートではありません。
なぜそうなるのか説明できる人はいますか? GAC で Oracle.DataAccess を認識し、クライアントも GAC にそれを持っていると想定しているからでしょうか?
それほど大きな問題ではありませんが、新しいアセンブリ参照を追加するたびに、ローカルにコピーするように設定し、ビルド スクリプトにもコピーする項目を追加することを覚えておかなければならないのは少し面倒です。
ベストアンサー1
もう一つ。
あなたが参照されたDLLをコード内で使用しないでくださいまったく、CopyLocalは無視され、コピーしませんそれを出力ディレクトリに保存します。