2011-07-27 70 views
7

我有一個WPF 4項目與VS2010中製作的Word文檔進行交互,並且用戶控制項目將Word應用程序託管到其中。和其他商品。所有的COM都被引用到我的主要wpf應用程序中。我想發佈我的項目,所以我可以將它安裝在另一臺機器上併爲它執行自動更新,我得到錯誤:「程序集生成失敗 - 引用程序集'Interop.Office'沒有強名稱。」每個COM Dll錯誤。 一個dll指的是(Interop.word.dll,interop.office.dll,interop.VBIDE.dll),所有這些DLL也被引用並用於我的wpf代碼。程序集生成失敗 - 引用的程序集「Interop.Office」沒有強名稱

我發現Strong Signed Assemblies鏈接有同樣的問題,但它不能解決問題。

+0

只要刪除引用並將其添加回來。 –

回答

17

我花了一段時間在網上搜索這個,我相信你需要的答案可能在這裏,對於大多數第三方的dll來說。

"Adding Strong Name to 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 /[email protected] 

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 

希望它幫助

+0

有點混亂,但它完美的作品。謝謝。 – Nyerguds

+0

那篇文章太棒了。 – Pluto

5

你必須有一個.SNK

右鍵點擊你的項目 - >屬性,並繼續簽名選項卡 - >請登錄大會 - >選擇新的關鍵

希望它可以幫助

+7

實際上,只有當你決定簽署你的程序集時,「強名」問題纔會啓動,因爲那樣它會要求所有引用的dll都是強名簽署的。 – Nyerguds

+0

準確地說,簽名的代碼不能調用未簽名的代碼./ –

7

此註釋應是一個答案:

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

如果您不想簽署程序集並希望克服此編譯錯誤。選擇不簽署您正在嘗試構建的裝配體。隨後所有的項目引用都不需要簽名。

相關問題