public static ProjectConfiguration Show(string filename) { var ext = Path.GetExtension(filename); BaseVsProject vsProject = null; switch (ext.ToLower()) { case ".vcproj": vsProject = VcProject.Parse(filename); break; case ".csproj": vsProject = CSharpProject.Parse(filename); break; case ".dsp": vsProject = VisualCpp6Project.Parse(filename); break; default: MessageBox.Show("Project file not recognized"); return(null); } var f = new ProjectConfigurationsForm(); foreach (var cfg in vsProject.Configurations) { var item = f.listView.Items.Add(cfg.Name); item.SubItems.Add(cfg.Platform); item.Tag = cfg; } if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { return(f.listView.SelectedItems[0].Tag as ProjectConfiguration); } return(null); }
public ProjectAdapter ImportProject(string fileName, string sccRoot) { var filename = fileName; var ext = Path.GetExtension(filename); BaseVsProject vsProject = null; switch (ext.ToLower()) { case ".vcproj": vsProject = VcProject.Parse(filename); break; case ".csproj": vsProject = CSharpProject.Parse(filename); break; case ".dsp": vsProject = VisualCpp6Project.Parse(filename); break; default: return(null); } if (vsProject == null) { return(null); } if (!sccRoot.EndsWith("/")) { sccRoot = sccRoot + "/"; } var project = new ProjectAdapter(new Project(), false) { BuildFile = this, Name = vsProject.Name, Path = GetPathRootedAtBuildsFile(vsProject.Filepath), SccPath = sccRoot + GetPathRootedAtBuildsFile(Path.GetDirectoryName(vsProject.Filepath)).Replace("\\", "/") }; // check if project path is relative to mproj file switch (vsProject.Framework) { case ProjectFramework.VisualCpp2003: project.Framework = "vc71"; break; case ProjectFramework.VisualCpp2005: project.Framework = "vc8"; break; case ProjectFramework.VisualCpp6: project.Framework = "vc6"; break; case ProjectFramework.VisualCs2005: project.Framework = "cs"; break; case ProjectFramework.VisualCs2003: project.Framework = "vc71"; break; } bool bConfigurationFound = false; var projectOutput = new ProjectOutputAdapter(); foreach (var conf in vsProject.Configurations) { if (conf.Name.ToLower().Contains("release")) { project.BuildOpt = "\"" + conf.Name + "\" " + conf.Platform; projectOutput.PathList.Add(Path.Combine(GetPathRootedAtBuildsFile(conf.OutputPath), "*.*")); bConfigurationFound = true; project.Target.PlatformName = conf.Platform; project.Target.ConfigurationName = conf.Name; break; } } if (!bConfigurationFound) { if (vsProject.Framework == ProjectFramework.VisualCpp6) { projectOutput.PathList.Add( Path.Combine(GetPathRootedAtBuildsFile(Path.GetDirectoryName(vsProject.Filepath)), @"release\*.*")); } else { projectOutput.PathList.Add( Path.Combine(GetPathRootedAtBuildsFile(Path.GetDirectoryName(vsProject.Filepath)), "*.*")); } } project.OutputInformation.Add(projectOutput); return(project); }