|
分類:[インストーラ全般]
2009/01/23(Fri) 13:12:26 編集(投稿者) 2009/01/23(Fri) 11:48:17 編集(投稿者) 2009/01/23(Fri) 11:46:50 編集(投稿者)
開発環境:VS2008 Pro OS :Vista Bisiness
こんにちは。VS2008のセットアッププロジェクトでどうしても回避 できない現象にはまってしまったので、質問させて頂きます。
以下のような依存関係のあるプロジェクト構成で、
A.exe---a.dll | --b.dll
B.exe---a.dll | --c.dll
(a.dllは共通ライブラリのDLLです。)
新規にセットアッププロジェクトをソリューションに追加し、 そのセットアッププロジェクトにa.exeを作りだすプロジェクトの プロジェクト出力を追加(b.exeについても同様に追加)すると、 「見つかった依存関係」にa.dll、b.dll、c.dll が追加されます。 そのうちa.dllに関してはA.exe,B.exe両方から参照されているので、 2つ追加され、そのままビルドすると、おなじみの 「警告: 複数のオブジェクトのターゲットの場所が同じです。」が発生します。
外国の方で同じ現象にさいなまれている方があるようで、掲示板に書き込みを 見つけましたが、解決には至っておられないようです。 厳密名を付けているアセンブリの参照とそうでないアセンブリの参照の時に 発生するといった内容でしたが、当方は厳密名はつけておりませんし、 そもそも参照はすべてプロジェクト参照です。
で、ここからが質問したいポイントです。
dllのインストーラは別で用意することにして(理由は諸々あります。) 上記で作成したセットアッププロジェクトではA.exe,B.exeのみをインストールする ようにしようと、「見つかった依存関係」に表示されているdllのexcludeプロパティ をfalseに変更し、ビルドしたところ希望通りに作成できました。
が、
ソリューションを閉じ、再度VSを起動すると、falseに設定したexcludeプロパティ が勝手にTrueになっており、それに気付かずビルドすると、 「警告: 複数のオブジェクトのターゲットの場所が同じです。」が発生します。
実は上記に書かせて頂いた構成は当該の環境をデフォルメしたものでして、 本当はもっと依存しているdllの数が多く、2つ重複するものもあれば、 4つ重複してくるものもあります。
ですので、毎回excludeを設定して回るわけにもいかないので困っています。
ずっと現象を切り分けた結果、「見つかった依存関係」に表示されている内容の 内、複数の参照先から参照されているdll(重複して表示されているdll)だけが、 ソリューションを再度開いた時にexcludeプロパティがtrueになるようです。 しかも、プロジェクトファイル(.vdproj)内をテキストエディタで確認すると、 ファイルに記録されているexcludeプロパティはfalseとなっています。 (VSS管理もしておりますので、履歴等確認しても更新された形跡がありません) このことからIDEのバグかと推測する余地があるのですが、確信に至らず 質問させて頂いた次第です。
長文になりましたが、もし回避策等ご存じの方がおられましたら 相談に乗って下さい。 宜しくお願い致します。
|