遇到的问题
CS7027 C# 使用来自文件“..\***.snk”的公钥对输出签名时出错 -- 未找到文件
解决方案
该问题属于解决方案中,该项目的签名出现了异常。
因此需要生成一个自身的签名,步骤如下:
1.打开VS的开发命令程序
输入命令:
sn -k G:\samplekey.snk // 生成强名称密钥
sn -p G:\StrongKey.snk G:\key.publickey // 将公钥从 key.snk 提取到 key.publickey 中
sn -tp G:\key.publickey // 显示存储在文件 key.publickey 中的公钥
2.右键项目,选择 “属性”,并在属性中选择 “签名”
3.重新编译即可。
强命名程序集的缘由
目前windows中出现的dll hell问题(两个不同的公司可能开发处具有相同名称的程序集,如果将相同名称的程序集放置到同一个目录下,则会出现程序集覆盖现象,最后安装的程序集会覆盖前面的程序集,从而可能导致应用序不能正常运行)。由此看来,仅靠名称来区分程序集是不足够的。clr采取了强命名程序集的方式来唯一的表示程序集。
强命名程序集包含四个标识:名称,版本号,语言文化标识和一个共有/私有密钥对。