У меня странная проблема.
Я хотел бы удалить сборку (plugin.dll на жестком диске), которая уже загружена, но сборка заблокирована операционной системой (Vista), даже если я ее выгрузил.
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");
Мне также нужны сведения о сборке, поскольку я не знаю, какие классы в сборке плагина реализуют интерфейс IPlugin. Должно быть возможно иметь более одного плагина в одной сборке плагина.
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);
Как можно получить информацию о сборке из домена приложения без блокировки сборки?
С наилучшими пожеланиями