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);
        }
Beispiel #2
0
        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);
        }