马鞍山市网站建设_网站建设公司_页面加载速度_seo优化
2025/12/25 7:10:10 网站建设 项目流程

程序开发中的延迟签名与异常处理

1. 延迟签名

在程序开发中,公司需要谨慎保管其公钥/私钥对中的私钥。若不可信人员获取私钥,他们可能会伪装成公司发布代码。因此,公司不会随意开放包含公钥/私钥对的文件访问权限。在大型公司里,程序集的最终强命名通常在开发流程的最后阶段,由有权访问密钥对的特殊团队完成。

然而,这在开发和测试过程中会引发一些问题:
- 公钥是程序集标识的四个组成部分之一,在提供公钥之前,无法设置程序集的标识。
- 弱命名的程序集不能部署到全局程序集缓存(GAC)。但开发人员和测试人员需要能够以发布时的方式编译和测试代码,包括其在GAC中的标识和位置。

为解决这些问题,出现了一种修改后的强命名方式,即延迟签名(也称为部分签名)。这种方式既能克服上述问题,又不会公开私钥。在延迟签名中,编译器仅使用公钥/私钥对中的公钥,将公钥放入清单以完善程序集的标识,同时使用一块0来为数字签名预留空间。

创建延迟签名程序集需完成以下两步:
1. 创建仅包含公钥的密钥文件副本,而非公钥/私钥对。
2. 在源代码的程序集作用域中添加一个名为DelaySignAttribute的额外属性,并将其值设置为true

若尝试将延迟签名的程序集部署到GAC,CLR不会允许,因为它不是强命名的。要在特定机器上部署,需从Visual Studio命令提示符发出以下命令,以禁用该机器上GAC对该程序集的签名验证,并允许将其安装到GAC中:

sn –vr MyAssembly.

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询