Могу ли я использовать файл *.tlb без использования Regasm для его регистрации на компьютере

Мы поддерживаем устаревшую систему VB6, для которой мы написали новый код в .Net, поместили код в сборки, а затем экспортировали файлы *.tlb для использования с кодовой базой VB6.

Мой вопрос: на каждом компьютере, на котором я хочу запустить код, нужно ли мне использовать Regasm для регистрации библиотек типов?

Я спрашиваю, потому что становится трудно отслеживать установки библиотек типов по мере того, как компьютеры ломаются, добавляются новые компьютеры и т. д. Кроме того, если мы обновляем код .Net, нам нужно обойти каждый компьютер и перерегистрировать библиотеку типов.

Подводя итог, можно ли запускать код .Net из VB6 без необходимости регистрировать библиотеку типов на каждом компьютере, на котором выполняется код?

Спасибо


person JMK    schedule 27.05.2012    source источник


Ответы (1)


Regasm.exe создает библиотеку типов только тогда, когда вы запускаете ее с параметром командной строки /tlb:filename.tlb. Который вы затем используете в проекте VB6 с помощью кнопки Project + References, Browse, чтобы выбрать файл .tlb. Запуск Tlbexp.exe — еще один способ получить его без регистрации. И тот, который вы должны предпочесть, параметр «Зарегистрироваться для COM-взаимодействия» в среде IDE. Однако вам нужно запустить VS с повышенными правами, чтобы он мог записывать реестр. Щелкните правой кнопкой мыши ярлык и выберите «Запуск от имени администратора».

Появление его в списке VB6 — небольшое удобство, но его трудно получить. Стандартный регистрационный код .NET, вызываемый Regasm.exe, не записывает необходимый «программируемый» ключ, чтобы VB6 автоматически добавлял компонент в свой список. Вы должны написать пользовательскую функцию регистрации, украшенную атрибутом [ComRegisterFunction], которая записывает отсутствующий ключ. Это того не стоит, когда вы можете просто нажать «Обзор».

Также обратите внимание, что вам не нужно регистрировать библиотеку типов на компьютере пользователя. Он нужен только компилятору VB6. Вам необходимо зарегистрировать классы [ComVisible], это легко сделать с помощью проекта установки. Просто установите для свойства Register библиотеки DLL значение vsdrpCOM.

person Hans Passant    schedule 27.05.2012