次のシナリオがあります。プロジェクト A は A1 および A2 DLL を参照しています。プロジェクト A は、すべてのアプリケーションで使用できる共通のデータ関連機能を含むライブラリ プロジェクトです。ソリューション X のプロジェクト B とソリューション Y のプロジェクト C は、データ関連の機能を使用するためにプロジェクト A に依存しています。今、次のオプションがあります。
オプション1:
ソリューション X と Y の両方にプロジェクト A を追加し、それぞれのソリューションのプロジェクト B と C にプロジェクト A を「プロジェクト参照」として追加させます。これにより、A.dll、A1.dll、A2.dll が bin フォルダーにコピーされます。 B と C を自動的に投影します。
長所:
- Proj A で何かを変更すると、Proj B と C に自動的に反映されます。
- 前述したように、Proj B と Proj C の bin フォルダーに A.dll だけでなく、A1.dll と A2.dll もコピーされます。
短所:
- Proj A の場所を変更した場合は、両方のソリューションでこれを修正し、Proj A をプロジェクト参照として使用しているすべてのソリューションをビルドする必要があります。
オプション 2:
すべての共通ライブラリ プロジェクトを含む個別の中央ソリューションを作成します。プロジェクト CommonLib を作成し、すべてのライブラリ プロジェクトをプロジェクト参照として追加して、CommonLib がプロジェクト A をプロジェクト参照として参照するようにします。これにより、 CommonLib プロジェクトの bin フォルダーに A.dll 、 A1.dll 、および A2.dll がコピーされます。ここで、ソリューション X および Y のプロジェクト B および C は、プロジェクト CommonLib の bin フォルダーから A.dll を参照する必要があります。
長所:
- プロジェクト A の場所を変更しても、Sol X と Y の修正には影響しません。CommnLib ソリューションである 1 つの場所だけを修正する必要があるためです。
短所:
- proj B の commonlib bin フォルダーから A.dll を参照すると、proj B の bin フォルダーに A1.dll と A2.dll が自動的にコピーされません。に依存しています。
CommonLib プロジェクトの bin フォルダーから A.dll を参照すると、A1.dll と A2.dll が含まれないのはなぜですか? これに対する任意の解決策。
[注: GAC は使いたくない]