Wie lade ich eine Assembly für eine .NET-Anwendungsdomäne neu?
Wir laden eine Assembly (eine DLL), die eine Konfigurationsdatei liest. Wir müssen die Konfigurationsdatei ändern und dann die Assembly neu laden. Wir sehen, dass nach dem Laden der Assembly zum zweiten Mal keine Änderung in der Konfiguration erfolgt. Kann jemand sehen, was hier falsch ist? Wir haben die Details des Lesens in der Konfigurationsdatei ausgelassen.
<code>AppDomain subDomain; string assemblyName = "mycli"; string DomainName = "subdomain"; Type myType; Object myObject; // Load Application domain + Assembly subDomain = AppDomain.CreateDomain( DomainName, null, AppDomain.CurrentDomain.BaseDirectory, "", false); myType = myAssembly.GetType(assemblyName + ".mycli"); myObject = myAssembly.CreateInstance(assemblyName + ".mycli", false, BindingFlags.CreateInstance, null, Params, null, null); // Invoke Assembly object[] Params = new object[1]; Params[0] = value; myType.InvokeMember("myMethod", BindingFlags.InvokeMethod, null, myObject, Params); // unload Application Domain AppDomain.Unload(subDomain); // Modify configuration file: when the assembly loads, this configuration file is read in // ReLoad Application domain + Assembly // we should now see the changes made in the configuration file mentioned above </code>