Author: ankit Date: 2008-01-19 12:55:37 -0500 (Sat, 19 Jan 2008) New Revision: 93321
Modified: branches/monodevelop/main/1.0/src/addins/AspNetAddIn/ChangeLog branches/monodevelop/main/1.0/src/addins/AspNetAddIn/Project/AspNetMSBuildProjectExtension.cs branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/CSharpMSBuildProjectExtension.cs branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/ChangeLog branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/DefaultMSBuildProjectExtension.cs branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildFileFormat.cs branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildProjectExtension.cs branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/SlnFileFormat.cs branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/Utils.cs branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/VBNetMSBuildProjectExtension.cs Log: In main/src/addins/AspNetAddIn: * AspNetMSBuildProjectExtension.cs: Track changes in MSBuildProjectExtension. In main/src/addins/prj2make-sharp-lib: * MSBuildProjectExtension.cs (IsLanguage): New. (LanguageId): New. * DefaultMSBuildProjectExtension.cs: Override the language properties. * CSharpMSBuildProjectExtension.cs: Likewise. * VBNetMSBuildProjectExtension.cs: Likewise. * MSBuildFileFormat.cs (ProjectTypeGuids): Rename to .. (LanguageTypeGuids): .. this. Fill this from the extensions. * SlnFileFormat.cs: Remove hardcoded .csproj/.vbproj. * Utils.cs (GetLanguage): Use the extensions for this. Modified: branches/monodevelop/main/1.0/src/addins/AspNetAddIn/ChangeLog =================================================================== --- branches/monodevelop/main/1.0/src/addins/AspNetAddIn/ChangeLog 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/AspNetAddIn/ChangeLog 2008-01-19 17:55:37 UTC (rev 93321) @@ -1,3 +1,7 @@ +2008-01-19 Ankit Jain <[EMAIL PROTECTED]> + + * AspNetMSBuildProjectExtension.cs: Track changes in MSBuildProjectExtension. + 2008-01-15 Michael Hutchinson <[EMAIL PROTECTED]> * Templates/WebService-CodeBehind.xft.xml, Modified: branches/monodevelop/main/1.0/src/addins/AspNetAddIn/Project/AspNetMSBuildProjectExtension.cs =================================================================== --- branches/monodevelop/main/1.0/src/addins/AspNetAddIn/Project/AspNetMSBuildProjectExtension.cs 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/AspNetAddIn/Project/AspNetMSBuildProjectExtension.cs 2008-01-19 17:55:37 UTC (rev 93321) @@ -115,10 +115,10 @@ if (project.GetType () != typeof (AspNetAppProject)) return null; - if (!MSBuildFileFormat.ProjectTypeGuids.ContainsKey (project.LanguageName)) + if (!MSBuildFileFormat.LanguageTypeGuids.ContainsKey (project.LanguageName)) return null; - return String.Format ("{0};{1}", myguid, MSBuildFileFormat.ProjectTypeGuids [project.LanguageName]); + return String.Format ("{0};{1}", myguid, MSBuildFileFormat.LanguageTypeGuids [project.LanguageName]); } } Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/CSharpMSBuildProjectExtension.cs =================================================================== --- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/CSharpMSBuildProjectExtension.cs 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/CSharpMSBuildProjectExtension.cs 2008-01-19 17:55:37 UTC (rev 93321) @@ -50,6 +50,14 @@ get { return "C#";} } + public override bool IsLanguage { + get { return true; } + } + + public override string LanguageId { + get { return "C#"; } + } + public override bool Supports (string type_guid, string filename, string type_guids) { if (String.IsNullOrEmpty (type_guid)) { Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/ChangeLog =================================================================== --- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/ChangeLog 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/ChangeLog 2008-01-19 17:55:37 UTC (rev 93321) @@ -1,3 +1,15 @@ +2008-01-19 Ankit Jain <[EMAIL PROTECTED]> + + * MSBuildProjectExtension.cs (IsLanguage): New. + (LanguageId): New. + * DefaultMSBuildProjectExtension.cs: Override the language properties. + * CSharpMSBuildProjectExtension.cs: Likewise. + * VBNetMSBuildProjectExtension.cs: Likewise. + * MSBuildFileFormat.cs (ProjectTypeGuids): Rename to .. + (LanguageTypeGuids): .. this. Fill this from the extensions. + * SlnFileFormat.cs: Remove hardcoded .csproj/.vbproj. + * Utils.cs (GetLanguage): Use the extensions for this. + 2008-01-14 Ankit Jain <[EMAIL PROTECTED]> * VS2003SlnFileFormat.cs: Handle being called in a non-gui mode. Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/DefaultMSBuildProjectExtension.cs =================================================================== --- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/DefaultMSBuildProjectExtension.cs 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/DefaultMSBuildProjectExtension.cs 2008-01-19 17:55:37 UTC (rev 93321) @@ -48,6 +48,14 @@ get { return "DefaultMSBuildProjectExtension"; } } + public override bool IsLanguage { + get { return false; } + } + + public override string LanguageId { + get { return null; } + } + public override bool Supports (string type_guid, string filename, string type_guids) { //Should've been handled by now! Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildFileFormat.cs =================================================================== --- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildFileFormat.cs 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildFileFormat.cs 2008-01-19 17:55:37 UTC (rev 93321) @@ -188,7 +188,7 @@ string type_guid; string type_guids = String.Empty; string longest_guid = String.Empty; - foreach (MSBuildProjectExtension extn in GuidToExtensions) { + foreach (MSBuildProjectExtension extn in Extensions) { string g = extn.GetGuidChain (project); if (g == null) continue; @@ -530,16 +530,16 @@ MSBuildProjectExtension GetExtensionChainFromTypeGuid (ref string type_guids, out string type_guid, string lang, string fname) { if (String.IsNullOrEmpty (type_guids)) { - if (!MSBuildFileFormat.ProjectTypeGuids.ContainsKey (lang)) + if (!MSBuildFileFormat.LanguageTypeGuids.ContainsKey (lang)) throw new Exception (String.Format ("Unknown project type : {0}", fname)); - type_guids = type_guid = MSBuildFileFormat.ProjectTypeGuids [lang]; + type_guids = type_guid = MSBuildFileFormat.LanguageTypeGuids [lang]; } type_guid = type_guids.Split (';') [0]; string [] type_guid_list = type_guids.Split (new char [] {';'}, StringSplitOptions.RemoveEmptyEntries); MSBuildProjectExtension [] extensions = new MSBuildProjectExtension [type_guid_list.Length + 1]; for (int i = 0; i < type_guid_list.Length; i ++) { - foreach (MSBuildProjectExtension extn in GuidToExtensions) { + foreach (MSBuildProjectExtension extn in Extensions) { if (extn.Supports (type_guid_list [i], fname, type_guids)) { extensions [i] = extn; break; @@ -835,23 +835,37 @@ return flavor_properties_element; } - static List<MSBuildProjectExtension> GuidToExtensions { + internal static List<MSBuildProjectExtension> Extensions { get { - if (extensions == null) { - extensions = new List<MSBuildProjectExtension> (); - OnProjectExtensionsChanged (null, null); - AddinManager.AddExtensionNodeHandler ("/MonoDevelop/Prj2Make/MSBuildProjectExtension", OnProjectExtensionsChanged); - } + if (extensions == null) + InitExtensions (); return extensions; } } + static void InitExtensions () + { + if (extensions != null) + return; + + extensions = new List<MSBuildProjectExtension> (); + OnProjectExtensionsChanged (null, null); + AddinManager.AddExtensionNodeHandler ("/MonoDevelop/Prj2Make/MSBuildProjectExtension", OnProjectExtensionsChanged); + } + static void OnProjectExtensionsChanged (object s, ExtensionNodeEventArgs args) { extensions.Clear (); + if (languageTypeGuids == null) + languageTypeGuids = new Dictionary<string,string> (); + else + LanguageTypeGuids.Clear (); + foreach (MSBuildProjectExtension extn in AddinManager.GetExtensionObjects ("/MonoDevelop/Prj2Make/MSBuildProjectExtension", typeof (MSBuildProjectExtension))) { extensions.Add (extn); + if (extn.IsLanguage) + LanguageTypeGuids [extn.LanguageId] = extn.TypeGuid; } extensions.Add (new DefaultMSBuildProjectExtension ()); } @@ -883,21 +897,14 @@ return assemblyNamesTable; } - } - static Dictionary<string, string> projectTypeGuids = null; - public static Dictionary<string, string> ProjectTypeGuids { + static Dictionary<string, string> languageTypeGuids = null; + public static Dictionary<string, string> LanguageTypeGuids { get { - if (projectTypeGuids == null) { - projectTypeGuids = new Dictionary<string, string> (); - // values must be in UpperCase - projectTypeGuids ["C#"] = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"; - projectTypeGuids ["VBNet"] = "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}"; - } - return projectTypeGuids; + InitExtensions (); + return languageTypeGuids; } } - } } Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildProjectExtension.cs =================================================================== --- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildProjectExtension.cs 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/MSBuildProjectExtension.cs 2008-01-19 17:55:37 UTC (rev 93321) @@ -47,6 +47,15 @@ get { return "MSBuildProjectExtension"; } } + public virtual bool IsLanguage { + get { return false; } + } + + // Must match the Id used by MonoDevelop for the language + public virtual string LanguageId { + get { return null; } + } + public virtual bool Supports (string guid, string filename, string type_guids) { return Next.Supports (guid, filename, type_guids); Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/SlnFileFormat.cs =================================================================== --- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/SlnFileFormat.cs 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/SlnFileFormat.cs 2008-01-19 17:55:37 UTC (rev 93321) @@ -213,7 +213,7 @@ continue; } - if (!MSBuildFileFormat.ProjectTypeGuids.ContainsKey (project.LanguageName)) { + if (!MSBuildFileFormat.LanguageTypeGuids.ContainsKey (project.LanguageName)) { // FIXME: Should not happen, temp monitor.ReportWarning (GettextCatalog.GetString ("Saving for project {0} not supported. Ignoring.", ce.FileName)); @@ -240,7 +240,7 @@ l = msbData.Extra; writer.WriteLine (@"Project(""{0}"") = ""{1}"", ""{2}"", ""{3}""", - MSBuildFileFormat.ProjectTypeGuids [project.LanguageName], + MSBuildFileFormat.LanguageTypeGuids [project.LanguageName], project.Name, FileService.NormalizeRelativePath (FileService.AbsoluteToRelativePath ( baseDirectory, project.FileName)).Replace ('/', '\\'), @@ -487,8 +487,8 @@ continue; } - if (!MSBuildFileFormat.ProjectTypeGuids.ContainsValue (projTypeGuid)) { - LoggingService.LogDebug (GettextCatalog.GetString ( + if (!MSBuildFileFormat.LanguageTypeGuids.ContainsValue (projTypeGuid)) { + LoggingService.LogWarning (GettextCatalog.GetString ( "Unknown project type guid '{0}' on line #{1}. Ignoring.", projTypeGuid, sec.Start + 1)); @@ -498,50 +498,49 @@ continue; } - if (!projectPath.StartsWith("http://") && - (projectPath.EndsWith (".csproj") || projectPath.EndsWith (".vbproj"))) - { - DotNetProject project = null; - string path = SlnMaker.MapPath (Path.GetDirectoryName (fileName), projectPath); - if (String.IsNullOrEmpty (path)) { - monitor.ReportWarning (GettextCatalog.GetString ( - "Invalid project path found in {0} : {1}", fileName, projectPath)); - Console.WriteLine (GettextCatalog.GetString ( - "Invalid project path found in {0} : {1}", fileName, projectPath)); + if (projectPath.StartsWith("http://")) { + monitor.ReportWarning (GettextCatalog.GetString ( + "{0}({1}): Projects with non-local source (http://...) not supported. '{2}'.", + fileName, sec.Start + 1, projectPath)); + data.UnknownProjects.AddRange (lines.GetRange (sec.Start, sec.Count)); + continue; + } + DotNetProject project = null; + string path = SlnMaker.MapPath (Path.GetDirectoryName (fileName), projectPath); + if (String.IsNullOrEmpty (path)) { + monitor.ReportWarning (GettextCatalog.GetString ( + "Invalid project path found in {0} : {1}", fileName, projectPath)); + LoggingService.LogWarning (GettextCatalog.GetString ( + "Invalid project path found in {0} : {1}", fileName, projectPath)); + + continue; + } + + projectPath = Path.GetFullPath (path); + try { + project = Services.ProjectService.ReadCombineEntry (projectPath, monitor) as DotNetProject; + if (project == null) { + LoggingService.LogError ("Internal Error: Didn't get the expected DotNetProject for {0} project.", + projectPath); continue; } - projectPath = Path.GetFullPath (path); - try { - project = Services.ProjectService.ReadCombineEntry (projectPath, monitor) as DotNetProject; - if (project == null) { - Console.WriteLine ("Internal Error: Didn't get the expected DotNetProject for {0} project.", - projectPath); - continue; - } + MSBuildData msdata = Utils.GetMSBuildData (project); + entries [projectGuid] = project; + data.ProjectsByGuid [msdata.Guid] = project; - MSBuildData msdata = Utils.GetMSBuildData (project); - entries [projectGuid] = project; - data.ProjectsByGuid [msdata.Guid] = project; + msdata.Extra = lines.GetRange (sec.Start + 1, sec.Count - 2); + } catch (Exception e) { + LoggingService.LogError (GettextCatalog.GetString ( + "Error while trying to load the project {0}. Exception : {1}", + projectPath, e.ToString ())); + monitor.ReportWarning (GettextCatalog.GetString ( + "Error while trying to load the project {0}. Exception : {1}", projectPath, e.Message)); - msdata.Extra = lines.GetRange (sec.Start + 1, sec.Count - 2); - } catch (Exception e) { - Console.WriteLine ("Error while trying to load the project {0}", projectPath); - Console.WriteLine (e); - monitor.ReportWarning (GettextCatalog.GetString ( - "Error while trying to load the project {0}. Exception : {1}", projectPath, e.Message)); - - if (project == null) - data.UnknownProjects.AddRange (lines.GetRange (sec.Start, sec.Count)); - } - continue; + if (project == null) + data.UnknownProjects.AddRange (lines.GetRange (sec.Start, sec.Count)); } - //FIXME: Non .csproj/.vbproj projects not supported (yet) - monitor.ReportWarning (GettextCatalog.GetString ( - "{0}({1}): Unsupported or unrecognized project : '{2}'. See logs.", fileName, sec.Start + 1, projectPath)); - - data.UnknownProjects.AddRange (lines.GetRange (sec.Start, sec.Count)); } monitor.EndTask (); Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/Utils.cs =================================================================== --- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/Utils.cs 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/Utils.cs 2008-01-19 17:55:37 UTC (rev 93321) @@ -294,11 +294,10 @@ public static string GetLanguage (string fileName) { - string extn = Path.GetExtension (fileName); - if (String.Compare (extn, ".csproj", true) == 0) - return "C#"; - if (String.Compare (extn, ".vbproj", true) == 0) - return "VBNet"; + foreach (MSBuildProjectExtension extn in MSBuildFileFormat.Extensions) { + if (extn.IsLanguage && extn.Supports (null, fileName, null)) + return extn.LanguageId; + } return null; } Modified: branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/VBNetMSBuildProjectExtension.cs =================================================================== --- branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/VBNetMSBuildProjectExtension.cs 2008-01-19 17:42:42 UTC (rev 93320) +++ branches/monodevelop/main/1.0/src/addins/prj2make-sharp-lib/VBNetMSBuildProjectExtension.cs 2008-01-19 17:55:37 UTC (rev 93321) @@ -51,6 +51,14 @@ get { return "VBNet";} } + public override bool IsLanguage { + get { return true; } + } + + public override string LanguageId { + get { return "VBNet"; } + } + public override bool Supports (string type_guid, string filename, string type_guids) { if (String.IsNullOrEmpty (type_guid)) { _______________________________________________ Mono-patches maillist - Mono-patches@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-patches