Unload loaded modules when renaming is over

This commit is contained in:
de4dot 2011-11-03 18:55:14 +01:00
parent 98cdcf9ca5
commit 42e7583659
2 changed files with 13 additions and 1 deletions

View File

@ -125,6 +125,7 @@ namespace de4dot.renamer {
renameMemberDefinitions();
renameMemberReferences();
renameResources();
externalAssemblies.unloadAll();
DotNetUtils.typeCaches.invalidateAll();
}

View File

@ -38,6 +38,11 @@ namespace de4dot.renamer {
return null;
}
public void unload() {
foreach (var module in asmDef.Modules)
DotNetUtils.typeCaches.invalidate(module);
}
}
// Loads assemblies that aren't renamed
@ -66,7 +71,7 @@ namespace de4dot.renamer {
}
Log.v("Loaded assembly {0}", asmFullName);
return assemblies[asmFullName] = asm = new ExternalAssembly(asmDef);
return assemblies[asmFullName] = new ExternalAssembly(asmDef);
}
public TypeDefinition resolve(TypeReference type) {
@ -75,5 +80,11 @@ namespace de4dot.renamer {
return null;
return asm.resolve(type);
}
public void unloadAll() {
foreach (var asm in assemblies.Values)
asm.unload();
assemblies.Clear();
}
}
}