private bamboo.Controls.ProjectExplorer.TreeNodes.SolutionTreeNode CreateSolutionTreeNode(string path) { string rootPath = path.Substring(0, path.LastIndexOf("\\")); if (Bamboo.VisualStudio.SolutionDetector.Is2003(path)) { Bamboo.VisualStudio.VisualStudio2003.Solution.Models.Solution solution = Bamboo.VisualStudio.VisualStudio2003.Solution.SolutionReader.Read(path); bamboo.Controls.ProjectExplorer.TreeNodes.SolutionTreeNode solutionTreeNode = new bamboo.Controls.ProjectExplorer.TreeNodes.SolutionTreeNode(solution.Name, path, solution); foreach (Bamboo.VisualStudio.VisualStudio2003.Solution.Models.Project project in solution.Projects) { solutionTreeNode.Add(CreateCSharpProjectTreeNode(rootPath + "\\" + project.Path)); } return(solutionTreeNode); } else if (Bamboo.VisualStudio.SolutionDetector.Is2005(path)) { Bamboo.VisualStudio.VisualStudio2005.Solution.Models.Solution solution = Bamboo.VisualStudio.VisualStudio2005.Solution.SolutionReader.Read(path); bamboo.Controls.ProjectExplorer.TreeNodes.SolutionTreeNode solutionTreeNode = new bamboo.Controls.ProjectExplorer.TreeNodes.SolutionTreeNode(solution.Name, path, solution); foreach (Bamboo.VisualStudio.VisualStudio2005.Solution.Models.Project project in solution.Projects) { solutionTreeNode.Add(CreateCSharpProjectTreeNode(rootPath + "\\" + project.Path)); } return(solutionTreeNode); } else { throw new System.Exception("Invalid solution version."); } }
private void Build(Bamboo.VisualStudio.VisualStudio2003.Solution.Models.Solution solution, string configuration, string projectFolder, string output) { this._projectBuildTracker.Clear(); System.Collections.Hashtable projectPaths = new System.Collections.Hashtable(); Bamboo.VisualStudio.ProjectDependencies.ProjectCollection projectsToResolve = new Bamboo.VisualStudio.ProjectDependencies.ProjectCollection(); foreach (Bamboo.VisualStudio.VisualStudio2003.Solution.Models.Project project in solution.Projects) { if (project.Path.ToLower().EndsWith(".csproj")) { string filename = projectFolder + System.IO.Path.DirectorySeparatorChar + project.Path; System.IO.FileInfo fileInfo = new System.IO.FileInfo(filename); string name = fileInfo.Name.Substring(0, fileInfo.Name.ToLower().LastIndexOf(".csproj")); System.IO.TextReader reader = fileInfo.OpenText(); Bamboo.VisualStudio.VisualStudio2003.CSharpProject.Models.Project csproj2003 = Bamboo.VisualStudio.VisualStudio2003.CSharpProject.ProjectReader.Read(name, reader); reader.Close(); projectPaths.Add(csproj2003.ProjectGuid, filename); Bamboo.VisualStudio.ProjectDependencies.Project projectToResolve = new Bamboo.VisualStudio.ProjectDependencies.Project(); projectToResolve.Name = csproj2003.Name; projectToResolve.Guid = csproj2003.ProjectGuid; projectToResolve.Tag = csproj2003; foreach (Bamboo.VisualStudio.VisualStudio2003.CSharpProject.Models.Reference projectReference in csproj2003.References) { if (projectReference.Project.Length > 0) { Bamboo.VisualStudio.ProjectDependencies.ProjectDependency projectDependency = new Bamboo.VisualStudio.ProjectDependencies.ProjectDependency(); projectDependency.Name = projectReference.Name; projectDependency.ProjectGuid = new System.Guid(projectReference.Project); projectToResolve.Dependencies.Add(projectDependency); } } projectsToResolve.Add(projectToResolve); } else { throw new System.Exception("Unsupported project type."); } } Bamboo.VisualStudio.ProjectDependencies.ProjectCollection resolvedProjects = Bamboo.VisualStudio.ProjectDependencies.ProjectDependencyResolver.Resolve(projectsToResolve); foreach (Bamboo.VisualStudio.ProjectDependencies.Project project in resolvedProjects) { if (project.Tag is Bamboo.VisualStudio.VisualStudio2003.CSharpProject.Models.Project) { Bamboo.VisualStudio.VisualStudio2003.CSharpProject.Models.Project csproj2003 = (Bamboo.VisualStudio.VisualStudio2003.CSharpProject.Models.Project)project.Tag; string projectPath = projectPaths[csproj2003.ProjectGuid].ToString(); if (output.Length == 0) { this._csharpProjectBuilder.Build(projectPath, configuration, this._projectBuildTracker); } else { this._csharpProjectBuilder.Build(projectPath, configuration, output, this._projectBuildTracker); } if (this._csharpProjectBuilder.Succeeded) { this._projectBuildTracker.Add(csproj2003.ProjectGuid, this._csharpProjectBuilder.Assembly); } else { this._succeeded = false; return; } } } }