2011-01-23 10 views
2

アセンブリの型が強く、ソースコードがないライブラリに問題があります。 Reflectorのおかげで、バグの原因がわかりましたが、残念ながらクラスを封印することで、サブクラス化することができなくなりました。多数の内部メソッドを参照するので、ソース全体の簡単なコピー/ペーストも失敗します。強力な名前のアセンブリにILを注入しますか?

最後の手段として、アセンブリにILを挿入できると思っていました(比較的簡単なことですが、|| something.GetType() == typeof(System.DBNull)をif文に追加する必要がありますが、強い命名が問題になると思います)。

これから抜け出す方法または私はベンダーの慈悲で午前はありますか?

答えて

2

ildasm/ilasmを使用してアセンブリをラウンドトリップしてilを自分で修正した場合、強力な名前はラウンドトリップに耐えられません(辞退するキーがないため)。それがギャルになければならない場合は、独自の鍵を作成して新しい鍵で辞めることができます。

問題がサポートされている場合、ベンダーは、後でアセンブリを更新する必要がある場合(新しいバージョンが出てくる場合)、後でお手伝いしなくても、新しいバージョンの修正を行う必要があります。ベンダーのdll ...これは悪夢のドミノ効果を全面的に開始するので、もし可能であれば、アセンブリを変更しないでください。

+0

厳しい名前が実際に改ざんに耐えられないため –

1

あなたは、それを持っている必要がないならば強く名前を付ける?

続けるために組み立てが必要です前と同じ名前ですか?

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

ただし、ライブラリのライセンスでは、変更されたコピーを再配布することができない場合があります。

ライブラリを出荷する必要がある場合は、おそらくベンダーの手に委ねられています。

関連する問題