2013-04-03 45 views
1

如何在運行時檢查dll是否已正確註冊?目前正在嘗試以下操作,但它永遠無法找到該DLL,即使它已在regsvr32中註冊。 Assembly類是否僅適用於系統程序集,如果是這樣,我爲自己的程序使用了什麼?vb.net:測試運行時是否註冊了一個com dll

'check com dll connection for diagnostics 
    Try 
     Dim asm As Assembly = Assembly.LoadWithPartialName("mycomdll.mycomclass") 
     DebugText.AppendText("DLL registered" + vbNewLine) 
    Catch ex As Exception 
     DebugText.AppendText("DLL test failed" + vbNewLine) 
     DebugText.AppendText(ex.ToString() + vbNewLine) 
    End Try 
+1

這不能工作,*非託管*服務器通常是通過使用註冊表COM發現。你只是一個近似的東西,但從來不能忠實地重現管理COM服務器託管,隔離,重定向和清單覆蓋的許多複雜規則。簡單的方法是創建COM服務器,並在不可用時捕獲異常。 –

+0

聽起來合乎邏輯。如何在運行時加載非託管服務器?我只發現如何通過添加項目引用來實現這一點,如果服務器不存在,則在編譯時抱怨項目引用。 –

+0

正如我所說,通過創建一個對象。 COM服務器按需加載。 –

回答

1
'check com dll connection for diagnostics 
    Try 
     Dim test As Object = CreateObject("mycomdll.mycomclass") 
     test.mymethod(0) 
     DebugText.AppendText("COM DLL registered" + vbNewLine) 
    Catch ex As Exception 
     DebugText.AppendText("COM test failed" + vbNewLine) 
     DebugText.AppendText(ex.ToString() + vbNewLine + vbNewLine) 
    End Try