ある顧客は、VB6から.NETDLLを使用したいと考えています。これらは逆相互運用をサポートするように設計されており、すべて正常に動作します...ただし、次の点を除きます。2つの異なるディレクトリに2つの別個のVB6プログラムがあります。次のいずれかを実行する必要があるようです。
- .NET DLLを両方のディレクトリにコピーするか、または
- .NETDLLをGACにインストールします
これはお客様の見解であり、RegAsmのドキュメントでもサポートされています。
Regasm.exeを使用してアセンブリを登録した後、それをグローバルアセンブリキャッシュにインストールして、任意のCOMクライアントからアクティブ化できるようにすることができます。アセンブリが単一のアプリケーションによってのみアクティブ化される場合は、そのアプリケーションのディレクトリに配置できます。
私はこの点で混乱しています。
混乱の最初のポイント:
私が理解している限り、COMランタイムはProg ID /ClassIDを使用してDLLを検索します。レジストリでクラスIDエントリを確認すると、CodeBaseキーに.NETDLLへのフルパスが表示されます。Prog ID / Class IDを使用するCOMプログラムが、CodeBaseを使用して.NET DLLを見つけられないのはなぜですか?
混乱の2番目のポイント:
GACは.NETに固有です。COM参照の解決にどのように関与していますか?