using System.IO; using System.Xml; using ln.build.semver; namespace ln.build.support.dotnet { public class CSProjHelper { public string FileName { get; set; } public CSProjHelper(string filename) { FileName = filename; } public string GetName() { XmlDocument projectFile = new XmlDocument(); projectFile.Load(FileName); XmlNode nodeVersion = projectFile.SelectSingleNode("Project/PropertyGroup/AssemblyName"); return nodeVersion?.InnerText ?? Path.GetFileNameWithoutExtension(FileName); } public SemVersion GetVersion() { XmlDocument projectFile = new XmlDocument(); projectFile.Load(FileName); XmlNode nodeVersion = projectFile.SelectSingleNode("Project/PropertyGroup/Version"); return SemVersion.Parse(nodeVersion.InnerText); } public void SetVersion(SemVersion version) { XmlDocument projectFile = new XmlDocument(); projectFile.Load(FileName); XmlNode nodeVersion = projectFile.SelectSingleNode("Project/PropertyGroup/Version"); nodeVersion.InnerText = version.ToString(); projectFile.Save(FileName); } public bool IsPackable() { XmlDocument projectFile = new XmlDocument(); projectFile.Load(FileName); XmlNode nodePackable = projectFile.SelectSingleNode("Project/PropertyGroup/IsPackable"); return bool.Parse(nodePackable?.InnerText ?? "true"); } public string GetOutputType() { XmlDocument projectFile = new XmlDocument(); projectFile.Load(FileName); XmlNode nodeVersion = projectFile.SelectSingleNode("Project/PropertyGroup/OutputType"); return nodeVersion?.InnerText ?? "Library"; } } }