void ConvertCOMThread(Object stateInfo) { object[] param = (object[])stateInfo; object sender = param[0]; ArrayList refrences = param[1] as ArrayList; TreeNode node = param[2] as TreeNode; BeginInvoke(new MethodInvoker(delegate { tsMessage.Text = "Please wait..."; })); foreach (ReferenceProjectItem reference in refrences) { try { if (reference.ItemType == ItemType.COMReference) { if (Path.IsPathRooted(reference.FileName)) { m_AIMSProject.AddProjectItem(reference); } else { ArrayList addedRefs = ImportCom(reference as ComReferenceProjectItem); foreach (ReferenceProjectItem refs in addedRefs) { m_AIMSProject.AddProjectItem(refs); BeginInvoke(new MethodInvoker(delegate { TreeNode refNode = node.Nodes.Add(refs.Name); refNode.ImageKey = "Reference.ico"; refNode.Tag = NodeType.Reference; })); } } } else if (reference.ItemType == ItemType.Reference) { m_AIMSProject.AddProjectItem(reference); BeginInvoke(new MethodInvoker(delegate { TreeNode refNode = node.Nodes.Add(reference.Name); refNode.ImageKey = "Reference.ico"; refNode.Tag = NodeType.Reference; })); } } catch (Exception Ex) { MessageBox.Show(Ex.Message); } BeginInvoke(new MethodInvoker(delegate { tsMessage.Text = "Ready"; })); } }
/// <summary> /// 降XElement元素转换成工程子项 /// </summary> /// <param name="rootElement">工程文件中包含的根元素</param> /// <param name="project">子项属于的工程</param> private static void ParseToProjectItem(XElement rootElement, IProject project) { IEnumerable <XElement> element = from el in rootElement.Elements() select el; IEnumerable <XElement> element1 = element.Where(el => el.Name == "Items"); foreach (XElement e1 in element1.Nodes <XElement>()) { int count = e1.Elements().Count <XElement>(); string type = e1.Attribute("Type").Value; string name = e1.Attribute("Name").Value; if (count == 0)//CustomProjectItem { project.AddProjectItem(new CustomProjectItem(project, new ItemType(type), name)); } else//DirectoryProjectItem { DirectoryProjectItem projectItem = new DirectoryProjectItem(project, new ItemType(type), name); project.AddProjectItem(projectItem); BuildDirectoryItem(project, projectItem, e1); } } }
/// <summary> /// 降XElement元素转换成工程子项 /// </summary> /// <param name="rootElement">工程文件中包含的根元素</param> /// <param name="project">子项属于的工程</param> private static void ParseToProjectItem(XElement rootElement,IProject project) { IEnumerable<XElement> element = from el in rootElement.Elements() select el; IEnumerable<XElement> element1 = element.Where(el => el.Name == "Items"); foreach (XElement e1 in element1.Nodes<XElement>()) { int count = e1.Elements().Count<XElement>(); string type = e1.Attribute("Type").Value; string name = e1.Attribute("Name").Value; if (count == 0)//CustomProjectItem { project.AddProjectItem(new CustomProjectItem(project, new ItemType(type), name)); } else//DirectoryProjectItem { DirectoryProjectItem projectItem = new DirectoryProjectItem(project, new ItemType(type), name); project.AddProjectItem(projectItem); BuildDirectoryItem(project, projectItem, e1); } } }