📅  最后修改于: 2023-12-03 15:30:52.576000             🧑  作者: Mango
当你在开发一个.NET程序时,可能会遇到一个错误信息:“GAC 文件夹没有公钥令牌”。这个错误很常见,特别是在使用GAC (Global Assembly Cache) 的时候。
GAC是全局程序集缓存。当你安装.NET程序时,它的程序集文件可以被放到GAC,这样所有是安装在同一台机器上的程序都可以共享这个程序集。这个机制被设计为支持多版本程序集的共存和互用。
在.NET框架中,程序集的签名信息被包含在公钥令牌(token)中。当一个程序集被放到GAC中时,它的签名信息将一并存储。然而,如果你忘记了在打包程序集时为它签名,或者签名信息出错了,那么程序在被放到GAC时就会报错“GAC 文件夹没有公钥令牌”。
正确的解决方法当然是为程序集签名。签名的方式可以使用Visual Studio自带的工具,也可以使用sn.exe工具。
sn -k key.snk
这会生成一个密钥文件,可以替换key.snk为任何其他名称
sn -i key.snk My
这会将公钥令牌添加到程序集中,替换My为你的程序集名称
为.Net程序做好签名工作对于程序的正确运行和安全性都非常重要。当碰到了“GAC 文件夹没有公钥令牌”的错误时,我们需要及时为程序集签名,避免后续的错误和风险。