Трассировка, не работающая в DLL.NET, загруженном из VB6 EXE

У меня есть DLL.NET, который пишет в Трассировку. Но кажется, что, когда я называю свой DLL от VB6 EXE, трассировка не работает.

Я создал myApp.config файл в папке EXE с конфигурацией трассировки, но это не решает проблему.

Я также попытался создать объекты Трассировки в коде, но не работает:

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

Если я называю свой DLL от EXE.NET, он работает, даже если у меня нет app.config в папке EXE, потому что я установил его в коде, если конфигурация не найдена.

6
задан DaveInCaz 6 February 2019 в 13:02
поделиться

2 ответа

Если ваше приложение VB6 называется MyApp.exe, то файл конфигурации должен называться MyApp.exe.config. (MyApp.config также иногда работает в зависимости от версии .NET Framework и пакетов обновления.)

Внутри этого файла конфигурации ваши настройки должны работать.

У меня есть трассировка в коде, запущенном из VB6 через COM, который работает нормально.

Также есть ли вероятность, что ваши привилегии отличаются при запуске кода VB6?

Наконец, если вы отлаживаете приложение VB6 в IDE VB6, вам нужно добавить настройки в VB6.exe.config в папке VB6.exe, и перезапустите VB6, чтобы изменения были замечены.

4
ответ дан 17 December 2019 в 20:31
поделиться

Я думаю, проблема в том, что VB6 использует COM для загрузки вашей управляемой DLL.

Код .NET не загружает ваш файл .config, поскольку он использует один обработчик «прокладки» для всего COM-взаимодействия.

Лучшее, что вы могли бы сделать, - это добавить что-нибудь в ваш файл machine.config (но большинству людей это не нравится).

Инициализация трассировки в коде должна работать. Удалите конфигурацию трассировки из управляемого .EXE и запустите ее в отладчике, чтобы проверить, работает ли версия кода и там.

-2
ответ дан 17 December 2019 в 20:31
поделиться