DOBON.NET DOBON.NETプログラミング掲示板過去ログ

他のソリューション所属のクラスライブラリを使用する方法

環境/言語:[VisualC# 2010 Express]
分類:[.NET]

Visual C# 2010 EX
Windows 7で開発を行っております。

アプリAを作成するために、EXのウィザードからWindows アプリーケーションプロジェクトBを作成しました。
プロジェクトBは、ソリューションCに所属しています。
従って、ソリューションCを起動して、アプリAの開発をしています。

今回、アプリAで、機能Dが必要となりました。
機能Dは他のアプリEでも気軽に使用したいなと思い、クラスライブラリFで機能Dを実現することにしました。

クラスライブラリFを作成するに際し、EXのウィザードからクラスライブラリ作成ウィザードを実行しました。
現在、クラスライブラリプロジェクトGは、ソリューションHに所属しています。
従って、ソリューションHを起動して、クラスライブラリFの開発を行っております。

そこで質問です。

アプリAがクラスライブラリF(DLLファイル)を参照するのに最も適切なEX上の操作を教えて下さい。

例えば、クラスライブラリFをコンパイルして生成されたDLLファイルをソリューションCの
プロジェクトBのフォルダ内に逐一コピーするようにしたら、
クラスライブラリFをバージョンアップするたびに、上記コピー操作を繰り返さなければなりません。

よろしくお願いします。
ソリューションCのソリューションエクスプローラで、
ソリューション右クリックから追加>既存のプロジェクト
でプロジェクトGを追加して、
プロジェクトBの参照の追加で「プロジェクト」からプロジェクトGを参照する

とすれば良いんじゃないでしょうか。
■No32800に返信(いまさらのカウントダウンさんの記事)
> プロジェクトBのフォルダ内に逐一コピーするようにしたら、

こういう場合は、G を、C と H の双方に含めてみてください。
(この時、G や F.DLL をコピーする必要はありません)

その上で、A と E が F を「プロジェクト参照」するようにすれば、
A も E も D を利用できるようになります。

もしもソリューションは共有させず、バイナリで参照させたいのであれば、
H にてビルドされた F のアセンブリを、特定の任意フォルダー、たとえば
C:\CountDown\ にコピーしておき、レジストリーの
 HKEY_CURRENT_USER\Software\Micosoft\.NETFramework\AssemblyFolders\何某\
なキーに対して、そのパス「C:\CountDown\」を記載しておいてから
Visual Studio を起動してみてください。こうすれば、A や E の
参照設定にて、そのフォルダーのライブラリが利用されるかと。
http://www.atmarkit.co.jp/fdotnet/dotnettips/454vsaddreflist/vsaddreflist.html
http://support.microsoft.com/kb/306149/ja
■No32801に返信(Hongliangさんの記事)
> ソリューションCのソリューションエクスプローラで、
> ソリューション右クリックから追加>既存のプロジェクト
> でプロジェクトGを追加して、
> プロジェクトBの参照の追加で「プロジェクト」からプロジェクトGを参照する
>
> とすれば良いんじゃないでしょうか。

アドバイスありがとうございます。
Hongliangさんのご紹介いただいた方法を試してみました。

ソリューションCにクラスライブラリプロジェクトGが追加され、
アプリAのソース上でクラスライブラリFのメソッドをCallできるようになりました。

また、ソリューションCが保存されているフォルダには、クラスライブラリプロジェクトGのファイルがコピーされてくるわけでもないようです。

この場合、ソリューションHでクラスライブラリFを改変し、その後、ソリューションCで、アプリAをコンパイルした場合、上記改変は反映される、という理解でよろしいですか?
Hongliangさん
魔界の仮面弁士 さん

ご回答ありがとうございました。

とりあえず問題なくうまくいっているので
本スレは解決済みにしたいと思います。

ありがとうございました。
今後共よろしくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板