我刚刚创建了一个使用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