2013-06-27 2 views
2

Я пытаюсь создать 32-битный COM-объект в .NET 4.0. Потребителем COM-объекта является простой JScript.Регистрация с опцией Com Interop в Visual Studio работает, но вызов Regasm напрямую не

Когда установлен флажок в поле «Регистрация для COM-взаимодействия» в Visual Studio, все работает нормально. Я могу создать COM-объект в своем JScript и запустить весь свой тестовый код.

Однако я хочу иметь возможность развернуть это на 32-разрядной машине (которая работает .NET 4.0), на которой нет Visual Studio. Так что у меня есть простой install.bat файл для регистрации DLL:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm ComTest.dll /codebase /tlb:ComTest.tlb 

Как это 32 разрядная сборка, я забочусь, чтобы использовать 32 бит regasm.exe. Это говорит мне, что он успешно регистрируется. Я получаю предупреждение за использование опции /codebase, указывающей, что я могу наступить на существующие пространства имен, но это не будет проблемой в среде развертывания.

Но теперь, когда я иду, чтобы создать свой объект в моем JScript я получаю

Could not create object named "COMTest". 

Есть ли что-то особенное Visual Studio делает это правильно, что зарегистрировав его, что я не хватает?

Я бы предпочел не подписывать сборку, если это возможно.

ответ

2

Я нашел проблему. (Конечно, только после того, как я отправил на SO ...)

Объект регистрировался просто отлично. Проблема заключалась в отсутствии зависимостей в конструкторе COM-объекта.

Перемещение кода инициализации из конструктора и метода Initialize() выявило проблему.

Visual Studio работал из-за каталога, в котором он находился.