gpt4 book ai didi

c# - 如何为 .NET 应用程序域重新加载程序集?

转载 作者:太空狗 更新时间:2023-10-29 20:49:02 27 4
gpt4 key购买 nike

我们正在加载读取配置文件的程序集(DLL)。我们需要更改配置文件,然后重新加载程序集。我们看到第二次加载程序集后,配置没有变化。有人看到这里有什么问题吗?我们省略了读取配置文件的细节。

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

最佳答案

程序集一旦加载就无法卸载。但是,您可以卸载 AppDomain,因此最好的办法是将逻辑加载到单独的 AppDomain 中,然后当您想要重新加载程序集时,您必须卸载 AppDomain,然后重新加载它。

关于c# - 如何为 .NET 应用程序域重新加载程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024072/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com