在项目里面,添加对COM的引用时,自动生成了Interop.*.dll,但是这个dll的版本号永远是1.0. 如果使用InstallShield 制作安装包,进行修改安装时,这个dll不会被更新,就因为版本号永远是1.0
想修改这个版本号,没找到便捷的办法,就用 TlbImp.exe 重新导出一个dll,这个工具可以带上版本号的。
TlbImp.exe ( 类型库导入程序)参考资料 http://msdn.microsoft.com/zh-cn/site/tt0cf3sx
- 把原有的项目编译成功, 确保能够正常运行,Release 目录会有一个Interop.*.dll的文件,此文件版本号是1.0
- 先找到这个文件,我的机器这个文件在 C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\
- 拷贝到特定的目录,或者不拷贝也行,写bat的时候用全路径
- Bat 执行,代码如下:
"tlbimp.exe" ../player/release/MyCom.tlb /out:release/Interop.WebCameraATLFrameLib.dll /asmversion:2.1.1101.15007 /namespace:WebCameraATLFrameLib
说明:
"tlbimp.exe": 如果不是在这个目录,写全路径吧
../player/release/MyCom.tlb: Com 生成的TLB文件,一般在release 目录
/out: release/Interop.MyCom.dll :输出文件的路径
/asmversion:2.1.1101.15007 : 输出文件的版本号
/namespace: MyCom : 在项目里面的命名空间,必须和项目里面的命名空间一致,务必确认大小写。
请确保以上的相对路径正常。
到Release 目录检查 dll, 版本号有了,而且可以正常运行。
也可以把bat命令放到 VS的 后续执行操作里面,这是后话了。
可以参考这位兄弟的办法:http://www.cnblogs.com/linlf03/archive/2011/11/18/2253760.html
如果哪位找到更简单的办法,请告知,谢谢 !