【发布时间】:2013-10-11 10:40:04
【问题描述】:
我有一个用 C# 编写的 Windows 服务。它动态生成 C# 代码并将它们编译为 abc.dll、xyz.dll 等程序集。这些程序集稍后将被加载以执行。编译时,我将 /keyfile: mykeyfile.snk" 作为编译器选项之一传递给 System.CodeDom.Compiler.CompilerParameters 类。现在的问题是: 其中一些程序集无法加载,因为强名称验证失败。
我从测试系统获得了生成的程序集,当我使用 sn、exe 检查它们时,我发现大约六分之一的程序集是延迟或测试签名的。运行 sn.exe -v xyz.dll 给了我 xyz.dll 是延迟签名或测试签名的程序集。显然它会加载失败。
为什么有些程序集没有正确签名?
【问题讨论】:
-
不确定它是否有帮助,但您是否尝试记录编译器输出?也许有一些问题之王。
标签: c# .net code-signing reflection.emit compileassemblyfromsource