2013-04-03 3 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-сервера и исключение, если оно недоступно. –

+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 
Смежные вопросы