SolutionParser parses a Visual Studio solution file into an object structure.
Install-Package Onion.SolutionParser.Parser
SolutionParser is easy to use:
var solution = SolutionParser.Parse("/path/to/solution.sln");
//IEnumerable<GlobalSection>
var global = solution.Global;
//IEnumerable<Project>
var projects = solution.Projects;
The included types mirror the various sections contained in a solution file.
###GlobalSection###
The GlobalSection
type is made up of a name, a GlobalSectionType
(either preSolution or postSolution), and a dictionary of environment entries.
public class GlobalSection : ISolutionItem
{
public string Name { get; set; }
public GlobalSectionType Type { get; set; }
public IDictionary<string, string> Entries { get; set; }
}
public enum GlobalSectionType
{
PostSolution,
PreSolution
}
###Project###
The Project
type is made up of a type guid, a name, a path to the project file, and a unique guid.
A project may also contain a ProjectSection
type that is composed of a name, a ProjectSectionType
(either preProject or postProject) and a dictionary of environment entries.
public class Project : ISolutionItem
{
public Guid TypeGuid { get; private set; }
public string Name { get; set; }
public string Path { get; set; }
public Guid Guid { get; private set; }
public ProjectSection ProjectSection { get; set; }
}
public class ProjectSection
{
public string Name { get; set; }
public ProjectSectionType Type { get; set; }
public IDictionary<string, string> Entries { get; set; }
}
public enum ProjectSectionType
{
PostProject,
PreProject
}
###Solution###
The Solution
type is composed of an IEnumerable<GlobalSection>
and
an IEnumerable<Project>
.
public class Solution : ISolution
{
public IEnumerable<GlobalSection> Global { get; set; }
public IEnumerable<Project> Projects { get; set; }
}
SolutionParser contains three parsers for more or less detailed access to a solution file.
###SolutionParser###
The SolutionParser
class is the most direct parser, and returns a fully composed Solution
object.
var solution = SolutionParser.Parse("/path/to/solution.sln");
###GlobalSectionParser###
A GlobalSectionParser
accepts the text contents of a solution file. The parse method
returns an IEnumerable<GlobalSection>
.
var parser = new GlobalSectionParser(solutionContents);
//IEnumerable<GlobalSection>
var sections = parser.Parse();
###ProjectParser###
A ProjectParser
accepts the contents of a solution file. The parse method
returns an IEnumerable<Project>
.
var parser = new ProjectParser(solutionContents);
//IEnumerable<Project>
var projects = parser.Parse();
SolutionParser assumes package restore is enabled. To run the tests just clone the project, hit build, and run the unit tests with your favorite NUnit runner.