我剛剛創建了一個使用VS 2010 SP1的C++/CLI DLL,並且我想用強名稱來簽名DLL。 所以我創建的文件TestNet.snk在VS 2010命令提示符C++/CLI DLL具有密鑰對,但強名稱驗證失敗
sn -k TestNet.snk
,然後我通過在鏈接器添加密鑰文件配置的項目 - >高級 - >密鑰文件。
Visual Studio 2010 SP1 Project Properties
產生的DLL中有密鑰對,但是當我嘗試驗證使用以下命令的DLL:
sn -v TestNetDLL.dll
我收到以下錯誤:
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
TestNetDLL.dll does not represent a strongly named assembly
如果我試着用強名稱再次簽名DLL,我會得到這個錯誤:
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Failed to install key pair -- Object already exists.
因此,密鑰對安裝在DLL中,但沒有強命名,我缺少什麼?,更多設置?或者我需要添加一些東西給代碼? 。:(
我不知道我錯過了什麼,請大家幫忙!謝謝您的意見或任何建議
IIRC,在VS2010中籤署C++/CLI程序集時,mt.exe在嵌入清單並修改文件哈希時將其掛起。使用延遲簽名。 –
還有一個強大的命名,它需要編輯'Microsoft.Cpp.Win32.targets'文件來用'$(LinkDelaySign)'替換'%(Link.DelaySign)','KeyFile'也是如此。 – Medinoc