J'ai créé un assembly fortement signé dans Visual Studio 2008 par rapport à la structure .NET 3.5 (j'ai également essayé le framework 2.0). J'ai exposé une classe comme COM visible, et je suis capable de trouver cette DLL dans le navigateur d'objets de Visual Studio 6 pour Visual Basic. Je peux créer un exe dans VB6 et exécuter cet exe directement à partir de Windows Explorer, et tout fonctionne bien. Cependant, lorsque je tente d'exécuter le projet VB6 dans Visual Studio 6 l'ensemble .net ne veut pas charger et échoue avec l'erreur suivante:Visual Studio 6 ne peut pas charger une DLL COM compilée dans .net 2.0
ActiveX component can't create object
Je reçois aussi cette erreur au lieu de celui ci-dessus, en fonction sur la façon dont je me inscrire la dll:
-2147024894 File or assembly name (myComponentName), or one of its dependencies, was not found.
Ou ceci:
-2146233082 Automation error
J'ai essayé tout ce que je peux penser. Il semble que ce serait un problème avec la façon dont VS6 s'exécute en mode débogage. Peut-être que l'environnement est différent avec un chemin manquant à ceci ou à un autre dll. J'ai ce problème sur deux machines de développement différentes. Je peux également faire référence à une DLL COM .net qui a été créée par un autre développeur en utilisant une ancienne version de Visual Studio .net. J'ai même ouvert la dll avec walker de dépendances et je n'ai pas eu d'erreurs évidentes.
MISE À JOUR: moniteur Proc dit que VB6 est à la recherche de mon dll dans le studio VB6 répertoire "C: \ Program Files \ Microsoft Visual Studio \ VB98 \ MyDLL.DLL" au lieu où la DLL est enregistrée . Je mis la dll là-bas et enregistré, maintenant je reçois une nouvelle erreur:
-2146234105 (80131107) "The format of the file 'MyDllName' is invalid."
Alors, pourquoi studio cherche mon DLL et il pas où il est enregistré? Comment puis-je résoudre ce problème? À tout le moins, comment puis-je obtenir le dll de travailler dans le répertoire "C: \ Program Files \ Microsoft Visual Studio \ VB98 \" dossier
Mise à jour finale/SOLUTION: Ok, alors je me suis le problème . Cela a à voir avec VB6.exe étant verrouillé hors de la version du framework .net que j'utilisais (2.0 ou 3.5). J'ai trouvé ce fichier « C: \ Program Files \ Microsoft Visual Studio \ VB98 \ vb6.exe.config » qui contenait l'entrée suivante:
<configuration>
<startup>
<supportedRuntime version="v1.1.4322" />
</startup>
Dès que je l'ai enlevé ce fichier dll a commencé à travailler à partir de la fin environnement visuel studio 6. Merci à tous ceux qui ont répondu à l'aide.
Je pense que quelque chose est valide dans votre chemin OS qui charge l'un de vos DLL de référence gérées ou non. Comme je me souviens de VS6, il ignore les chemins d'OS donc vous devez ajouter le chemin vers VS6. – kenny
Juste vérifier - vous avez. NET 2.0 installé sur la boîte fonctionnant avec Visual Studio 6, oui? –
J'ai installé Visual Studio 6, 2005 et 2008 ... et 2005 ou 2008 installé .net 2.0 avec. La DLL fonctionne très bien lorsqu'elle est appelée à partir d'un autre projet de studio 2008, ou lorsqu'elle est utilisée dans l'application VB6 lorsqu'elle est appelée à partir de Windows Shell (explorateur). Seul l'environnement IDE VB6 ne fonctionne pas. – Alex