クロス参照アセンブリ
-
14-10-2019 - |
質問
.NETソリューションには3つのプロジェクトがあります。
メインプロジェクトと2つのクラスライブラリプロジェクト。
クラスライブラリプロジェクトを参照する必要があることがわかりました。
それをしてもいいですか? 安全ですか、それともいくつかの考慮事項がありますか?
解決
IDEは、プロジェクトが1つのソリューションにある場合、あなたを許可しません。それを混乱させる微妙な方法があります。ただし、アセンブリ参照がまだ利用できないため、ソリューションをゼロから構築することはできません(つまり、ビルド +再構築)。これをリファクタリングすると、おそらく両方が参照できる第3アセンブリが必要です。
他のヒント
循環参照はです 可能 (コマンドラインといくつかのトリックを介して、IDEを介してではありません)が、大きな痛みです。やらないで!
どちらかを追加します 追加 一般的なタイプのアセンブリ、または2つのライブラリをマージします。
多くの点で、より少ない方が簡単です...無数のDLLは、あなたが純粋さを達成したことを意味しません - それは単なる混乱です。
私がこの問題に遭遇したとき、私は持っています プロパティのみを持つクラスを作成しました。 になり得る Employee
, Customer
, Product
, 、 なんでもいい。これらのクラスは他のプロジェクトを参照する必要はないため、複数のプロジェクトがそれらを参照できます。
それらのオブジェクトに属する方法(Employee
, Customer
, Product
)その後、他のプロジェクトで自分のクラスに入ります。
これに遭遇した状況の1つは、3層のアプリケーション(プレゼンテーションレイヤー、ビジネスレイヤー、データアクセスレイヤー)にあります。 DALにデータを取得し、BLLに返される従業員オブジェクトを入力してほしい。従業員のクラスがBLLにあり、プロパティとメソッドの両方がある場合、DALに従業員オブジェクトを入力してBLLに返す簡単な方法はありません。BLLにはDALへの参照が必要なので、 DALは順番にBLLを参照できません。プロパティのみのクラスで個別のプロジェクトを作成する(Employee
, Customer
, Product
)この問題を解決する1つの方法です。
「クロスリファレンス」によって、次のことをしたい場合は、次のことを意味します。
1)プロジェクト 主要 への参照が含まれています 図書館アルファ と ライブラリベータ
2)プロジェクト 図書館アルファ への参照が含まれています ライブラリベータ
3)プロジェクト ライブラリベータ への参照が含まれています 図書館アルファ
その後、いいえ。 Visual Studioは構築できません 主要 それが構築されるまで アルファ と ベータ. 。構築できません アルファ それが構築されるまで ベータ. 。そして、それは構築することができません ベータ それが構築されるまで アルファ. 。したがって、何も構築できません。