- ベストアンサー
VisualStudio2005
お世話になります。 例えば、同一ソリューション内で2つのプロジェクトがあったとします。どちらにも複数のソースファイルがあります。 このとき一つ目のプロジェクトAのとあるクラスaを、プロジェクトBから参照したいとします。 現在この状況でクラスaの書かれているソースファイルをコピーしプロジェクトBに挿入しているのですが、これでは管理が面倒ですし、スマートではないです。 きっとうまい方法でプロジェクトAのクラスaをプロジェクトBから参照する方法があるのだと思っています。 知っている方よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
プロジェクトBの「ソリューションエクスプローラ」-「参照設定」で「参照の追加」により表示する「参照の追加」ダイアログの「プロジェクト」タブで「プロジェクトA」を選択し「OK」します。 プロジェクトBにプロジェクトAの参照が追加できます。 プロジェクトBでプロジェクトAのクラスaのコードを書く場合には、Namespaceを意識して記述すれば良いです。 プロジェクトA=namespaceなら プロジェクトA.クラスa obj = new プロジェクトA.クラスa(); などで利用できます。(C#) (Using プロジェクトA;を定義すれば、「クラスa」でOKです) 1つのコードを複数のプロジェクトで利用できるようになり、メンテが楽になります。
その他の回答 (2)
- Hayashi_Trek
- ベストアンサー率44% (366/818)
プロジェクトBにクラスaを追加するときに ファイル選択ダイアログで「リンクとして追加」にすれば プロジェクトB内に実態が作られることがありません。 (私も最近知ったばかりです)
お礼
回答ありがとうございます。 このやり方ですと、同一ソリューション内とかにかかわらず、追加できるので便利ですね。ありがとうございました。
- anmochi
- ベストアンサー率65% (1332/2045)
両方ともexeのアセンブリである場合、こいつはなかなかやっかいだ。Visual Studio 2005のプロジェクトはソースやリソースを自分の配下に置きたくて仕方がない。 クラスaをライブラリにするのが本筋なのだろうが、なかなかそうもいかないのでしょうね。できるのであればそうするべきでしょう。 場当たり的な対処としては2つ。1つ目はとてもおすすめできる案では無いのだが・・・・そうねぇ・・・・NTFSには「シンボリックリンク」という機能がある(ハードリンクもあるけど)。これは、UNIX系列のOSでは常識なのだが、複数のフォルダに1つのファイルが存在する機能だ。パワフルなショートカットと思っていただいても良い。で、NTFSにはあるのだが、Windows 2000やXPでは、そのままでは使えない。これを使えるようにするフリーソフトがあるので「シェル拡張 シンボリックリンク」で検索の事。これで、1つのファイルをそれぞれのプロジェクトに納める事が可能となる・・・・ああ、なんて情けない仕様。 もう一つはお金がかかるね。Visual SourceSafe 2005というソフトを使うと、複数のプロジェクトでクラスaを共有する事ができる。さらに、誰かがプロジェクトAでクラスaを直して、他の誰かがプロジェクトBでクラスaを直したためにバッティングしてしまうという事がなくなる。ただ、このソフト、高い! 開発者一人につき9万円もする。CVSやSVNで同じ事ができるかどうかは寡聞にして知りません。 私の頭では以上、3つの案くらいしか浮かばないかなぁ。eclipseみたいにプロジェクト配下の一部分を他の場所に設定できれば良いんだけどね。 ただ、私はやった事無いので分からないが、一つのソリューション内にプロジェクトAとBを両方入れ、BからAを参照すると、ひょっとするといけるのかも知れない。プロジェクトAがdllの場合はこれでいけるが、exe同士だと、分からないな。
お礼
回答ありがとうございます。 今回は求めていた回答がほかの2名の方が近いのでポイントはないのですが、大変勉強になりました。シンボリックリンクは初めて聞きました。 VSSもあまり触ったことがなかったので、なるほどと思いました。 またわからないことがありましたらよろしくお願いします。
お礼
回答ありがとうございます。 これは、まさしく求めていた回答です。これは、すごく便利ですね。 ありがとうざいました。