如何为.NET应用程序域重新加载程序集?我们正在加载读取配置文件的程序集(DLL)。我们需要更改配置文件,然后重新加载程序集。我们看到第二次加载组件后,配置没有任何变化。有人看到这里出了什么问题吗?配置文件中的读取细节我们省略。AppDomain子域;串assemblyName="mycli";字符串域名=“子域”;输入我的类型;对象我的对象;//加载应用程序域+程序集子域=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);//调用Assemblyobject[]Params=newobject[1];参数[0]=值;myType.InvokeMember("myMethod",BindingFlags.InvokeMethod,null,myObject,参数);//卸载应用程序域AppDomain.卸载(子域);//修改配置文件:加载程序集时,读取这个配置文件//ReLoadApplicationdomain+Assembly//我们现在应该看到上面提到的配置文件所做的更改加载后,您无法卸载程序集。但是,您可以卸载AppDomain,因此最好的办法是将逻辑加载到单独的AppDomain中,然后当您想要重新加载程序集时,您必须卸载AppDomain,然后重新加载它。请参阅以下2个链接以获得答案:我相信唯一的方法是启动一个新的AppDomain并卸载原来的AppDomain。这就是ASP.NET始终处理对web.config的更改的方式。如果您只更改某些部分,则可以使用ConfigurationManager.Refresh("sectionName")强制从磁盘重新读取。staticvoidMain(string[]args){vardata=newData();varlist=new列表();list.Add(newParent().Set(data));varconfigValue=ConfigurationManager.AppSettings["TestKey"];Console.WriteLine(configValue);Console.WriteLine("更新配置文件...");控制台.ReadKey();configValue=ConfigurationManager.AppSettings["TestKey"];Console.WriteLine("刷新前:{0}",configValue);ConfigurationManager.RefreshSection("appSettings");configValue=ConfigurationManager.AppSettings["TestKey"];Console.WriteLine("刷新后:{0}",configValue);控制台.ReadKey();}(请注意,如果您使用的是VS主机进程,则必须更改application.vshost.exe.config文件。)以上是C#学习教程:如何为.NET应用域重新加载程序集?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
