Пример #1
0
        public void ScanProject(string filename, ParsedProject project)
        {
            Dictionary<string, NodeProcessing> processingActions =
                new Dictionary<string, NodeProcessing>
            {
                { "PropertyGroup", ProcessPropertyGroup },
                { "Import", ProcessImport },
                { "Target", ProcessTargetNode }
            };

            string expandedFilename = project.ExpandTokens(filename);

            if (project.HasProjectBeenParsed(expandedFilename))
            {
                return;
            }

            project.AddProjectFile(expandedFilename);

            string extension = Path.GetExtension(expandedFilename).ToUpper().Trim();
            if (extension == ".SLN")
            {
                return;
            }

            XmlDocument projectFile = new XmlDocument();
            projectFile.Load(expandedFilename);

            foreach (XmlNode node in projectFile.DocumentElement.ChildNodes)
            {
                string localName = node.LocalName;
                if (processingActions.ContainsKey(localName))
                {
                    processingActions[localName](node, filename, project);
                }
            }
        }