对Com组件强签名的好帮手tlbimp

       在最近的做支付的开发中,遇到一次需要引入COM组件的情况。由于支付所需要的加密库是以RSA Com组件的形式实现的,所以一开始,将这个组件添加引用到项目中,然后就进行编码了。直到整体项目进入发布时才想起要为这个组件的引用程序集进行强签名,以前一直使用signtool对程序集进行签名,这回却报“程序集无法签名”。无奈下查看资料,找到在.net环境下Com组件互操作提供支持的工具tlbimp。它的作用是将 COM 类型库中的类型定义转换为公共语言运行库程序集中的等效定义。Tlbimp.exe 的输出为二进制文件(程序集),该文件中包含在原始类型库中定义的类型的运行库元数据。于是,按照格式,找到等待签名的COM组件,名为rsa.dll,使用命令:
                tlbimp rsa.dll /keyfile:mysnk.snk /out:myrsa.dll
       执行后即生成了签名后的程序集引用。然后将myrsa.dll复制到项目的bin目录下,同时删除同名的先前直接添加引用的生成的程序集(一般都是xxx.interop.dll形式),更新原来代码中使用到的相关命名空间,终于大功告成。

posted on 2007-08-30 16:00  Bean.Hsiang  阅读(868)  评论(0编辑  收藏  举报