1

プロジェクトでサードパーティ コンポーネントを使用しています。最近、バグ「A」を修正した最新バージョンにアップグレードしました。

残念ながら、バグ「A」は解決しましたが、別の部分が完全に不安定になったため、バグ「B」が導入されました。

「A」と「B」は完全に異なるコンテキストにあるため、両方のバージョンのコントロールをインストールして、バグ「B」が関連しない場合に 1 つを使用し、バグ「 A' は関係ありません。

もちろん、サードパーティの開発者によって適切な修正が発行されるまでのすべて

これをどのように行うことができるか考えた人はいますか?

R

ps dll を regsvr32 に登録する必要があります...これが、それ自体が検出可能になるポイントだと思います...いくつかの策略を使って、別の名前で二重に登録できることを望んでいます

4

3 に答える 3

4

異なるバージョンのCOMコンポーネントを展開し、登録せずにそれらを使用できます。登録不要のCOMのこの機能は、Windows XPで導入されており、適切な設定で.manifestファイルを展開する必要があります。

COMコンポーネントの登録なしのアクティベーションとEscapeDLLHell :ClickOnceと登録なしのCOMを使用してアプリの展開を簡素化するをご覧ください。

于 2009-10-16T13:47:36.667 に答える
0

マシンに登録できるのは同じタイプのCOMdllを1つだけです...これがGACが.Netによって導入された理由です

于 2009-10-16T13:45:05.843 に答える
0

サード パーティ コンポーネントが COM コンポーネントである場合は、正しい方向に進んでいます。別の名前/Guid を使用して 2 回登録する必要があります。

編集:複数のCOM登録に関するdivoの回答を参照してください... XPの後、今これを行うことができます...
しかし、それ以前は、これを行う唯一の方法です(ソースコードを取得し、異なる登録GUIDで新しいdllを自分で再コンパイルすることを除く)、タイプ ライブラリを手動で変更し、既存の GUID を新しいものに置き換える必要がありました。これは非常に難しいでしょう。(これを行うためのツールが存在する可能性がありますが、存在するかどうかはわかりません) ちなみに、タイプ ライブラリは dll 自体に埋め込まれているか、別の *.tlb ファイル (一般的なVB6 コンポーネント用)

コンポーネントがマネージ コード コンポーネントである場合、レジストリは Visual Studio への統合にのみ必要な場合があり、dll を使用している実行可能ファイルのアプリケーション フォルダーにコピーするだけで十分です...

于 2009-10-16T13:55:21.487 に答える