如何导入在.NET中使用sn.exe生成的.snk文件?

时间:2010-06-22 17:02:05

标签: c# .net encryption sn.exe

我使用此命令创建了一个密钥文件:


 sn.exe -k 2048 Build.snk

我想用.NET阅读这个密钥。我无法找到任何关于.snk格式的文档,所以我想知道C#中有没有办法读取.snk文件?

我提出问题的原因是将.snk文件用于签署程序集以外的目的。作为下面的答案之一,.snk文件的目的实际上只是用于签署程序集。

2 个答案:

答案 0 :(得分:9)

在MSDN here中找到了提及。这是代码:


public static void Main()
{
    // Open a file that contains a public key value. The line below  
    // assumes that the Strong Name tool (SN.exe) was executed from 
    // a command prompt as follows:
    //       SN.exe -k C:\Company.keys
    using (FileStream fs = File.Open("C:\\Company.keys", FileMode.Open))
    {
        // Construct a StrongNameKeyPair object. This object should obtain
        // the public key from the Company.keys file.
        StrongNameKeyPair k = new StrongNameKeyPair(fs);

        // Display the bytes that make up the public key.
        Console.WriteLine(BitConverter.ToString(k.PublicKey));

        // Close the file.
        fs.Close();
    }
}

答案 1 :(得分:3)

编译时使用强命名键来对编译器生成的程序集进行签名 - 因此在运行时读取它们可能不是您想要的。

要开始在C#项目的“属性”窗口中查找“签名”选项卡,您可以选择使用.snk对程序集进行签名。

http://msdn.microsoft.com/en-us/library/xc31ft41(VS.100).aspx