public ProjectItemDefinitionElement AddItemDefinition(string itemType) { ProjectItemDefinitionElement itemDefinition = ContainingProject.CreateItemDefinitionElement(itemType); AppendChild(itemDefinition); return(itemDefinition); }
internal void AddItems (ProjectItemDefinitionElement xml) { foreach (var item in xml.Metadata) { var existing = metadata.FirstOrDefault (i => i.Name == item.Name); if (existing != null) metadata.Remove (existing); metadata.Add (new ProjectMetadataInstance (item.Name, item.Value)); } }
/// <summary> /// Parse a ProjectItemDefinitionGroupElement /// </summary> private ProjectItemDefinitionGroupElement ParseProjectItemDefinitionGroupElement(XmlElementWithLocation element) { ProjectXmlUtilities.VerifyThrowProjectAttributes(element, s_validAttributesOnlyConditionAndLabel); ProjectItemDefinitionGroupElement itemDefinitionGroup = new ProjectItemDefinitionGroupElement(element, _project, _project); foreach (XmlElementWithLocation childElement in ProjectXmlUtilities.GetVerifyThrowProjectChildElements(element)) { ProjectItemDefinitionElement itemDefinition = ParseProjectItemDefinitionXml(childElement, itemDefinitionGroup); itemDefinitionGroup.AppendParentedChildNoChecks(itemDefinition); } return(itemDefinitionGroup); }
/// <summary> /// Pasre a ProjectItemDefinitionElement /// </summary> private ProjectItemDefinitionElement ParseProjectItemDefinitionXml(XmlElementWithLocation element, ProjectItemDefinitionGroupElement parent) { ProjectXmlUtilities.VerifyThrowProjectAttributes(element, s_validAttributesOnlyConditionAndLabel); // Orcas inadvertently did not check for reserved item types (like "Choose") in item definitions, // as we do for item types in item groups. So we do not have a check here. // Although we could perhaps add one, as such item definitions couldn't be used // since no items can have the reserved itemType. ProjectItemDefinitionElement itemDefinition = new ProjectItemDefinitionElement(element, parent, _project); foreach (XmlElementWithLocation childElement in ProjectXmlUtilities.GetVerifyThrowProjectChildElements(element)) { ProjectMetadataElement metadatum = ParseProjectMetadataElement(childElement, itemDefinition); itemDefinition.AppendParentedChildNoChecks(metadatum); } return(itemDefinition); }
/// <summary> /// Pasre a ProjectItemDefinitionElement /// </summary> private ProjectItemDefinitionElement ParseProjectItemDefinitionXml(XmlElementWithLocation element, ProjectItemDefinitionGroupElement parent) { // Orcas inadvertently did not check for reserved item types (like "Choose") in item definitions, // as we do for item types in item groups. So we do not have a check here. // Although we could perhaps add one, as such item definitions couldn't be used // since no items can have the reserved itemType. ProjectItemDefinitionElement itemDefinition = new ProjectItemDefinitionElement(element, parent, _project); foreach (XmlAttributeWithLocation attribute in element.Attributes) { CheckMetadataAsAttributeName(attribute.Name, out bool isKnownAttribute, out bool isValidMetadataNameInAttribute); if (!isKnownAttribute && !isValidMetadataNameInAttribute) { ProjectXmlUtilities.ThrowProjectInvalidAttribute(attribute); } else if (isValidMetadataNameInAttribute) { ProjectMetadataElement metadatum = _project.CreateMetadataElement(attribute.Name, attribute.Value); metadatum.ExpressedAsAttribute = true; metadatum.Parent = itemDefinition; itemDefinition.AppendParentedChildNoChecks(metadatum); } else if (!ValidAttributesOnlyConditionAndLabel.Contains(attribute.Name)) { ProjectXmlUtilities.ThrowProjectInvalidAttribute(attribute); } } foreach (XmlElementWithLocation childElement in ProjectXmlUtilities.GetVerifyThrowProjectChildElements(element)) { ProjectMetadataElement metadatum = ParseProjectMetadataElement(childElement, itemDefinition); itemDefinition.AppendParentedChildNoChecks(metadatum); } return(itemDefinition); }
internal ProjectItemDefinitionInstance (ProjectItemDefinitionElement xml) { ItemType = xml.ItemType; AddItems (xml); }
/// <summary> /// Pasre a ProjectItemDefinitionElement /// </summary> private ProjectItemDefinitionElement ParseProjectItemDefinitionXml(XmlElementWithLocation element, ProjectItemDefinitionGroupElement parent) { ProjectXmlUtilities.VerifyThrowProjectAttributes(element, s_validAttributesOnlyConditionAndLabel); // Orcas inadvertently did not check for reserved item types (like "Choose") in item definitions, // as we do for item types in item groups. So we do not have a check here. // Although we could perhaps add one, as such item definitions couldn't be used // since no items can have the reserved itemType. ProjectItemDefinitionElement itemDefinition = new ProjectItemDefinitionElement(element, parent, _project); foreach (XmlElementWithLocation childElement in ProjectXmlUtilities.GetVerifyThrowProjectChildElements(element)) { ProjectMetadataElement metadatum = ParseProjectMetadataElement(childElement, itemDefinition); itemDefinition.AppendParentedChildNoChecks(metadatum); } return itemDefinition; }
static void populateLinker(ProjectItemDefinitionElement avar, bool isDebug) { if (!isDebug) { avar.AddMetadata("EnableCOMDATFolding", "true"); avar.AddMetadata("OptimizeReferences", "true"); } avar.AddMetadata("GenerateDebugInformation", isDebug.ToString().ToLower()); }
static void populateCompiler(ProjectItemDefinitionElement avar, bool isDebug) { if (!isDebug) avar.AddMetadata("FunctionLevelLinking", "true"); avar.AddMetadata("PreprocessorDefinitions", (isDebug ? "_DEBUG" : "_NDEBUG") + ";_MBCS;%(PreprocessorDefinitions)"); if (isDebug) { avar.AddMetadata("DebugInformationFormat", "ProgramDatabase"); avar.AddMetadata("WarningLevel", "EnableAllWarnings"); } }
internal void AddItems (ProjectItemDefinitionElement xml) { foreach (var item in xml.Metadata) metadata.Add (new ProjectMetadata (project, ItemType, metadata, m => metadata.Remove (m), item)); }