.net开发COM组件之组件签名&注册
基于.net的COM组件开发时,若采用vs强命名方式,则完成后试图将组件注册到XP系统(确切的说是.net4.0以下版本的系统)
REGASM c:\libcom\dotnet\myCom.dll /tlb:C:\Windows\System32\myCom.tlb
会报错:
Unhandle Exception:System.TypeLoadException:Could not load type:System.reflection.AssembleSignatureKeyAttribute...BalaBalaBala一堆错误信息
信息大致意思是.net4.0环境,在使用REGASM注册时检测到一些依赖方法不存在,简单的方法升级到.net4.5以上版本完事;
但哥哥的环境实力不允许啊(XP系统),只能放弃VS强命名,采用手工签名注册组件;
签名工具
链接:https://pan.baidu.com/s/1_Uc61JabZooTKpJ06K_64g
提取码:ikny
签名批处理语句:
c:\mycom\mynet\32-os\sn.exe -k c:\mycom\mynet\mycomkey.snk
c:\mycom\mynet\32-os\ildasm mycom.dll /out:c:\mycom\mynet\mycom.il
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm c:\mycom\mynet\mycom.il /dll /key=c:\mycom\mynet\mycomkey.snk
com组件注册
c:\mycom\mynet\32-os\REGASM c:\mycom\mynet\myCom.dll /tlb:C:\Windows\System32\myCom.tlb
::若为64位系统开发环境
::c:\mycom\mynet\64-os\REGASM c:\mycom\mynet\myCom.dll /tlb:C:\Windows\SysWOW64\myCom.tlb
c:\mycom\mynet\32-os\GACUTIL /u myCom
c:\mycom\mynet\32-os\GACUTIL /if c:\mycom\mynet\myCom.dll