私の質問は比較的シンプルなので、DLLのクラスを参照するVB6アプリケーションを作成し、そのDLLを実行時に別のものに置き換えることはできますか?DLLのクラスを使用してVB6アプリケーションを作成し、ビルド後にそのDLLをスワップアウトしますか?
私の最初の推測は... VB6ではチャンスではありません。
私の考えはVB.net interop dllに変わりました。ここでそれを行い、VBからinterop dllを呼び出すことができますか?
また、私の推測はノーとは言えませんでしたが、誰かが別のことを知っていればうれしいです。
実際に動作すると思う唯一のものは、.NetのDIですが、私は.net 2または3.5に大きなプッシュで制限されています。その可能性があるかどうかは分かりません。背景に
ので....
私は、特定のサイトが使用するDLLを持っているが、我々はすべての人にそれを出荷したいいけません。代わりに、私たちはVB6ビルドが完了するようにインターフェイスをセットアップしたクローンdllを構築したいと考えています。 それが必要なサイトに到達すると、ダミーdllを置き換えて、代わりにそのバージョンにドロップします。
注:RegFreeCOMはインストール時に使用しますので、必要に応じて再生できるマニフェストファイルがあります。
アイデアをいただければ幸いです。
ニック
があなたの代わりに、DLLへのハード参照のVB6で遅延バインディングを使用できますか? –
これは約10分でテストできます。 DLLプロジェクトを作成し、文字列を返す1つのメソッドで1つのクラスを置き、 "abc"を返すようにコードします。テストハーネスを作成し、参照を追加し、メソッドを呼び出して表示します。今度は新しいプロジェクトに別のdllを書いてください。同じクラス名、同じメソッド名、 "def"を返します。テストハーネスフォルダの最初のフォルダにdllをコピーし、テストハーネスを実行します。私はあなたが新しい文字列を見ると思うが、テストは信じている。 VB6がこのマシンにあれば、私はそれをやるでしょう、おそらくコメントを入力するよりも速いです。 –
これは、アプリケーションではなくDLLにコードを持つ根本的な理由の1つです(コードの再利用/共有は別のものです) –