1

質問によると、

特定のバージョンを必要とするが、特定のパブリックキートークンを要求しない、別のアセンブリへの参照を指定することは可能ですか?私の直感はノーです(バージョンが指定されていると推測しているので、バージョンとpktの両方を含む完全修飾アセンブリ名全体が使用されます)

したがって、このシナリオがある場合:

アセンブリAのv1.0(符号なし)アセンブリAのv1.0を必要とするアセンブリBの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 に答える