可以使用免注册COM组件而无需在开发机器上注册它吗?

dsc*_*fer 4 com regfreecom visual-studio

我开发了一个免注册的COM组件,它可以在目标机器上正常工作而无需注册组件.它是一个嵌入了tlb的dll,以及一个RT_MANIFEST资源,它具有列出组件的程序集依赖关系和CLSID的清单.

在Visual Studio(2008)中,我仍然需要注册这个COM组件来做至少我尝试过的两件事.添加对组件的引用时,除非注册组件,否则无法为引用选择隔离属性.除非已注册组件,否则在调试器运行时也无法创建对象的实例.但是,我可以添加引用并编译应用程序并在不注册组件的情况下运行它.

是否有一些方法可以在Visual Studio中使用免注册COM组件而无需注册它,或者是否必须在开发计算机上注册才能使所有内容正常工作?

Han*_*ant 9

在此处了解COM组件的编译时和运行时使用之间的区别非常重要.无Reg的COM纯粹是一个运行时功能.您编写的描述COM接口的清单是免注册部分.您不必在计算机的注册表中注册COM组件.您可以在文件中提供注册信息.这意味着您不需要安装程序.这也意味着您不会遇到注册问题.更好地称为DLL地狱.

注册表中的键或清单中的条目对于帮助COM确定COM客户端要求它创建COM对象实例时需要加载的DLL非常重要.

这与编译时非常不同.类型库非常有助于告诉编译器您是否编写了正确的代码.COM组件真的有IFoo接口吗?IFoo接口真的有一个带有两个参数的Mumble()方法吗?类型库告诉编译器接口是什么样的,并允许编译器对您编写的代码进行静态检查.与'late-binding'btw不同,这是一个允许您在没有类型库的情况下编写COM客户端代码的选项(因此没有类型检查).在脚本语言中很常见.

重申:免注册COM纯粹是关于安装,而不是编写代码.