2013-03-17 54 views
5

我的Visual Studio 2010解決方案引用了第三方專有DLL。第三方DLL沒有「強名」?

當我嘗試編譯錯誤消息讀解:

無法發出組裝:引用的程序集「NameOfAssembly.DLL」並不 沒有強名稱

是國內唯一解決此問題以使用我自己的密鑰簽署第三方DLL?

回答

2

如果你想要強簽名的程序集,所有的引用必須是強簽名的。這entry描述的步驟。

6

這是由任何創造他人使用的集會的犯罪過失,因爲在建造集會時給集會一個強大的名字是多麼微不足道。之後做這件事非常痛苦,你必須用ildasm.exe反編譯程序集,然後使用/ key選項將它與ilasm.exe一起放回。

如果你與店主有工作關係,然後給他們發送一張討厭的圖。如果你不這樣做,那麼你可能應該質疑組件的質量,這是一個重大的監督,並顯示很少有人實際使用該組件的證據。

+0

我可以使用'al.exe'嗎? – CJ7 2013-03-17 13:05:16

+0

嗯,取消第一段併發送該電子郵件。 – 2013-03-17 13:11:28

+2

@HansPassant有趣的是,Dapper也沒有簽名。我們目前不得不使用Dapper Nuget包來解決這個問題。我們需要我們的源代碼上簽名的程序集,我們通過集成Dapper源代碼來完成。 – 2013-11-15 15:28:27

2

請確保您獲得許可將反彙編程序集設置爲強名稱。我不希望你有任何法律上的麻煩。您可以使用ILDASM和ILASM命令強制命名該程序集。在Visual Studio命令提示符下。

使用ILDASM將程序集轉換爲MISL代碼。 ILDASM MyThirdParty.dll /out:MyThirdParty.il

使用ILASM使用強名稱密鑰進行編譯。 ILASM MyThirdParty.il/dll /resource=MyThirdParty.res /key=MyKey.snk

如果您需要製作強名稱密鑰,請使用SN命令。我認爲它的-k選項。 如果您收到BadImage異常,請檢查程序集編譯的CLR版本。如果使用CLR 2.0/3.5,則使用「C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ ILASM」而不是4.0版。