我的延迟签名程序集正在调试。为什么会这样?

时间:2014-02-20 09:03:16

标签: c# .net-assembly

我创建了一个简单的类库项目。我已经为这个类库项目配备了延迟签名程序集。

现在,我已经创建了单元测试项目来测试上面的类库项目中的一个类。

因为我已经为我的类库项目使用了延迟签名程序集,所以它不应该是可调试的,对吧!但是,它正在成功调试。

我理解的问题在哪里?

1 个答案:

答案 0 :(得分:1)

延迟签名专门用于支持您描述的确切方案。基本思想是开发人员不够信任,无法访问私钥。保存在保险库中,只有少数有权永久签署装配的人才能访问。这限制了私人密钥可以被其他人泄露以利用中间人攻击的方式的数量。私钥保护至关重要。像微软这样的公司担心这类事情。

因此,为了让开发人员有机会调试和测试他的代码,他需要一种方法来使它看起来就像程序集具有强大的名称一样。延迟签名使用临时私钥并将数据放入其注册表中,该数据库记录此临时密钥是真实密钥的替代。 CLR在检查强名称时会查找此注册表项,并在找到它时正常。

所以一切都像往常一样。只要在延迟签署程序集的特定计算机上完成。如果您将程序集移动到另一台计算机并尝试测试它,那么它将不再起作用,因为缺少注册表项。假设已启用强名称验证。