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> ();
foreach (Assembly asm in addin.Assemblies)
{
loadedAssembliesCopy.Remove(asm);
}
loadedAssemblies = loadedAssembliesCopy;
}
}
ReportAddinUnload(id);
}
}