C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.54913 の関連記事表示

<< 0 >>
■54913  Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ コリアンダー -(2010/11/09(Tue) 13:36:58)

    分類:[.NET 全般] 

    VS2008のセットアッププロジェクトで、以下のサイトを参考にカスタム動作を行っています。

    http://dobon.net/vb/dotnet/deployment/customaction.html

    そこで、セットアップのソリューションにセットアッププロジェクトとカスタム動作用のプロジェクトを含めているのですが、
    インストールするEXEとカスタム動作のプロジェクトで、同じ名前のdll(別途作成したもの・内容は全く同じ)を参照しているため、
    セットアッププロジェクトの「見つかった依存関係」およびファイルシステムの「アプリケーションフォルダ」内に
    このdllが重複して表示されます。
    そのため、そのままビルドすると、「複数のオブジェクトのターゲットの場所が同じです(作成したdll名)」という警告メッセージが出るため、
    プロジェクトを開くたびに重複したdllの片方を除外してビルドを行っています。

    いちいちプロジェクトを開くたびに片方のdllを除外せずとも、警告なくビルドする方法はあるでしょうか?
    ちなみに、インストールするEXE・カスタム動作用クラスおよびこれらが参照するdllはVB(2008)で作成しています。
親記事 /過去ログ92より / 関連記事表示
削除チェック/

