程序集生成失败——引用程序集“Interop.Office”;没有响亮的名字

发布于 2024-11-26 17:37:55 字数 434 浏览 1 评论 0原文

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

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

I have a WPF 4 project to interact with word documents made in VS2010 and a win form User Control project to host word application into it. And other com dlls. All com dlls are referred into my main wpf application. I want to publish my project so I can install it on another machine and perform automatic update for it, I get error: "Assembly generation failed -- Referenced assembly 'Interop.Office' does not have a strong name. ". error for each COM Dll.
A dll refer to (Interop.word.dll, interop.office.dll, interop.VBIDE.dll) and all these dlls are also refer and used into my wpf code.

I found Strong Signed Assemblies link have same question but it does not solve the problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

╭⌒浅淡时光〆 2024-12-03 17:37:55

我花了一段时间在互联网上搜索这个问题,我相信对于大多数第 3 方 dll 来说,您需要的答案可能就在这里。

“向互操作 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

希望有帮助

I spent a while trawling the internet for this, I believe that the answer you need may be here, for most 3rd party dll's.

"Adding Strong Name to Interop DLL"

The article describes three ways to add a strong name to a third party assembly. The commands are:
1. Adding a Strong Name via Key Pair

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

2. Adding a Strong Name via a Certificate in a Certificate Store

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

3. Adding a Strong Name via a Certificate in a Personal Information Exchange (.pfx) File

> 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

Hope it helped

原来分手还会想你 2024-12-03 17:37:55

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

实际上,只有当您决定签名时,“强名称”问题才会开始
您的程序集,从那时起它将要求所有引用的 dll
强名也签署了

如果您不想对程序集进行签名并希望克服此编译错误。选择不签署您尝试构建的程序集。随后,所有项目引用也不需要签名。

This comment should be an answer:

Actually, the "strong name" problem only STARTS if you decide to sign
your assembly, since then it'll require all referenced dlls to be
strong-name signed too

If you dont want to sign the assembly and wish to overcome this compilation error. Choose NOT to sign the assembly you are trying to build. Subsequently all the projects references wont require signing either.

烟─花易冷 2024-12-03 17:37:55

您必须有一个 .snk

右键单击​​您的项目 ->属性并进入“签名”选项卡 ->检查签署程序集 ->选择新密钥

希望有帮助

You must have a .snk

Right click on your project -> Properties and go on Signing tab -> Check Sign the assembly -> choose new key

Hope it helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文