2010-02-10 4 views
5

J'ai une DLL .NET qui écrit dans la trace. Mais il semble que lorsque j'appelle ma DLL à partir d'un EXE VB6, la trace ne fonctionne pas. J'ai créé un fichier myApp.config dans le dossier EXE avec la configuration de trace, mais cela ne résout pas le problème.La trace ne fonctionne pas dans une DLL .NET chargée à partir de VB6 EXE

J'ai aussi essayé de créer les objets de trace dans le code, mais ne fonctionne pas:

Dim _traceSrc As TraceSource = New TraceSource("myTraceSorce") 
Dim flListener As FileLogTraceListener = New FileLogTraceListener("myFileLogTraceListener") 
Dim tSwitch As SourceSwitch = New SourceSwitch("mySwitch") 
tSwitch.Level = _logLevel 

Si j'appelle mon DLL à partir d'un EXE .NET il fonctionne, même si je n'ai pas l'application. config dans le dossier EXE, parce que je l'ai mis dans le code si la config est introuvable.

Répondre

3

Si votre application VB6 s'appelle MyApp.exe, le fichier de configuration doit s'appeler MyApp.exe.config. (MyApp.config fonctionne également parfois en fonction des versions .NET Framework et des Service Packs.)

Dans ce fichier de configuration, vos paramètres devraient fonctionner.

J'ai un traçage dans mon code courant de VB6 via COM qui fonctionne bien.

De même, vos droits sont-ils différents lors de l'exécution du code VB6? Enfin, si vous déboguez l'application VB6 dans l'EDI VB6, vous devez ajouter les paramètres au VB6.exe.config dans le dossier VB6.exe et redémarrer VB6 pour vous assurer que les modifications sont remarquées.

-2

Je pense que le problème est que VB6 utilise COM pour charger votre DLL managée.

Le code .NET ne chargera pas votre fichier .config car il utilise un seul gestionnaire 'shim' pour tout COM Interop. Le mieux que vous puissiez faire est d'ajouter quelque chose à votre fichier machine.config (mais la plupart des gens n'aiment pas faire cela).

L'initialisation du traçage dans le code devrait fonctionner. Supprimez votre configuration de suivi du fichier .EXE géré et exécutez-le dans un débogueur pour vérifier que la version du code fonctionne également.

Questions connexes