我有一个用 C# 编写的 Windows 服务。它动态生成 C# 代码并将它们编译为 abc.dll、xyz.dll 等程序集。这些程序集稍后将被加载以执行。编译时,我将 /keyfile: mykeyfile.snk" 作为编译器选项之一传递给 System.CodeDom.Compiler.CompilerParameters 类。现在的问题:其中一些程序集无法加载,因为强名称验证失败。
我从测试系统获得了生成的程序集,当我使用 sn、exe 检查它们时,我看到大约六分之一的程序集是延迟或测试签名的。运行 sn.exe -v xyz.dll 给我 xyz.dll 是延迟签名或测试签名的程序集。显然它将无法加载。
为什么有些程序集没有正确签名?