|
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using QiHe.CodeLib;
namespace QiHe.ProjectTool
{
public class Solution
{
public string FileName;
public string RootPath;
public List<string> ProjectsFiles = new List<string>();
public List<Project> Projects = new List<Project>();
public List<string> WebSiteProjects = new List<string>();
public IEnumerable<string> GetFileList()
{
MultiSet<string> files = new MultiSet<string>();
foreach (Project project in Projects)
{
files.AddRange(project.GetFilePathList());
}
foreach (string webfolder in WebSiteProjects)
{
string webfolderpath = Path.Combine(this.RootPath, webfolder);
if (Directory.Exists(webfolderpath))
{
foreach (string file in FileHelper.GetFileList(webfolderpath))
{
if (!file.EndsWith(".pdb"))
{
files.Add(Path.Combine(webfolder, file));
}
}
}
}
files.Add(FileName);
return files.Items;
}
public static Solution Load(string solutionFile)
{
Solution solution = new Solution();
Regex regex = new Regex(@"= \""[^""]*\"", \""(?<file>[^""]*)\""", RegexOptions.Singleline);
foreach (string line in File.ReadAllLines(solutionFile))
{
if (line.StartsWith("Project"))
{
Match match = regex.Match(line);
if (match.Success)
{
string file = match.Groups["file"].Value;
if (file.EndsWith(".csproj"))
{
solution.ProjectsFiles.Add(file);
}
else
{
solution.WebSiteProjects.Add(file);
}
}
}
}
solution.FileName = Path.GetFileName(solutionFile);
solution.RootPath = Path.GetDirectoryName(solutionFile);
foreach (string projfile in solution.ProjectsFiles)
{
solution.Projects.Add(Project.Load(solution.RootPath, projfile));
}
return solution;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.