2010-02-10 78 views
5

我有一个写入跟踪的.NET DLL。但是,似乎当我从VB6 EXE调用我的DLL时,跟踪不起作用。 我已经使用跟踪配置在EXE文件夹中创建了一个myApp.config文件,但这并不能解决问题。跟踪不工作在从VB6 EXE加载的.NET DLL中

我也试过在代码中创建的跟踪对象,但不工作:

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,即使我没有应用程序。配置在EXE文件夹中,因为如果未找到配置,则将其设置为代码。

回答

3

如果您的VB6应用程序被称为MyApp.exe,那么该配置文件应该被称为MyApp.exe.config。 (MyApp.config也有时取决于.NET Framework版本和Service Pack。)

在该配置文件中,您的设置应该可以工作。

我在我的代码中运行从VB6通过COM运行良好的跟踪。

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

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

-2

我认为问题在于VB6正在使用COM加载您的托管DLL。

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

你可以做的最好的事情是添加一些东西到你的machine.config文件(但大多数人不喜欢这样做)。

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