对于修改后的程序集,强名称验证不会失败

本文关键字:强名称 验证 失败 程序集 于修改 修改 | 更新日期: 2023-09-27 18:31:00

我按照这个视频做了,我所做的步骤是:

  1. 我从 C# 类中创建了一个强命名程序集 a.dll。
  2. 我从一个 C# 类中生成 b.exe,该类具有 a.dll(控制台应用程序中的类似 Program.cs 的类)的引用。
  3. 我运行 b.exe,它正确执行。
  4. 我修改名为 a.dll 的强,并通过sn -v a.dll命令进行验证,响应为:"无法验证程序集 - 强名称验证失败。
  5. 我再次运行 b.exe 并且可以工作,但我希望出现 FileLoadException 错误,因为它是一个修改后的程序集。在此视频中,发生错误!

我的结果与视频中看到的不一样。这有什么原因吗?

对于修改后的程序集,强名称验证不会失败

我猜你使用的是.NET 3.5 SP 1或更高版本,我猜视频是基于早期版本,或者已应用以下修复程序来禁用"强名称签名绕过"。

请访问如何:禁用强名称签名绕过功能

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

因此,他们改变了规则,前提是您以完全信任的方式运行。