У меня есть 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, потому что я установил его в коде, если конфигурация не найдена.
Если ваше приложение VB6 называется MyApp.exe, то файл конфигурации должен называться MyApp.exe.config
. (MyApp.config
также иногда работает в зависимости от версии .NET Framework и пакетов обновления.)
Внутри этого файла конфигурации ваши настройки должны работать.
У меня есть трассировка в коде, запущенном из VB6 через COM, который работает нормально.
Также есть ли вероятность, что ваши привилегии отличаются при запуске кода VB6?
Наконец, если вы отлаживаете приложение VB6 в IDE VB6, вам нужно добавить настройки в VB6.exe.config
в папке VB6.exe, и перезапустите VB6, чтобы изменения были замечены.
Я думаю, проблема в том, что VB6 использует COM для загрузки вашей управляемой DLL.
Код .NET не загружает ваш файл .config, поскольку он использует один обработчик «прокладки» для всего COM-взаимодействия.
Лучшее, что вы могли бы сделать, - это добавить что-нибудь в ваш файл machine.config (но большинству людей это не нравится).
Инициализация трассировки в коде должна работать. Удалите конфигурацию трассировки из управляемого .EXE и запустите ее в отладчике, чтобы проверить, работает ли версия кода и там.