Вопрос по vb.net, .net, com, c#, vb6 – Трассировка не работает в .NET DLL, загруженной из VB6 EXE

6

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

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

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

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 из .NET EXE, она работает, даже если у меня нет app.config в папке EXE, потому что я устанавливаю его в коде, если конфигурация не найдена.

Ваш Ответ

2   ответа
-2

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

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

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

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

4

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

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

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

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

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

Похожие вопросы