Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# strong使用SHA256时,使用InternalsVisibleTo标记命名失败_C#_Visual Studio 2012_Strongname - Fatal编程技术网

C# strong使用SHA256时,使用InternalsVisibleTo标记命名失败

C# strong使用SHA256时,使用InternalsVisibleTo标记命名失败,c#,visual-studio-2012,strongname,C#,Visual Studio 2012,Strongname,使用时 C#strong DLL上的名称和 使用InternalsVisibleTo标记和 当公钥使用SHA256(或SHA512)时 我们注意到编译过程失败,就好像从未声明过InternalsVisibleTo标记一样。我们得到的错误是由于MyInternalClass的保护级别而无法访问 当公钥使用sha1(在上面的步骤#3中)时,编译过程可以完美地工作,没有任何问题,并且内部构件可以正确地暴露在测试项目中。我们创建strongname键的方式是 sn -k 4096 SignKey.snk

使用时

  • C#strong DLL上的名称和
  • 使用InternalsVisibleTo标记和
  • 当公钥使用SHA256(或SHA512)时
  • 我们注意到编译过程失败,就好像从未声明过
    InternalsVisibleTo
    标记一样。我们得到的错误是由于MyInternalClass的保护级别而无法访问

    当公钥使用sha1(在上面的步骤#3中)时,编译过程可以完美地工作,没有任何问题,并且内部构件可以正确地暴露在测试项目中。我们创建strongname键的方式是

    sn -k 4096 SignKey.snk
    sn -p SignKey.snk SignKeyPublic.snk sha256
    sn -tp SignKeyPublic.snk
    
    我们将项目的内部结构暴露于测试项目的方式是:

    [assembly: InternalsVisibleTo("MyProjectTest, PublicKey=LongPublicKeyHere")]
    
    我们将其粘贴在
    MyProject
    项目的
    Properties\AssemblyInfo.cs

    问题:如何在strongname流程中使用SHA256或更高版本?

    编辑:或者这是VS2012工具中的错误?


    平台、工具:VS2012(更新3)、.NET 4.5、Windows 8 x64

    中非常明确地提到:

    使用各种机制来实现数字签名。NET Framework中强名称的当前实现依赖于RSA公钥算法和SHA-1哈希算法


    大概您希望发生的是,当CLR检查强名称时,您用于sn.exe的命令行参数对CLR也是可见的。那是不存在的。

    谢谢!有趣的是,在CLR文章发表前几个月,NIST提出了一个从SHA1=>SHA2系列()转换的指南。由于CLR文章和NIST指南都是7年前的事了,因此在这方面,.NET似乎需要一个早该升级的版本!