Das AssemblyResolve-Ereignis muss angeschlossen werden, wenn DisallowApplicationBaseProbing = true ist

Ich muss ein AssemblyResolve-Ereignis für meine erstellte AppDomain einrichten, wenn DisallowApplicationBaseProbing = true festgelegt wurde. Der Grund dafür ist, dass die Laufzeitumgebung das AssemblyResolve-Ereignis aufruft, das zum Auflösen einer Assembly erforderlich ist, anstatt zuerst zu testen. Auf diese Weise kann ein anderer Entwickler MyDllName.dll nicht einfach in das ApplicationBase-Verzeichnis einfügen und die Assembly überschreiben, die ich im AssemblyResolve-Ereignis laden wollte.

Das Problem dabei ist das folgende ...

  class Program
  {
 static void Main()
 {
    AppDomainSetup ads = new AppDomainSetup();
    ads.DisallowApplicationBaseProbing = true;
    AppDomain appDomain = AppDomain.CreateDomain("SomeDomain", null, ads);
    appDomain.AssemblyResolve += OnAssemblyResolve;
    appDomain.DoCallBack(target);
 }

 static System.Reflection.Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
 {
    Console.WriteLine("Hello");
    return null;

 }

 private static void target()
 {
    Console.WriteLine(AppDomain.CurrentDomain);
 }
  }

Der Code kommt nie über die Zeile + = OnAssemblyResolve hinaus.

Wenn der Code ausgeführt werden soll, versucht die neue Anwendungsdomäne, die Assembly aufzulösen, in der ich ausgeführt habe. Da DisallowApplicationBaseProbing = true ist, ist nicht bekannt, wo sich diese Assembly befindet. Ich habe anscheinend ein Henne-Ei-Problem. Es muss meine Assembly aufgelöst werden, um den Assembly-Resolver anzuschließen, aber der Assembly-Resolver muss meine Assembly aufgelöst werden.

Vielen Dank für jede Hilfe.

-Mike

Antworten auf die Frage(1)

Ihre Antwort auf die Frage