1

根据问题,

是否可以指定对另一个程序集的引用,需要特定版本但坚持特定的 publickeytoken?我的直觉是没有(因为我猜测何时指定版本,所以使用了包括版本和 pkt 的整个完全限定程序集名称)

所以如果我有这种情况:

程序集 A 的 v1.0(无符号) 程序集 B 的 v1.0,需要程序集 A 的 v1.0

我可以在没有源代码的情况下重新签署程序集(通过 ildasm + ilasm),以便我有 A 和 B 的工作版本,并签名吗?

4

1 回答 1

2

因此,这并不能完全回答问题,而是通过将一对未签名的程序集移动到签名版本来解决我的基本场景,同时保持特定的版本要求。事实证明,当您重新签署程序集时,在您对它们进行 ilasm 之前,您可以打开 .il 并查看顶部附近并为引用添加特定的 publickeytoken,如下所示:

// Metadata version: v2.0.50727
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 2:0:0:0
}
.assembly extern My.Assembly
{
  .publickeytoken = (3E 5D C7 B6 5B C4 C7 0E )                         // .z\V.4..
  .ver 1:0:0:0
}
.assembly extern System.Core
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 3:5:0:0
}

编译后,一切都应该按预期工作:)

于 2012-09-10T06:58:01.953 回答