Пример #1
0
        private void ProcessTargetNode(XmlNode node,
            string parentProjectFilename,
            ParsedProject project)
        {
            string name = node.Attributes["Name"].InnerText;
            XmlNode dependsOnTargets = node.Attributes.GetNamedItem("DependsOnTargets");
            string dependencies = string.Empty;
            if (dependsOnTargets != null)
            {
                dependencies = dependsOnTargets.InnerText;
            }

            Target target = project.AddTarget(name, dependencies, parentProjectFilename);

            foreach (XmlNode child in node.ChildNodes)
            {
                if (child.NodeType == XmlNodeType.Element)
                {
                    if (child.LocalName == "MSBuild")
                    {
                        XmlNode childProjects = child.Attributes.GetNamedItem("Projects");
                        if (childProjects != null)
                        {
                            ScanProject(childProjects.InnerText, project);

                            XmlNode targets = child.Attributes.GetNamedItem("Targets");
                            if (targets != null)
                            {
                                string projectFile = project.GetExpandedRelativeFilename(childProjects.InnerText);
                                string dependencyList = targets.InnerText;
                                target.AddRemoteDependencyList(projectFile, dependencyList);
                            }
                        }
                    }
                    if (child.LocalName == "CallTarget")
                    {
                        XmlNode targets = child.Attributes.GetNamedItem("Targets");
                        if (targets != null)
                        {
                            target.AddItemToDependencyList(targets.InnerText);
                        }
                    }
                }
            }
        }