/// <summary> /// Parses the document into the provided ProjectRootElement. /// Throws InvalidProjectFileExceptions for syntax errors. /// </summary> /// <remarks> /// The code markers here used to be around the Project class constructor in the old code. /// In the new code, that's not very interesting; we are repurposing to wrap parsing the XML. /// </remarks> internal static void Parse(XmlDocumentWithLocation document, ProjectRootElement projectRootElement) { #if MSBUILDENABLEVSPROFILING try { string projectFile = String.IsNullOrEmpty(projectRootElement.ProjectFileLocation.File) ? "(null)" : projectRootElement.ProjectFileLocation.File; string projectParseBegin = String.Format(CultureInfo.CurrentCulture, "Parse Project {0} - Begin", projectFile); DataCollection.CommentMarkProfile(8808, projectParseBegin); #endif #if (!STANDALONEBUILD) using (new CodeMarkerStartEnd(CodeMarkerEvent.perfMSBuildProjectConstructBegin, CodeMarkerEvent.perfMSBuildProjectConstructEnd)) #endif { ProjectParser parser = new ProjectParser(document, projectRootElement); parser.Parse(); } #if MSBUILDENABLEVSPROFILING } finally { string projectFile = String.IsNullOrEmpty(projectRootElement.ProjectFileLocation.File) ? "(null)" : projectRootElement.ProjectFileLocation.File; string projectParseEnd = String.Format(CultureInfo.CurrentCulture, "Parse Project {0} - End", projectFile); DataCollection.CommentMarkProfile(8809, projectParseEnd); } #endif }
/// <summary> /// Parses the document into the provided ProjectRootElement. /// Throws InvalidProjectFileExceptions for syntax errors. /// </summary> /// <remarks> /// The code markers here used to be around the Project class constructor in the old code. /// In the new code, that's not very interesting; we are repurposing to wrap parsing the XML. /// </remarks> internal static void Parse(XmlDocumentWithLocation document, ProjectRootElement projectRootElement) { MSBuildEventSource.Log.ParseStart(projectRootElement.ProjectFileLocation.File); { ProjectParser parser = new ProjectParser(document, projectRootElement); parser.Parse(); } MSBuildEventSource.Log.ParseStop(projectRootElement.ProjectFileLocation.File); }
internal static bool AttributeNameIsValidMetadataName(string name) { bool isReservedAttributeName; bool isValidMetadataNameInAttribute; ProjectParser.CheckMetadataAsAttributeName(name, out isReservedAttributeName, out isValidMetadataNameInAttribute); return(!isReservedAttributeName && isValidMetadataNameInAttribute); }
internal static void ValidateValidMetadataAsAttributeName(string name, string parentName, IElementLocation parentLocation) { bool isKnownAttribute; bool isValidMetadataNameInAttribute; ProjectParser.CheckMetadataAsAttributeName(name, out isKnownAttribute, out isValidMetadataNameInAttribute); if (isKnownAttribute || !isValidMetadataNameInAttribute) { ProjectErrorUtilities.ThrowInvalidProject(parentLocation, "InvalidMetadataAsAttribute", name, parentName); } }