public void Execute() { Debug.Assert(savedStates == null); if (savedStates != null) { throw new InvalidOperationException(); } this.savedStates = new SavedState[this.nodes.Length]; for (int i = 0; i < nodes.Length; i++) { var node = nodes[i]; savedStates[i] = new SavedState(); var savedState = savedStates[i]; var module = node.LoadedAssembly.ModuleDefinition; bool b = module != null && module.Assembly != null && module.Assembly.Modules.Count == 1 && module.Assembly.ManifestModule == module; Debug.Assert(b); if (!b) { throw new InvalidOperationException(); } node.EnsureChildrenFiltered(); savedState.AssemblyDef = module.Assembly; module.Assembly.Modules.Remove(module); savedState.ModuleKind = module.Kind; ModuleUtils.WriteNewModuleKind(module, ModuleKind.NetModule, out savedState.Characteristics); savedState.ModuleNode = node.OnConvertedToNetModule(); } }
public void Execute() { Debug.Assert(savedStates == null); if (savedStates != null) { throw new InvalidOperationException(); } savedStates = new SavedState[nodes.Length]; for (int i = 0; i < nodes.Length; i++) { var node = nodes[i]; savedStates[i] = new SavedState(); var savedState = savedStates[i]; int index = node.TreeNode.Parent.Children.IndexOf(node.TreeNode); bool b = index >= 0; Debug.Assert(b); if (!b) { throw new InvalidOperationException(); } savedState.ModuleNode = (ModuleDocumentNode)node.TreeNode.Children.First(a => a.Data is ModuleDocumentNode).Data; node.TreeNode.Children.Remove(savedState.ModuleNode.TreeNode); node.TreeNode.Parent.Children[index] = savedState.ModuleNode.TreeNode; var module = node.Document.ModuleDef; b = module != null && module.Assembly != null && module.Assembly.Modules.Count == 1 && module.Assembly.ManifestModule == module; Debug.Assert(b); if (!b) { throw new InvalidOperationException(); } node.TreeNode.EnsureChildrenLoaded(); savedState.AssemblyDef = module.Assembly; module.Assembly.Modules.Remove(module); savedState.ModuleKind = module.Kind; ModuleUtils.WriteNewModuleKind(module, ModuleKind.NetModule, out savedState.Characteristics); } }