■54914  Re[1]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ shu -(2010/11/09(Tue) 14:09:33)
    No54913 (コリアンダー さん) に返信
    > インストールするEXEとカスタム動作のプロジェクトで、同じ名前のdll(別途作成したもの・内容は全く同じ)を参照しているため、
    同じdllを参照するようにすればいい気がします。プロジェクト参照で同じプロジェクトを参照でも可。
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54916  Re[2]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ コリアンダー -(2010/11/09(Tue) 15:21:15)
    2010/11/09(Tue) 15:22:14 編集(投稿者)

    No54914 (shu さん) に返信
    > ■No54913 (コリアンダー さん) に返信
    >>インストールするEXEとカスタム動作のプロジェクトで、同じ名前のdll(別途作成したもの・内容は全く同じ)を参照しているため、
    > 同じdllを参照するようにすればいい気がします。プロジェクト参照で同じプロジェクトを参照でも可。

    アプリケーション(インストールするEXE)のプロジェクトで参照しているdllと、カスタム動作のプロジェクトで参照している
    dllは同じパスにあるものなのですが、セットアッププロジェクトではアプリケーションのEXEファイル(および必要なファイル)のみを
    読み込んでいるため、このEXEの依存関係となっているdllも一覧に表示されてしまっています。
    (パス情報を見ると、EXEのあるフォルダ内のdllのようです。)
    根本的に上記方法は正しいやり方ではないのでしょうか?
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54917  Re[3]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ shu -(2010/11/09(Tue) 15:33:22)
    No54916 (コリアンダー さん) に返信
    
    MainExePath\Main.exe             => MainExePath\a.dll を参照
    
    CustomSetupPath\CustomSetup.exe  => CustomSetupPath\a.dll を参照
    
    
    Setup.sln
      ├-- MainExe.prj
     └-- CustomSetup.prj
    
    こんな感じだと思いますが、
      MainExePath\a.dll とCustomSetupPath\a.dll はそれぞれセットアップ先に
    必要なものなので両方セットアップに含まれてしまいます。
    MainExePath\a.dll とCustomSetupPath\a.dll が違うファイルだと中身は同じといっても
    同じとは認識されないので同じものにするか別の名前にする必要があります。
    
    
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54919  Re[3]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ とっちゃん -(2010/11/09(Tue) 17:41:42)
>
    No54916 (コリアンダー さん) に返信
    > アプリケーション(インストールするEXE)のプロジェクトで参照しているdllと、カスタム動作のプロジェクトで参照している
    > dllは同じパスにあるものなのですが、セットアッププロジェクトではアプリケーションのEXEファイル(および必要なファイル)のみを
    > 読み込んでいるため、このEXEの依存関係となっているdllも一覧に表示されてしまっています。
    > (パス情報を見ると、EXEのあるフォルダ内のdllのようです。)
    > 根本的に上記方法は正しいやり方ではないのでしょうか?

    見つかった依存関係にあるファイル(2個あるのですよね?)のうち、いらないほうを除外(コンテキストメニューから選択可能)すれば、怒られなくなりますよ。
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54939  Re[4]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ コリアンダー -(2010/11/11(Thu) 09:27:24)
    No54919 (とっちゃん さん) に返信
    > 見つかった依存関係にあるファイル(2個あるのですよね?)のうち、いらないほうを除外(コンテキストメニューから選択可能)すれば、怒られなくなりますよ。
    >
    はい、ソリューションエクスプローラーで、片方のdllを右クリックで除外にすれば、ビルドで警告は出なくなるのですが、
    その状態で保存してソリューションを閉じ、再度ソリューションを開くと先ほど除外を行ったはずのdllが勝手に復活しているのです。
    もし問題があるとすればどこでしょうか?
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54941  Re[5]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ とっちゃん -(2010/11/11(Thu) 10:01:20)
>
    No54939 (コリアンダー さん) に返信
    > ■No54919 (とっちゃん さん) に返信
    >>見つかった依存関係にあるファイル(2個あるのですよね?)のうち、いらないほうを除外(コンテキストメニューから選択可能)すれば、怒られなくなりますよ。
    >>
    > はい、ソリューションエクスプローラーで、片方のdllを右クリックで除外にすれば、ビルドで警告は出なくなるのですが、
    > その状態で保存してソリューションを閉じ、再度ソリューションを開くと先ほど除外を行ったはずのdllが勝手に復活しているのです。
    > もし問題があるとすればどこでしょうか?

    ためしに両方とも、依存関係から除外して、ソリューションを保存&再読み込みしたらどうなりますか?
    もし、それで復活しないのであれば、その状態からファイルの追加で直接重複するDLLを指定してみてください。

    それでもダメとなったら、ソリューション自身の構成を考え直さないとだめですね。
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54942  Re[5]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ shu -(2010/11/11(Thu) 10:16:22)
    2010/11/11(Thu) 10:16:33 編集(投稿者)

    No54939 (コリアンダー さん) に返信

    Setup.sln
    ├-- MainExe.prj => dll.prjをプロジェクト参照,dllを参照しない
     ├-- CustomSetup.prj => dll.prjをプロジェクト参照,dllを参照しない
     ├-- dll.prj
     └-- Setup.prj
    ├-- MainExe.prj の出力
    ├-- CustomSetup.prj の出力
    └-- dll.prj の出力

    これで出来ないですか?
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54947  Re[6]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ コリアンダー -(2010/11/11(Thu) 11:27:24)
    >とっちゃんさん
    両方とも、依存関係から除外して、ソリューションを保存&再読み込みすると、両方のdllの除外が消えて、復活してしまいます。

    >shuさん
    EXEやカスタム動作用のプロジェクトでも該当DLLのプロジェクト参照を行い、DLLそのものを参照しない方法ですか...
    DLLは他でも使用しているので、別でメンテナンスを行っているのでDLL参照を行っているのですが、
    プロジェクト参照にするのが一般的なのでしょうか?
    そうであればそのように再検討しますが、ビルドの度にDLLの除外を行うのにも慣れてきたので...
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54949  Re[7]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ shu -(2010/11/11(Thu) 11:58:07)
    No54947 (コリアンダー さん) に返信
    プロジェクト参照が大変なら
    
    Setup.sln
      ├-- MainExe.prj  => <aaaa>\aaa.dllを参照する
     ├-- CustomSetup.prj => <aaaa>\aaa.dllを参照する
     └-- Setup.prj
            ├-- MainExe.prj  の出力
            └-- CustomSetup.prj の出力
    
    または
    
    Setup.sln
      ├-- MainExe.prj  => <aaaa>\aaa.dllを参照する
     └-- Setup.prj
            ├-- MainExe.prj  の出力
            └-- CustomSetup.exe
    
    CustomSetup.sln
      └-- CustomSetup.prj  => <aaaa>\aaa.dllを参照する
    
    として<aaaa>\aaa.dll作成時、必ずMainExe.prj とCustomSetup.prj  の
    ビルドをしなおす
    
    とか
記事No.54913 のレス /過去ログ92より / 関連記事表示
削除チェック/

■54950  Re[8]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ コリアンダー -(2010/11/11(Thu) 12:10:52)
    No54949 (shu さん) に返信
    > (略)
    > として<aaaa>\aaa.dll作成時、必ずMainExe.prj とCustomSetup.prj の
    > ビルドをしなおす

    はい、まさにご指摘の通り、一部EXEのビルドのし忘れでした。
    No.54948の通り、自己解決したことをご報告します。
    お騒がせしました。
記事No.54913 のレス / END /過去ログ92より / 関連記事表示
削除チェック/

■54948  Re[7]: Setupプロジェクトで重複する参照dllをひとつにしたい
□投稿者/ コリアンダー -(2010/11/11(Thu) 11:50:55)
    自己レスです。
    原因が分かりました。
    インストーラに含まれる別のEXEファイルの依存関係を見てみると、このEXEが参照している該当DLLのバージョンが古いことが分かりました。
    このEXEの参照DLLのバージョンを合わせたところ、問題は解決しました。
    dllのパス情報を見ただけでは分かりませんでした。
    みなさまにはお騒がせしてしまい、申し訳ありませんでした。
記事No.54913 のレス / END /過去ログ92より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -