2010-04-23 22 views
2

J'ai un exemple de projet avec des travaux lorsqu'il est appelé à partir de VB6 compilé, mais pas à partir de l'IDE ou du VBE d'Excel.Pourquoi est-il impossible d'appeler RegFree COM et .NET à partir de l'IDE VB (VB6 & VBA)?

Il y a 3 DLL QA.DLL, QB.DLL, QAW.DLL. QA est écrit en C# .NET, QB et QAW sont écrits en VB6. QAW est un wrapper COM de QA.

Dans le code appelant, je crée un contexte d'activation et charge un fichier manifeste.

Tout fonctionne correctement à partir de l'exe créé avec VB6, mais pas en mode débogage dans VB6 ou dans VBA d'Excel.

J'ai l'exemple complet en zip.

Des idées ce qui est différent de l'appel IDE et pourquoi cela ne fonctionne pas?

Beaucoup Thx

- DM

+0

J'ai une solution mais cela implique de copier le fichier .Net dll QA.dll dans un sous-répertoire de Office11, Office12, VB98, etc. Toutes les DLL et manifestes COM peuvent être placées ailleurs, c'est-à-dire sur un lecteur réseau. Ce genre de défait le but de Reg-Free pour mon besoin. Toutes les suggestions sur la façon de charger un assemblage .Net à partir du réseau en utilisant des appels de style C ou COM (c'est-à-dire appelés depuis VBA ou VB6) seraient les bienvenues. THX – DangerMouse

Répondre

1

Il est parce que l'application est en fait en cours d'exécution à partir du répertoire que le VB6.exe est situé. Vous pouvez réellement mettre votre DLL et manifester là et l'avoir travailler, mais si vous faites beaucoup de développement RegFree ce répertoire va devenir un désordre très rapidement.