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

JSJ*_*JSJ 7 c# wpf interop winforms-interop

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

我发现Strong Signed Assemblies链接有相同的问题,但它没有解决问题.

Mat*_*att 17

我花了一段时间在网上搜索这个,我相信你需要的答案可能就在这里,对于大多数第三方dll来说.

"向Interop DLL添加强名称"

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

> SN -k MyKeyPair.snk
> ILDASM ASQLService.dll /out:ASQLService.il
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=MyKeyPair.snk
Run Code Online (Sandbox Code Playgroud)

2.通过证书库中的证书添加强名称

> ILDASM ASQLService.dll /out:ASQLService.il  
> MAKECERT -ss MyCertificateStore -sk MyKeyContainer
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=@MyKeyContainer
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助


Jer*_*son 7

这个评论应该是一个答案:

实际上,如果您决定签署您的程序集,那么"强名称"问题只会起作用,因为那时它将要求所有引用的dll也是强名称签名

如果您不想签署程序集并希望克服此编译错误.选择不签署您要构建的程序集.随后所有项目参考都不需要签名.


mej*_*mej 5

你必须有一个.snk

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

希望能帮助到你

  • 实际上,如果你决定签署你的程序集,那么"强名称"问题只会起作用,因为那时它还要求所有引用的dll也都是强名字签名. (7认同)