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); } } }