繁体   English   中英

程序集生成失败-引用的程序集“ Interop.Office”没有强名称

[英]Assembly generation failed — Referenced assembly 'Interop.Office' does not have a strong name

我有一个WPF 4项目与VS2010中制作的Word文档进行交互,还有一个Win Form User Control项目将Word应用程序托管到其中。 和其他COM DLL。 所有的com dll都被引用到我的主要wpf应用程序中。 我想发布项目,以便可以将其安装在另一台计算机上并对其执行自动更新,但出现错误:“程序集生成失败-引用的程序集'Interop.Office'没有强名。”。 每个COM Dll错误。 一个dll引用(Interop.word.dll,interop.office.dll,interop.VBIDE.dll),所有这些dll也都引用并用于我的wpf代码。

我发现“ 强签名的程序集”链接有相同的问题,但不能解决问题。

我花了一段时间在互联网上拖拉,我相信对于大多数第三方dll,您可能需要的答案就在这里。

“向Interop DLL添加强名称”

本文介绍了向第三方程序集添加强名的三种方法。 这些命令是:
1.通过密钥对添加强名

> SN -k MyKeyPair.snk
> ILDASM ASQLService.dll /out:ASQLService.il
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=MyKeyPair.snk

2.通过证书在证书库中添加全名

> ILDASM ASQLService.dll /out:ASQLService.il  
> MAKECERT -ss MyCertificateStore -sk MyKeyContainer
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=@MyKeyContainer

3.通过证书在个人信息交换(.pfx)文件中添加全名

> MAKECERT -r -pe -sv MyCertificate.pvk MyCertificate.cer
> PVK2PFX -pvk MyCertificate.pvk -pi qwerty -spc MyCertificate.cer -pfx MyCertificate.pfx
> SN -p MyCertificate.pfx MyCertificate-publickey.snk
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=MyCertificate-publickey.snk
> SN -R ASQLService.dll MyCertificate.pfx

希望能有所帮助

此评论应为答案:

实际上,“强名称”问题只有在您决定对程序集进行签名时才开始,因为从那时开始,它也将要求所有引用的dll也都进行强名称签名。

如果您不想在程序集上签名并希望克服此编译错误。 选择不签署您要生成的程序集。 随后,所有项目引用均不需要签名。

您必须有一个.snk

右键单击您的项目->属性,然后单击签名选项卡->选中对程序集签名->选择新密钥

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM