0

アセンブリが解決されるに呼び出される、フックできるイベントはありますか。

たとえば、AppDomain の一部のコードが Assembly.Load(path) を呼び出している場合、このアセンブリを読み込もうとしているというイベントが発生しますか?

これは、一部のコンポーネントでハードコーディングされている可能性のあるアセンブリの読み込みをリダイレクトするのに役立ちます。

可能であれば、構成からこれを行うことも有効なオプションです。

助言がありますか ?

4

2 に答える 2

3

いいえ、そのようなイベントはありません。考えられるハックの 1 つは、AppDomainSetup.ApplicationBase プロパティを意図的に誤って構成して、CLR がアセンブリをまったく見つけられないようにすることです。その場合、AppDomain.AssemblyResolve イベントが発生し、独自のアセンブリ解決スキームを実装できるようになります。

于 2011-07-10T14:50:52.613 に答える
1

ドキュメントから、このプロセスの開始時にイベントがスローされないようです。したがって、(可能であれば)次のようなものを書き、それを最後まで使用することをお勧めします。

public static class AssemblyLoader
{
    public delegate void LoadDelegate(string path);

    public void LoadAssembly(string path)
    {
        if(OnPreLoad != null)
            OnPreLoad(path);
        // load assembly here
    }  // eo LoadAssembly

    public event LoadDelegate OnPreLoad;
} // eo AssemblyLoader

次に、アセンブリをロードするときに、コード内の任意の場所でこのメソッドを使用できます。

明らかに、アセンブリの読み込みを防止したり、別のことをしたりするために、そのデリゲート (パスだけでなく) で適切なオブジェクトを使用したい場合があります。

于 2011-07-10T14:53:15.920 に答える