private static BuilderInfo[] GetBuilderInfos(string builderConfigFileName) { string fileName = Path.GetFileNameWithoutExtension(builderConfigFileName); string assemblyFile = Path.GetDirectoryName(builderConfigFileName) + "\\" + fileName + ".dll"; if (File.Exists(assemblyFile)) { List <BuilderInfo> infos = new List <BuilderInfo>(); XmlDocument config = new XmlDocument(); string name, entry, adbVersion, localizable; config.Load(builderConfigFileName); XmlNodeList xnl = config.GetElementsByTagName("Builders"); if (xnl.Count > 0 && xnl[0].NodeType == XmlNodeType.Element) { XmlElement builders = xnl[0] as XmlElement; adbVersion = builders.GetAttribute("ADBVersion"); if (string.IsNullOrEmpty(adbVersion)) { adbVersion = "2.0.0.0"; } foreach (XmlElement customBuilder in builders.GetElementsByTagName("CustomBuilder")) { if (customBuilder.NodeType == XmlNodeType.Element) { entry = customBuilder.GetAttribute("Entry"); localizable = customBuilder.GetAttribute("Localizable"); if (string.IsNullOrEmpty(localizable)) { localizable = "false"; } if (string.Compare(localizable, "true", true) == 0) { XmlNodeList profileElements = customBuilder.GetElementsByTagName("Profile"); XmlElement profileElement = profileElements[0] as XmlElement; foreach (XmlElement profile in profileElements) { if (string.Compare(profile.GetAttribute("Language"), Thread.CurrentThread.CurrentUICulture.Parent.Name, true) == 0) { profileElement = profile; } } name = profileElement.GetAttribute("Name"); } else { name = customBuilder.GetAttribute("Name"); } BuilderInfo builderInfo = new BuilderInfo(name, entry, builderConfigFileName, assemblyFile, adbVersion); infos.Add(builderInfo); } } return(infos.ToArray()); } else { return(null); } } else { return(null); } }