跟踪无法在从VB6 EXE加载的.NET DLL中工作

时间:2010-02-10 22:40:08

标签: c# .net vb.net com vb6

我有一个写入Trace的.NET DLL。但似乎当我从VB6 EXE调用我的DLL时,跟踪无效。

我在EXE文件夹中使用跟踪配置创建了一个myApp.config文件,但这并没有解决问题。

我也尝试在代码中创建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

如果我从.NET EXE调用我的DLL它可以工作,即使我在EXE文件夹中没有app.config,因为如果找不到配置,我会在代码中设置它。

2 个答案:

答案 0 :(得分:4)

如果您的VB6应用程序名为MyApp.exe,则应将配置文件称为MyApp.exe.config。 (MyApp.config有时也会起作用,具体取决于.NET Framework版本和服务包。)

在该配置文件中,您的设置应该有效。

我在我的代码中跟踪从VB6通过COM运行正常工作。

运行VB6代码时,您的权限是否有可能不同?

最后,如果您在VB6 IDE中调试VB6应用程序,则需要将设置添加到VB6.exe文件夹中的VB6.exe.config,然后重新启动VB6以确保注意到更改。

答案 1 :(得分:-2)

我认为问题是VB6正在使用COM来加载托管DLL。

.NET代码不会加载.config文件,因为它为所有COM Interop使用单个“shim”处理程序。

您可以做的最好的事情是在machine.config文件中添加一些内容(但大多数人不喜欢这样做)。

在代码中初始化跟踪应该可行。从托管的.EXE中删除跟踪配置,并在调试器中运行它以检查代码版本是否也在那里工作。