internal void UnloadAddin(string id)
{
RemoveAddinExtensions (id);
RuntimeAddin addin = GetAddin (id);
if (addin != null) {
addin.UnloadExtensions ();
lock (LocalLock) {
var loadedAddinsCopy = new Dictionary<string,RuntimeAddin> (loadedAddins);
loadedAddinsCopy.Remove (Addin.GetIdName (id));
loadedAddins = loadedAddinsCopy;
if (addin.AssembliesLoaded) {
var loadedAssembliesCopy = new Dictionary<Assembly,RuntimeAddin> (loadedAssemblies);
foreach (Assembly asm in addin.Assemblies)
loadedAssembliesCopy.Remove (asm);
loadedAssemblies = loadedAssembliesCopy;
}
}
ReportAddinUnload (id);
}
}