同じマシン上で同時に同じ制御(DLL)の2つの異なるバージョンを使用しますか?
質問
私は自分のプロジェクトでa3rdパーティのコンポーネントを使用していると私は最近、「A」
バグを修正した最新バージョンにアップグレード それはバグ「A」を解決しつつ、バグ「B」を導入して残念ながら、別の部分は、完全に不安定得た。
「A」および「B」は完全に異なる状況であるので、私は制御の両方のバージョンがインストールされているバグ「B」は関連しない一つの場合に1、ケース内の他のいずれかを使用しますそのバグ 'A' は関係ありません。
もちろん、すべての適切な修正は、サードパーティの開発者によって発行されるまで
誰もこれを行うことができますどのように任意の考え?
R
p.s。 DLLのニーズがします。regsvr32で登録されるように...私は、これはそれ自体が検索可能になりポイントである疑いがある...私たちは二重の別の名前でものを登録することができ、それがここにあるいくつかの策略と願っています。
解決
あなたは、COMコンポーネントの異なるバージョンを展開し、登録なしにそれらを使用することができます。登録無料COMのWindows XPで導入し、適切な設定でマニフェストファイルをデプロイする必要がありますされています。
のこの機能の登録 - 無料COMコンポーネントのアクティベーションを見てくださいのとの DLL地獄を脱出: 簡素化アプリケーションのClickOnceでの展開と登録 - 無料COM のを。
他のヒント
あなたは、あなたのマシン上で同じタイプの1 COM DLLを登録することができます... GACはネット
によって導入された理由です、その後、あなたは正しい軌道に乗っている、あなたは二回/ GUIDを異なる名前を使用して登録する必要があります。
編集:複数のCOM登録についてDIVOの回答を参照してください... XPた後、あなたは今、この操作を行うことができます...
しかし、その前に、この(別の登録のGUIDを自分でソースコードを持って、新しいDLLを再コンパイルの短い)を行うための唯一の方法は、手動でタイプライブラリを変更して、新しいものと既存のGUIDを置き換えることでした。これは非常に困難であろう。 (これを行うためのツールが存在するかもしれないが、私ドンがある場合、それのトンを知っている)タイプライブラリ、によって、DLL自体に埋め込まれてもよいし、あるいは、別の* .tlbファイル(共通であってもよく、 VB6コンポーネントの)
、その後、レジストリが唯一の視覚スタジオに統合するために必要な場合があり、そしてそれはあなたがそれを使用している実行可能ファイルのアプリケーションフォルダにDLLを単にコピーするのに十分であろう...