質問: はじめまして、現在Visual Studioを使い簡単なアプリケーションを作っているのですが、一点つまったところがあったので質問させていただきます。 以下のC++で書かれた3ファイルがあります ・app.exe(A.dllを参照) ・A.dll(B.dllを参照) ・B.dll app.exe+A.dllのみを配布する場合、 Visual Studio 2013でA.dllをビルドするときにB.dllを含めてビルドすることは可能でしょうか。 app.exeには手を加えたくないので、ILMerge以外の方法で探しております。 回答、よろしくお願いします。
回答: 仮に B.dll が Microsoft の提供しているものだとすると、 その B.dll は `Microsoft Update` で更新されうるものなわけです。 他社 DLL を自作プロダクトに「組み込む」形で配布しちゃうと Microsoft (だけでなく Apple なり Oracle なりどこであれ) がそれを更新したら、 自作プロダクト側でも組み込み直し、再配布が必要と言うことになりそうです。 「再配布可能なフレームワーク」なんてものは当該メーカ側で用意したインストーラで 一式ごそっと入れちゃうのがお作法だと思います (`vcredist_x86.exe` みたいに) 。 その後のセキュリティ系更新等があっても `Microsoft Update` で更新してね、で済みます。 そもそもオイラ的には EXE と DLL だけ配布するってのはありえなくって [wix](/questions/tagged/wix "'wix' のタグが付いた質問を表示") や [installshield](/questions/tagged/installshield "'installshield' のタグが付いた質問を表示") 等でインストーラ作って配布するものだと思います。 自作インストーラが、再配布可能なフレームワークのインストーラを呼ぶのは自然な話、 お作法にかなっている普通の方式です。 あまり凝ったことを考えずにフツーに配布するのが良い、に1票を投じておきます。