7

実行時に、参照されたアセンブリが「厳密な名前の検証に失敗しました」などでロードに失敗した場合 (テスト署名されているため)、実際に署名された別のパスから代替アセンブリを提供する方法はありますか?

AppDomain.CurrentDomain.AssemblyResolve にサブスクライブしようとしましたが、技術的に「不良」アセンブリが存在するため、起動されません。ロードできないだけです。

アセンブリを読み込めない場合にフォールバック アセンブリを提供する一般的な方法はありますか?

4

4 に答える 4

1

assembly.LoadFrom を呼び出すだけで、実質的にセキュリティ チェックなしで、選択したアセンブリを読み込むことができると思います。アプリの開始時にこれを頻繁に使用するため、他のアセンブリのバージョン変更により適切に対処できます。

Assembly.LoadFrom Method (String, Evidence, Byte[], AssemblyHashAlgorithm)も見 てください。ハッシュとハッシュ アルゴリズムの受け渡しを制御できるようです。

于 2009-10-02T19:34:49.767 に答える
0

アプリケーションがアセンブリに失敗した場合に備えて、アセンブリを見つける標準的な方法があります。

// register on assembly resolve exception
AppDomain.CurrentDomain.AssemblyResolve += ResolveEventHandler;

// try to load the assembly yourself
private static Assembly ResolveEventHandler(object sender, ResolveEventArgs args)
{
    return Assembly.Load(some_location);
}
于 2009-10-19T17:01:02.100 に答える
0

私が望んでいることは不可能のようです。別の道を行くことにしました。コンパイル時にテスト署名されたバイナリではなく、署名されたバイナリに条件付きでリンクするようにビルド システムを変更する必要があります。

でも、提案してくれてありがとう!

于 2009-10-02T20:45:54.170 に答える