2010-02-10 66 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中刪除跟蹤配置,並在調試器中運行它以檢查代碼版本是否也適用於此。