Un client souhaite utiliser nos DLL .NET à partir de VB6. Ils sont conçus pour prendre en charge l'interopérabilité inverse et tout fonctionne bien ... sauf: Il existe deux programmes VB6 distincts dans deux répertoires différents. Il semble qu'il est nécessaire de faire l'une des:Comment un programme COM trouve-t-il une DLL .NET enregistrée pour COM Interop?
- Copiez le DLL .NET dans les deux répertoires, ou
- Installez la DLL .NET dans le GAC
Ceci est l'observation du client et a également soutenu par le RegAsm documentation:
Après l'enregistrement d'un assemblage à l'aide Regasm.exe, vous pouvez l'installer dans le cache d'assemblage global afin qu'il peut être activé à partir de n'importe quel client COM. Si l'assemblage ne sera activé que par une seule application, vous pouvez le placer dans le répertoire de cette application.
Je suis confus sur ce point.
Premier point de confusion:
Pour autant que je comprends, le moteur d'exécution COM localise la DLL en utilisant l'ID ID Prog/Class. Lorsque je regarde dans le Registre à l'entrée ID de classe, je vois le chemin d'accès complet à la DLL .NET dans la clé CodeBase. Pourquoi est-ce qu'un programme COM utilisant l'ID Prog/ID de classe ne localise pas la DLL .NET en utilisant le CodeBase?
Deuxième point de confusion:
Le GAC est spécifique à .NET. Comment est-ce impliqué dans la résolution des références COM?