我用到有水晶报表10里的 
craxddrt.dll
CRDesignerCtrl.DLL
crviewer.dll 
三个DLL文件引如项目中后 有AxInterop.CRDESIGNERCTRLLib10.dll
AxInterop.CrystalActiveXReportViewerLib10.dll
Interop.CRAXDDRT.dll
Interop.CRDESIGNERCTRLLib10.dll
Interop.CrystalActiveXReportViewerLib10.dll 几个DLL文件我的签名步骤
sn -k keyfile.snk
aximp CRDesignerCtrl.dll /delaysign /keyfile:keyfile.snk
aximp crviewer.dll /delaysign /keyfile:keyfile.snk
tblimp craxddrt.dll /delaysign /keyfile:keyfile.snk out:/CRACDDRT然后生成了
AxCRDESIGNERCTRLLib10.dll
CRDESIGNERCTRLLib10.dll
AxCrystalActiveXReportViewerLib10.dll
CrystalActiveXReportViewerLib10.dll
CRACDDRT.DLL
然后再把生成后的DLL引如项目中就不能用了
报错信息
Could not load file or assembly 'AxCRDESIGNERCTRLLib10, Version=10.0.0.0, Culture=neutral, PublicKeyToken=553b4b50c1b8d2cb' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)
,请各位大侠们帮帮忙,应该怎样签名,谢谢了.

解决方案 »

  1.   

    楼主没有理解强签名的含义和用途.签了名后, 程序集引用只会到GAC(全局程序集缓存)中寻找对应的dll, 而不是你当前的引用目录或者bin下面.你应该把这些签过了名的dll安装到GAC中, 用regsvr32不过开发的时候往往不这么做(太麻烦了), 可以使用sn -vr 签名,* 这个命令来暂时忽略这个签名检查,这样就可以引用了.
      

  2.   


    把签过名的dll加到GAC中。
    用的命令是gacutil -i xxxx.dll,而不是regsvr32,regsvr32是注册ocx、activex的。