2

アセンブリが厳密に型指定されていて、ソース コードがないライブラリに問題があります。Reflector のおかげでバグの原因を突き止めましたが、残念ながらクラスが封印されているため、単にサブクラス化することはできません。大量の内部メソッドを参照しているため、ソース全体の単純なコピー/貼り付けも失敗します。

最後の手段として、IL をアセンブリに挿入できると思いました (これは比較的単純なことで|| something.GetType() == typeof(System.DBNull)、if ステートメントに を追加するだけですが、厳密な名前付けが問題になると思いますか?

これを回避する方法はありますか、それとも私がベンダーに翻弄されているのでしょうか?

4

2 に答える 2

2

ildasm/ilasm を使用してアセンブリを往復し、自分で il を修正した場合、厳密な名前は往復で存続しません (再署名するためのキーがないため)。gac にある必要がある場合は、独自のキーを作成し、新しいキーで再署名できます。

問題はサポートです。ベンダーはその後あなたを助けない可能性が高く、今後アセンブリを更新する必要がある場合 (たとえば、新しいバージョンが出てくる場合)、ベンダーの dll の新しいバージョンに再度修正を行う必要があります。 .. これにより、悪夢のドミノ効果全体が始まります-可能な限り、アセンブリを変更することは避けます.

于 2011-02-16T02:15:09.780 に答える
1

アセンブリに厳密な名前を付け続ける必要がありますか?

その場合、以前と同じ厳密な名前にする必要がありますか?

ベンダーのキーではなく、いつでも独自のキー ペアを生成し、自分のキーでアセンブリに再署名できます。これにより、変更されたアセンブリを gac に挿入することができます。

ただし、ライブラリのライセンスによっては、変更されたコピーの再配布が許可されていない場合があることに注意してください。

ライブラリを出荷する必要がある場合は、おそらくベンダーに翻弄されます。

于 2011-02-15T14:17:21.873 に答える