Регистрация COM-объекта, созданного с помощью VS C # 2010 - PullRequest
8 голосов
/ 12 июля 2011

Вчера я создал COM-объект с C #, в результате чего в каталоге bin / release моего проекта VS 2010 было три файла (comclass.dll, comclass.pdb и comclass.tlb).Теперь, когда я строю решение в проекте, VS автоматически регистрирует класс для меня на ПК разработчика, и у меня нет проблем с доступом к COM-объекту и его методам, скажем, из Powershell.Однако, когда я копирую три файла на другой компьютер и пытаюсь зарегистрировать dll с помощью regsvr32, он сообщает мне, что

модуль "comclass.dll" загружен, но точка входа DllRegisterServer былане найден.

Убедитесь, что "comclass.dll" является допустимым файлом DLL или OCX, а затем повторите попытку.

Использование regasm с параметром /tlb в файле .tlb выдает мне подобное сообщение.Так что я немного озадачен.Кто-нибудь знает, как мне поступить отсюда?

1 Ответ

11 голосов
/ 12 июля 2011

Просто скопируйте dll (и, необязательно, pdb , если вы хотите, чтобы пути к файлам и номера строк были в ваших трассировках стека). Вот как вы его регистрируете, и создается tlb :

"%WINDIR%\Microsoft.NET\Framework\v2.0.50727\regasm.exe" comclass.dll /tlb /nologo /codebase

Поскольку Visual Studio успешно регистрирует его, это может сработать. Если нет, вы также можете открыть панель «Вывод» во время перестройки и посмотреть, как Visual Studio вызывает regasm.

...