使用时
我们注意到编译过程失败,好像永远都没有声明InternalsVisibleTo
标签。我们得到的错误是MyInternalClass is inaccessible due to its protection level <snip>
当公钥使用sha1时(在上面的步骤#3中),编译过程完美无缺,并且内部正确地暴露给测试项目。我们创建强名称密钥的方式是
sn -k 4096 SignKey.snk
sn -p SignKey.snk SignKeyPublic.snk sha256
sn -tp SignKeyPublic.snk
我们将项目内部暴露给它的测试项目的方式是:
[assembly: InternalsVisibleTo("MyProjectTest, PublicKey=LongPublicKeyHere")]
我们将其粘贴在Properties\AssemblyInfo.cs
项目的MyProject
内。
问题:如何在强名称流程中使用SHA256或更好?
编辑:或者这是VS2012工具中的错误吗?
平台,工具:VS2012(更新3),.NET 4.5,Windows 8 x64
答案 0 :(得分:2)
在this magazine article中明确提到:
使用各种机制来实现数字签名。 .NET Framework中强名称的当前实现依赖于RSA公钥算法和SHA-1哈希算法。
您希望发生的事情是,当您检查强名称时,CLR也可以看到您用于sn.exe的命令行参数。那不存在。