public static BuildProcessParameters FromXml(string xml) { XDocument document = XDocument.Parse(xml); // foreach (var element in document.Elements()) // { // var localName = element.Name.LocalName; // } XElement elDictionary = document.Elements().Single(element => element.Name.LocalName == "Dictionary"); XElement buildSettings = elDictionary.Elements().Single(element => element.Name.LocalName == "BuildSettings"); string projectsToBuild = buildSettings.Attribute("ProjectsToBuild").Value; XElement elConfigFolder = elDictionary.Elements().Single(element => element.Attributes().Any(attr => attr.Value == "ConfigurationFolderPath")); XElement elArgs = elDictionary.Elements().SingleOrDefault(element => element.Attributes().Any(attr => attr.Value == "MSBuildArguments")); XElement elLogPerProj = elDictionary.Elements().SingleOrDefault(element => element.Attributes().Any(attr => attr.Value == "LogFilePerProject")); XElement elVerbosity = elDictionary.Elements().SingleOrDefault(element => element.Attributes().Any(attr => attr.Value == "Verbosity")); BuildProcessParameters result = new BuildProcessParameters(); result.ConfigurationFolderPath = elConfigFolder.Value; result.MSBuildArguments = elArgs != null ? elArgs.Value : string.Empty; result.LogFilePerProject = elLogPerProj != null && elLogPerProj.Value.ToString().ToUpper() == "TRUE"; if (elVerbosity != null) { result.Verbosity = (BuildVerbosity)Enum.Parse(typeof(BuildVerbosity), elVerbosity.Value, true); } return(result); }
public static BuildProcessParameters GetBuildProcessParameters(this IBuildDefinition definition) { return(BuildProcessParameters.FromXml(definition.ProcessParameters)); }