我有一個奇怪的問題。 我想刪除已經加載的程序集(硬盤上的plugin.dll),但程序集被操作系統(vista)鎖定,即使我已經卸載它。如何刪除AppDomain.Unload(域)後的pluginassembly
f.e.
AppDomainSetup setup = new AppDomainSetup();
setup.ShadowCopyFiles = "true";
AppDomain appDomain = AppDomain.CreateDomain(assemblyName + "_AppDomain", AppDomain.CurrentDomain.Evidence, setup);
IPlugin plugin = (IPlugin)appDomain.CreateInstanceFromAndUnwrap(assemblyName, "Plugin.MyPlugins");
我還需要assemblyinfos,因爲我不知道是哪個班的pluginassembly實現了IPlugin接口。應該可以在一個Pluginassembly中有多個插件。
Assembly assembly = appDomain.Load(assemblyName);
if (assembly != null) {
Type[] assemblyTypes = assembly.GetTypes();
foreach (Type assemblyTyp in assemblyTypes) {
if (typeof(IPlugin).IsAssignableFrom(assemblyTyp)) {
IPlugin plugin = (IPlugin)Activator.CreateInstance(assemblyTyp);
plugin.AssemblyName = assemblyNameWithEx;
plugin.Host = this;
}
}
}
AppDomain.Unload(appDomain);
如何在不鎖定程序集的情況下從appDomain獲取assemblyinfos?
最好的問候
當我嘗試它時,它工作正常,但是您的程序無論如何都是短的;) – 2009-01-12 18:13:39