C# CompileAssemblyFromSource测试对程序集进行签名

C# CompileAssemblyFromSource测试对程序集进行签名,c#,.net,code-signing,reflection.emit,compileassemblyfromsource,C#,.net,Code Signing,Reflection.emit,Compileassemblyfromsource,我有一个用C#编写的windows服务。它动态生成C#代码,并将其编译为abc.dll、xyz.dll等程序集。这些程序集稍后将加载以供执行。编译时,我将/keyfile:mykeyfile.snk“作为编译器选项之一传递给System.CodeDom.compiler.CompilerParameters类。现在问题是: 其中一些程序集无法加载,因为强名称验证失败 我从测试系统中得到了生成的程序集,当我用sn,exe检查它们时,我发现大约六分之一的程序集是延迟的或测试签名的 xyz.dll是延

我有一个用C#编写的windows服务。它动态生成C#代码,并将其编译为abc.dll、xyz.dll等程序集。这些程序集稍后将加载以供执行。编译时,我将/keyfile:mykeyfile.snk“作为编译器选项之一传递给System.CodeDom.compiler.CompilerParameters类。现在问题是: 其中一些程序集无法加载,因为强名称验证失败

我从测试系统中得到了生成的程序集,当我用sn,exe检查它们时,我发现大约六分之一的程序集是延迟的或测试签名的 xyz.dll是延迟签名或测试签名的程序集。显然,它将无法加载


为什么某些程序集没有正确签名?

我能够解决它,为了每个人的利益共享它。问题的原因是编译是一个两步过程。编译器首先生成dll,然后尝试对其签名。请参阅


dll仍将存在,在尝试加载它之前,人们不会注意到它的测试已签名。我有一个签名文件xyz.snk,它被锁定在另一个线程中。

不确定它是否有帮助,但您是否尝试记录编译器的输出?可能存在一些问题。