我刚刚使用VS 2010 SP1创建了一个C ++ / CLI DLL,我想用强名称对DLL进行签名。 所以我在VS 2010命令提示符
中创建了文件TestNet.snksn -k TestNet.snk
然后我通过在Linker-> Advanced-> Key File中添加密钥文件来配置项目。
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
如果我再次使用强名称再次签名,我会收到此错误:
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中,但没有强名称,我缺少什么?更多设置?或者我需要在代码中添加一些内容吗? :(
我不知道我错过了什么,请帮忙!谢谢你的建议或任何建议。
答案 0 :(得分:1)
我做了以下事情来解决问题:
我运行此命令来创建密钥对文件
sn -k TestNet.snk
我将密钥对安装在密钥容器中
sn -i TestNet.snk MyTestNetContainer
我将VS 2010项目配置为使用密钥容器而不是密钥文件,并根据 Hans Passant
我重建了项目并使用sn.exe验证了DLL,验证成功了#34;有效"
sn -v TestNetDLL.dll Microsoft(R).NET Framework强名称实用程序版本4.0.30319.1 版权所有(c)Microsoft Corporation。保留所有权利。
汇编' TestNetDLL.dll'是有效的
感谢Hans Passant的建议。