ln.build/ln.build/support/dotnet/CSProjHelper.cs

66 lines
1.9 KiB
C#

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