2015-07-03 41 views
0

對於這個問題的不相關原因,我需要在客戶端GAC中安裝一些DLL,然後在我的應用上激活一個模塊。Visual Studio 2013:無法簽署DLL以在安裝的項目上使用它

因此,我已經使用visual studio 2013 msi安裝程序將此DLL註冊到客戶端GAC中。如您所知,爲了在GAC中插入某些內容,必須對其進行簽名。然而,儘管我試圖安裝DLL簽字,每次我嘗試建立德MSI我得到這個錯誤:

Error 13 Assembly 'Jurassic.dll' must have a shared name to be installed globally 

我已經正確地簽署了該命令的dll:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" sign /n "DIGO ######## S.L" /v Jurassic.dll 

enter image description here

回答

1

您正在使用錯誤的簽名。

signtool.exe用於編碼簽名二進制文件。代碼簽名用於證明二進制文件沒有被篡改,並用於已知的來源。這不是GAC的要求。

爲了能夠在GAC中安裝組件,他們必須具有strong name。這要求他們使用另一個簽名進行簽名。這種簽署也證明大會沒有被篡改,但只能證明它來自某個來源,但不是它來自哪個來源。您無需從認證中心購買證書。

因此,您必須通過爲編譯器設置正確的project options來簽名。您可以驗證它是用下面的命令強名稱簽署sn.exe

sn.exe -vf Jurassic.dll 
+0

@LarsTrujiens我忘了說我的問題,但我需要安裝DLL是不是由我創建的自定義DLL。我從互聯網上下載了它,所以MSDN文章在這種情況下沒有用處。我沒有任何項目,只有DLL。 – Rumpelstinsk

+1

然後看看這些問題:http://stackoverflow.com/questions/1669139/signing-an-unsigned-assembly和http://stackoverflow.com/questions/7977363/using- unsigned -assemblies-in-signed -那些 –

相關問題