public SolutionEntityItem CreatePrjxFromCsproj(string csprojFileName, IProgressMonitor monitor) { try { FileFormat format = Services.ProjectService.FileFormats.GetFileFormatForFile(csprojFileName, typeof(SolutionEntityItem)); if (format != null && format.Id != "VS2003ProjectFileFormat") { return((SolutionEntityItem)Services.ProjectService.ReadSolutionItem(monitor, csprojFileName)); } MonoDevelop.Prj2Make.Schema.Csproj.VisualStudioProject csprojObj = null; monitor.BeginTask(GettextCatalog.GetString("Importing project: ") + csprojFileName, 4); DotNetAssemblyProject prjxObj = new DotNetAssemblyProject("C#", null, null); prjxFileName = String.Format("{0}.mdp", Path.Combine(Path.GetDirectoryName(csprojFileName), Path.GetFileNameWithoutExtension(csprojFileName)) ); // Load the csproj using (TextFileReader fsIn = new TextFileReader(csprojFileName)) { XmlSerializer xmlDeSer = new XmlSerializer(typeof(VisualStudioProject)); csprojObj = (VisualStudioProject)xmlDeSer.Deserialize(fsIn); } monitor.Step(1); // Begin prjxObj population prjxObj.FileName = prjxFileName; prjxObj.Name = Path.GetFileNameWithoutExtension(csprojFileName); prjxObj.Description = ""; prjxObj.NewFileSearch = NewFileSearch.None; prjxObj.DefaultNamespace = csprojObj.CSHARP.Build.Settings.RootNamespace; GetContents(prjxObj, csprojObj.CSHARP.Files.Include, prjxObj.Files, monitor); monitor.Step(1); GetReferences(prjxObj, csprojObj.CSHARP.Build.References, prjxObj.References, monitor); monitor.Step(1); prjxObj.Configurations.Clear(); foreach (Config cblock in csprojObj.CSHARP.Build.Settings.Config) { prjxObj.Configurations.Add(CreateConfigurationBlock( prjxObj, cblock, csprojObj.CSHARP.Build.Settings.AssemblyName, csprojObj.CSHARP.Build.Settings.OutputType, monitor )); } monitor.Step(1); return(prjxObj); } catch (Exception ex) { monitor.ReportError(GettextCatalog.GetString("Could not import project:") + csprojFileName, ex); throw; } finally { monitor.EndTask(); } }