2013-06-25 53 views
1

我一直在为需要我生成.tlb文件的应用程序创建各种插件。在过去,它只是将我的项目的构建属性配置为“注册COM互操作”,从而生成一个.tlb文件以及我的输出DLL。以前,在使用Visual Studio 2010安装程序项目模板时,在目标机器上进行安装期间,这将始终正确地注册.tlb。如何在Visual Studio 2012中使用InstallShield LE注册类型库文件(.tlb)C#

我最近试图切换到Visual Studio 2012并使用InstallShield LE项目来生成我的安装程序,但似乎没有在安装过程中注册类型库,也没有看到快速添加允许我通过cmd-line regasm路径手动注册 - 或者至少对我来说不是那么明显。

在InstallShield项目选项中,我必须手动将.tlb应用程序文件(从构建的\ release文件夹中)添加到要包含在安装程序中的文件列表中,因为它似乎并未包含由项目输出或内容选项生成的文件。在.tlb文件的'COM & .Net Settings'属性中,我将它配置为注册类型:'提取COM信息'并启用'COM Interop'。

我错过了什么?

回答

0

试试这个线程了良好的技术说明:Are *.tlb files ever used at runtime?

在大多数情况下,我认为是不需要的* .tlb文件,因为它已经被它是否是一个exe文件或编译成二进制文件最无论一个dll,但.NET Interop要复杂得多,另一个线程解释了* .tlb文件可能需要处理线程和进程之间的高级通信问题 - 这些我都已经遗忘了。

当实现一个设置时,我从来没有必要单独注册一个* .tlb文件,它已经足以注册相应的二进制文件(exe/dll),但这一切都取决于产品的用例。

注意的Installshield被注册为COM互操作的方式并不总是最好的选择,据我记得。我不确定他们在做什么,但我会检查并与正常的regasm.exe注册: http://msdn.microsoft.com/en-us/library/tzat5yw6(v=vs.110).aspx。并仔细阅读链接线程(Are *.tlb files ever used at runtime?),了解有关代理,存根和编组问题的情况,以防您需要支持这些功能。

这里有以简洁的信息,一些进一步的链接COM/DCOM:类型库的

内容: http://msdn.microsoft.com/en-us/library/windows/desktop/ms221355(v=vs.85).aspx

COM,DCOM和类型库:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366757(v=vs.85).aspx

为COM接口生成的文件:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366830(v=vs.85).aspx

相关问题