public void Execute() { Debug.Assert(!hasExecuted); if (hasExecuted) { throw new InvalidOperationException(); } for (int i = 0; i < nodes.Length; i++) { var node = nodes[i]; var savedState = savedStates[i]; var module = node.LoadedAssembly.ModuleDefinition; bool b = module != null && module.Assembly == null; Debug.Assert(b); if (!b) { throw new InvalidOperationException(); } savedState.ModuleKind = module.Kind; ModuleUtils.AddToNewAssemblyDef(module, ModuleKind.Dll, out savedState.Characteristics); node.OnConvertedToAssembly(savedState.AssemblyTreeNode); } hasExecuted = true; }
public void Execute() { Debug.Assert(!hasExecuted); if (hasExecuted) { throw new InvalidOperationException(); } for (int i = 0; i < nodes.Length; i++) { var node = nodes[i]; var savedState = savedStates[i]; var module = node.Document.ModuleDef; bool b = module != null && module.Assembly == null; Debug.Assert(b); if (!b) { throw new InvalidOperationException(); } savedState.ModuleKind = module.Kind; ModuleUtils.AddToNewAssemblyDef(module, ModuleKind.Dll, out savedState.Characteristics); if (savedState.AssemblyFileNode == null) { var asmFile = DsDotNetDocument.CreateAssembly(node.Document); savedState.AssemblyFileNode = node.Context.DocumentTreeView.CreateAssembly(asmFile); } Debug.Assert(savedState.AssemblyFileNode.Document.Children.Count == 1); savedState.AssemblyFileNode.Document.Children.Remove(node.Document); Debug.Assert(savedState.AssemblyFileNode.Document.Children.Count == 0); savedState.AssemblyFileNode.TreeNode.EnsureChildrenLoaded(); Debug.Assert(savedState.AssemblyFileNode.TreeNode.Children.Count == 0); savedState.AssemblyFileNode.Document.Children.Add(node.Document); int index = node.Context.DocumentTreeView.TreeView.Root.DataChildren.ToList().IndexOf(node); b = index >= 0; Debug.Assert(b); if (!b) { throw new InvalidOperationException(); } node.Context.DocumentTreeView.TreeView.Root.Children[index] = savedState.AssemblyFileNode.TreeNode; savedState.AssemblyFileNode.TreeNode.AddChild(node.TreeNode); } hasExecuted = true; }