Captain LoadTest had the same issue in 2005, and developed a
NAnt script to parse VS.Net database project files, which is a nice idea - but I really wanted to access the 'tree' of scripts from C#.
Thankfully, the open-source project AnkhSVN (which integrates the Subversion source control tool into Visual Studio) has exactly the code needed: ParsedSolution.cs and ParsedSolutionItem.cs.
I commented out some code ('context') and added this method, and that pretty much worked. Make sure you check the licence before using...
/// <summary>
/// Borrows code from the solution parser to JUST parse Database Project Files
/// </summary>
/// <param name="projectFileName">The full path to a *.DBP file</param>
public static ParsedSolutionItem OpenDatabaseProject(string projectFileName)
{
 string projectFile = projectFileName; //GetProjectFile(projectFileName);
 ParsedSolutionItem project = new ParsedSolutionItem();
 project.Name = "Database"; //projectName;
 project.FileName = projectFile;
 if (System.IO.File.Exists(projectFile))
 {
  using (StreamReader reader = new StreamReader(projectFile))
  {
   string extension = Path.GetExtension(projectFile);
   switch (extension)
   {
    case ".dbp":
     ParseDatabaseProject(project, reader);
     break;
    default:
     throw new ApplicationException("Trying to parse unknown project of type " + extension);
   }
  }
  return project;
 }
 else
 {
  return null;
 }
}
No comments:
Post a Comment
Note: only a member of this blog may post a comment.