2010-02-10 7 views
5

Mam .NET DLL, która zapisuje do śledzenia. Ale wygląda na to, że gdy wywołuję moją bibliotekę DLL z pliku EXE VB6, ślad nie działa. Utworzono plik myApp.config w folderze EXE z konfiguracją śledzenia, ale to nie rozwiązuje problemu.Trace nie działa w bibliotece .NET DLL załadowanej z VB6 EXE

Próbowałem zostały również tworzenie obiektów ślad w kodzie, ale nie działa:

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

Gdybym zadzwonić do mojego DLL z EXE .NET to działa, nawet jeśli nie mam aplikacji. config w folderze EXE, ponieważ ustawiłem go w kodzie, jeśli nie znaleziono konfiguracji.

Odpowiedz

3

Jeśli twoja aplikacja VB6 nazywa się MyApp.exe, to plik konfiguracyjny powinien się nazywać MyApp.exe.config. (MyApp.config działa również czasami w zależności od wersji .NET Framework i dodatków Service Pack.)

Wewnątrz tego pliku konfiguracyjnego powinny działać twoje ustawienia.

Mam śledzenie w moim kodu z VB6 przez COM, który działa poprawnie.

Czy jest też jakaś szansa, że ​​Twoje uprawnienia są różne podczas uruchamiania kodu VB6?

Na koniec, jeśli debugujesz aplikację VB6 w IDE VB6, musisz dodać ustawienia do VB6.exe.config w folderze VB6.exe i ponownie uruchomić VB6, aby upewnić się, że zmiany zostały zauważone.

-2

Myślę, że problem polega na tym, że VB6 używa COM do ładowania zarządzanej biblioteki DLL.

Kod .NET nie załaduje pliku .config, ponieważ używa pojedynczej procedury "shim" dla wszystkich elementów COM Interop.

Najlepsze, co możesz zrobić, to dodać coś do pliku machine.config (ale większość ludzi nie lubi tego robić).

Trwa inicjowanie śledzenia w kodzie. Usuń konfigurację śledzenia z zarządzanego pliku .EXE i uruchom go w debugerze, aby sprawdzić, czy działa tam również wersja kodu.