none
複数プロジェクトでのファイル共有 RRS feed

  • 質問

  • VB6.0からVB2005へ移行中のプロジェクトにて困っております。

     

    Aというプロジェクト、Bというプロジェクトがあります。

    これらのプロジェクトは、VB6.0の時にC.vbという

    定数定義ファイルを参照していました。

     

    VB6.0では、プロジェクトフォルダ以外のフォルダのファイルも参照できましたが

    VB2005では各々のプロジェクトフォルダに個別のC.vbが出来てしまいます。

     

    VB2005で、AプロジェクトのプロジェクトフォルダをAAAとし

    BプロジェクトのプロジェクトフォルダをBBBとし

    CCCというフォルダにC.vbを置いた場合に

    A、B各プロジェクトのソリューションエクスプローラで

    CCC\C.vbを参照することはできないのでしょうか?

     

     

    2007年4月19日 5:15

回答

  • もし、C.vbが複数箇所にできて複数バージョンができてしまうことが心配なのでしたら、C.vbを単独のクラスライブラリプロジェクトにしてしまい、A, B 各プロジェクト(各ソリューション)から単にプロジェクト参照するという方法で代替はできないでしょうか。

    一箇所のC.vbがいつも最新となります。

    2007年4月19日 16:15

すべての返信

  • VB2005(2003でもですが)では、できません。

    このような場合、Cプロジェクトを作成し、出来上がったDLLをAプロジェクトとBプロジェクトが参照して使うことになると思いますよ。

    2007年4月19日 10:51
  • おすすめできるかどうかは別にして、できますよ。
    ファイルを追加する際の [既存項目の追加] ダイアログにて、[追加] ボタンの右端の ▼ マークで [リンクとして追加] を選択します。
    2007年4月19日 12:48
  • もし、C.vbが複数箇所にできて複数バージョンができてしまうことが心配なのでしたら、C.vbを単独のクラスライブラリプロジェクトにしてしまい、A, B 各プロジェクト(各ソリューション)から単にプロジェクト参照するという方法で代替はできないでしょうか。

    一箇所のC.vbがいつも最新となります。

    2007年4月19日 16:15
  • ふじさき様、ありがとうございます。DLLとしての参照となってしまうのですね。

    2007年4月19日 23:40
  • TH01様、ありがとうございます。

    理想的に両プロジェクトに別フォルダのc.vbを追加することが出来ました。

    ただ、これがおすすめできない理由がわかりません。

    このような構成のプロジェクトは何か問題があるのでしょうか?

    2007年4月19日 23:43
  • IIJIMAS様、ありがとうございます。

    この方法が一番VB2005っぽい?オブジェクト指向な構成なのかなと感じました。

     

    皆様からのアドバイスを頂いた後、自分でも少し調べてみましたが

    プロジェクトへの「リンクとして追加」はアセンブリを肥大化させる為、好ましくないらしいです。

     

    IIJAMAS様から頂いた手法でC.vbを管理したいと思います。ありがとうございました。

    2007年4月20日 0:25
  • とっくに終わったようですので蛇足になりますが(^^;

     mkaki さんからの引用

    ただ、これがおすすめできない理由がわかりません。

    いえ、おすすめしていない訳ではありませんよ。
    リンクには一長一短があると思いますが、私の返信ではそれらには触れずに、可能だということだけをお伝えしたかっただけです。

    デメリットとして一番に思う点は、あるプロジェクトでリンクファイルに対して行った変更が否応なしに別のプロジェクトに影響を与えることです。当たり前ですが、コンパイルが通らなくなったり、動作が変わってしまったりすることにつながります。

    ただこのデメリットを、常に最新のソースにリンクするというメリットに付随して発生する副作用の1つととらえるのであれば、利用することにも価値は十分あると思っています(なんて回りくどい表現かと)。
    つまり一言で言えば、ご利用は計画的にということで。

     mkaki さんからの引用

    アセンブリを肥大化させる為、好ましくない

    確かにそうかもしれませんが、これは些細なことだと思います(あくまで私見であり、それが重要な場面もあるでしょうが)。[既存項目の追加] のデフォルトがコピーになっているのは、上述したデメリットを重視した結果ではないかと考えています。
    .NET では「アセンブリは不変」という概念がありますが、それと発想の生い立ちは同じだと思います。
    その点、IIJAMAS さんのようにしておくと、.NET のバージョニングも機能させられるのでいいですね~

    2007年4月20日 7:01
  • ソースのリンク参照の最大のデメリットは、ソース管理システム(VSSに限らずです)とすこぶる相性が悪いという点にあります。

    それと、リンク先ファイルの位置とソリューションの物理的なフォルダ構成も影響を受けます。

     

    多分中身が変わるのが、とか肥大化(これ自体は、DLLとして外にいる分までカウントすれば変わりはない)がとかよりも、こっちのほうがずっと大きなデメリットになりえると。

     

    MSとしては、リンク参照するなら、VSSなり、TFSなりのソース管理ツール使ってよ(=買ってよw)というところでしょう。

    もちろん、CVSなどのオープンソースなやつでも問題はありませんけどw

     

     

    2007年4月20日 9:22
  •  mKaki さんからの引用
    この方法が一番VB2005っぽい?

    以前の Visual Studio .NET から存在している方法です。
    開発途中の場合は、プロジェクト参照が強力です。

    オブジェクト指向な構成なのかなと感じました。

    オブジェクト指向とは関係ないですよ。
    むしろ構造化言語時代からの概念です。
    2007年4月20日 11:05