强化名称验证不会因修改的程序集而失败

时间:2016-01-19 08:02:26

标签: c# .net-assembly signing

我遵循了这个video,我所做的步骤是:

  1. 我从C#类创建了一个强大的命名程序集a.dll。
  2. 我从一个C#类中创建b.exe,该类具有对a.dll的引用(类似于Console应用程序中的Program.cs的类)。
  3. 我运行b.exe,它正确执行。
  4. 我修改了强名称a.dll,并通过sn -v a.dll命令验证,并且响应为:“无法验证程序集 - 强名称验证失败。
  5. 我再次运行b.exe并且它可以正常工作,但我预计会出现 FileLoadException 错误,因为它是一个经过修改的程序集。在此video中发生错误!
  6. 我的结果与视频中显示的不一样。有这个原因吗?

1 个答案:

答案 0 :(得分:1)

我猜测您正在使用.NET 3.5 SP 1或更高版本,我猜测该视频是基于早期版本,或已应用以下修复程序来禁用&# 34;强名称签名旁路"。

请访问How to: Disable the Strong Name Signing Bypass Feature

  

从.NET Framework 3.5版Service Pack 1(SP1)开始,当程序集加载到完全信任的AppDomain时,不会验证强名称签名...绕过强名称签名的验证可以提供显着的性能改进

所以,如果您以完全信任的方式运行,他们就会改变规则。