+ // Removing the reference does not mean it will be saved back to disk!
+ // That depends on the AssemblyAction set for the `assembly`
+ switch (Annotations.GetAction (assembly)) {
+ case AssemblyAction.Copy:
+ // Copy means even if "unlinked" we still want that assembly to be saved back
+ // to disk (OutputStep) without the (removed) reference
+ Annotations.SetAction (assembly, AssemblyAction.Save);
+ ResolveAllTypeReferences (assembly);
+ break;
+
+ case AssemblyAction.Save:
+ case AssemblyAction.Link:
+ ResolveAllTypeReferences (assembly);
+ break;
+ }
+ return;
+ }
+ }
+
+ void ResolveAllTypeReferences (AssemblyDefinition assembly)
+ {
+ if (resolvedTypeReferences == null)
+ resolvedTypeReferences = new HashSet<AssemblyDefinition> ();
+ if (resolvedTypeReferences.Contains (assembly))