質問: vb dllプロジェクトについて いつもお世話になってます。 vb6.0で開発を行っております。vbのdllを作成しております。 そこで、お聞きしたいのが、dllプロジェクトのプロパティの中に、コンポーネントという項があるのですが、 その中のバージョンの互換性について教えていただきたいと思っております。 まず、根本的にこれは設定をするとどういうことになるのでしょうか?バージョンの互換性という意味がよくわからないので、教えていただきたいと思います。 それと、「互換なし」、「プロジェクト互換」、「バイナリ互換」はどう使い分けるものなのでしょうか? ヘルプを見てもよくわかなかったので、教えていただきたいと思っております。 何卒よろしくお願い申し上げます。
回答: こんにちは。 aspでactivex.dllを作るので多少は分かります。 作成したdllを配布する時にレジストリに登録するのですが、 dllに改変があった場合にレジストリの再登録が要るかに関わります。 具体的にはクラスid等がレジストリに登録されますが、 dllを再コンパイルする時にクラスid等を振り直すかどうかの指定のようです。 バインドする方のプロジェクト(comクライアント)の参照設定のやり直しにも関わります。 [互換なし] 再コンパイルのたびにクラスid等は全て変更されます。 [プロジェクト互換] クラスidとライブラリidは変更せず、インタフェースidのみが変更されます。 comクライアントで「activexコントロールのアップグレード」にチェックがあれば、プロジェクトを開く時に最新の参照設定情報が読み込まれます。 [バイナリ互換] 3種類とも変更されません。 従ってcomクライアントの変更が要らないことになります。 但し、 1.実装済みメソッドの戻り値の型を変更できない。 2.引数の型及び個数を変更できない。 3.メソッドを追加した場合、comクライアントの再コンパイルが必要。(createobjectは別) の制限があります。 これを知るのに役に立ったのは「visualbasicmagazine」の2000年8月号でした。 バックナンバーを探して見つかれば詳しい記事があります。