关于签名程序集的问题 签名程序集时加密失败
程序集的项目目录中保存该文件并在编译您的项目,可能会收到与以下内容类似的错误信息:
"签名程序集时加密失败...WindowsApplication1.exe '--' 错误读取密钥文件 key.snk--系统找不到指定的文件"
查了一下网上资料,微软的解释如下:
AssemblyKeyFile 的.snk 文件位置必须相对于 EXE 目录或 DLL 目录。
您编译该项目之前,必须更改到.snk 文件路径。 若要通过使用从 调试 或 发布 目录路径更改.snk 文件的位置,打开 AssemblyInfo.cs 文件,然后将 AssemblyKeyFile 代码如下所示: [assembly: AssemblyKeyFile("..\..\SnkFileName.snk")]
此行为是设计使然。
在项目的 AssemblyInfo.cs 文件,在 IDE 指示注释.snk 文件所相对于生成路径中。
重现步骤
1. 打开 Visual Studio .NET
2. 创建一个新的 Microsoft Visual C# 控制台应用程序。
3. 编译该项目,并记下它编译像您期望的那样。
4. 打开 Visual Studio .NET 命令提示符处,然后键入以下命令: sn-k key.snk
5. 将所生成.snk 文件复制到项目目录的控制台应用程序。
6. 打开项目的 AssemblyInfo.cs 文件。 找到程序集文件信息 Form,然后更改该语句,如下所示: [assembly: AssemblyKeyFile("key.snk")]
7. 编译该项目。