使用AppDomain
首先将组件加载到其自身中会更安全,更灵活
AppDomain。
因此,而不是先前给出的答案:
var asm = Assembly.LoadFile(@"C:myDll.dll");var type = asm.GetType("TestRunner");var runnable = Activator.CreateInstance(type) as IRunnable;if (runnable == null) throw new Exception("broke");runnable.Run();我建议以下内容(根据此答案适应相关问题):
var domain = AppDomain.CreateDomain("NewDomainName");var t = typeof(TypeIWantToLoad);var runnable = domain.CreateInstanceFromAndUnwrap(@"C:myDll.dll", t.Name) as IRunnable;if (runnable == null) throw new Exception("broke");runnable.Run();现在,您可以卸载装配并具有不同的安全设置。
如果您想要更大的灵活性和功能来动态加载和卸载程序集,则应查看托管加载项框架(即
System.AddIn名称空间)。有关更多信息,请参见MSDN上有关加载项和可扩展性的文章。



