private void WriteNode(XmlWriter xmlWriter, VisualStudioProjectNode node, string projectPath) { var ns = node.Attributes?.SingleOrDefault(x => x.Name.Equals("xmlns")); var attr = node.Attributes?.Where(x => !x.Name.Equals("xmlns")); if (ns != null) { xmlWriter.WriteStartElement(node.Name, ns.Value); } else { xmlWriter.WriteStartElement(node.Name); } WriteAttributes(xmlWriter, attr); foreach (var child in node.Children) { WriteNode(xmlWriter, child, projectPath); } if (!string.IsNullOrWhiteSpace(node.Value)) { xmlWriter.WriteString(node.Value); } xmlWriter.WriteEndElement(); if (!string.IsNullOrWhiteSpace(node.GeneratedData)) { WriteGeneratedData(node, projectPath); } }
private int GetWarningLevel(VisualStudioProjectNode node) { var warningLevelNode = _projectNodeSelector.First(node, "WarningLevel"); if (warningLevelNode == null) { return(4); // Default, node is not always present in .Net Standard project structure. } return(int.Parse(warningLevelNode.Value)); }
public (string configuration, string platform) GetConfigurationAndPlatform(VisualStudioProjectNode node) { var attribute = node.Attributes.First(x => x.Name.Equals("Condition", StringComparison.OrdinalIgnoreCase)); string pattern = @"==\s*'(?<configuration>.*)\|(?<platform>.*)'"; var match = Regex.Match(attribute.Value, pattern); return(match.Groups["configuration"].Value, match.Groups["platform"].Value); }
private bool GetTreatWarningsAsErrors(VisualStudioProjectNode node) { var treatWarningsAsErrorsNode = _projectNodeSelector.First(node, "TreatWarningsAsErrors"); if (treatWarningsAsErrorsNode == null) { return(false); } return(bool.Parse(treatWarningsAsErrorsNode.Value)); }
private string GetLanguageVersion(VisualStudioProjectNode node) { var languageVersion = _projectNodeSelector.First(node, ""); if (languageVersion == null) { return("default"); } return(languageVersion.Value); }
private bool GetCodeAnalysisIngoreGeneratedCode(VisualStudioProjectNode node) { var codeAnalysisIngoreGeneratedCode = _projectNodeSelector.First(node, "CodeAnalysisIgnoreGeneratedCode"); if (codeAnalysisIngoreGeneratedCode == null) { return(true); } return(bool.Parse(codeAnalysisIngoreGeneratedCode.Value)); }
private bool GetRunCodeAnalysis(VisualStudioProjectNode node) { var runCodeAnalysis = _projectNodeSelector.First(node, "RunCodeAnalysis"); if (runCodeAnalysis == null) { return(false); } return(bool.Parse(runCodeAnalysis.Value)); }
public VisualStudioProject ReadProject(string fileName) { VisualStudioProjectNode activeNode = null; var project = new VisualStudioProject(); project.ProjectFileName = fileName; using (var xmlReader = XmlReader.Create(fileName)) { while (xmlReader.Read()) { if (xmlReader.IsStartElement()) { bool isEmptyElement = xmlReader.IsEmptyElement; var newNode = new VisualStudioProjectNode { Name = xmlReader.Name, Value = xmlReader.Value, NodeType = VisualStudioProjectNodeType.Element }; if (xmlReader.HasAttributes) { newNode.Attributes = ReadAttributes(xmlReader); } if (activeNode == null) { project.Root = newNode; } else { newNode.Parent = activeNode; activeNode.Children.Add(newNode); } if (!isEmptyElement) { activeNode = newNode; } } else if (xmlReader.NodeType == XmlNodeType.EndElement) { activeNode = activeNode?.Parent; } else if (xmlReader.NodeType == XmlNodeType.Text) { activeNode.Value = xmlReader.Value; } else if (xmlReader.NodeType == XmlNodeType.Comment) { var newNode = new VisualStudioProjectNode { Name = xmlReader.Name, Value = xmlReader.Value, NodeType = VisualStudioProjectNodeType.Comment }; newNode.Parent = activeNode; activeNode.Children.Add(newNode); } } } project.PackageConfiguration = ReadPackages(fileName); return(project); }
private void WriteGeneratedData(VisualStudioProjectNode node, string projectPath) { var fileName = Path.Combine(projectPath, GetNodeFileName(node)); _fileReaderWriter.WriteFile(fileName, node.GeneratedData, Encoding.UTF8); }
private string GetNodeFileName(VisualStudioProjectNode node) { var nodeFilename = node.Attributes.FirstOrDefault(a => a.Name == "Include")?.Value; return(nodeFilename); }
private string GetCodeAnalysisRuleSet(VisualStudioProjectNode node) { var codeAnalysisRuleset = _projectNodeSelector.First(node, "CodeAnalysisRuleSet"); return(codeAnalysisRuleset?.Value); }