新版本签名但之前没有签名时,.NET程序集绑定重定向

时间:2012-03-22 12:09:36

标签: c# .net runtime

我遇到.NET程序集重定向问题。第三方程序集A引用另一个第三方程序集B. B未签名,因此它没有公钥令牌。 A的清单:

....
.assembly extern B
{
  .ver 1:0:0:0
}
....

如何将绑定重定向到已签名的下一个B版本? 如果我没有在assemblyBinding / dependentAssembly / assemblyIdentity中指定publicKeyToken,则运行时找不到程序集“B,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = null”。如果我指定的重定向规则与元数据中的依赖程序集引用不匹配。

2 个答案:

答案 0 :(得分:1)

如果您知道将要签署下一个版本,您是否可以获得publicKey的副本?

顺便说一下,从无符号转换到签名中间进程而不进行重新编译,技术上可以完成,但这是一个非常糟糕的主意。

答案 1 :(得分:1)

我发现没有办法从unsigned中绑定重定向到签名程序集。我找到的一个不太好的解决方案是从签名的程序集中删除签名。为了做到这一点,ildasm可用于反汇编,应该从.il文件中删除公钥并使用ilasm更改.il可以编译。