本文整理汇总了C#中Microsoft.Build.BuildEngine.BuildPropertyGroup.EnsureNoReservedProperties方法的典型用法代码示例。如果您正苦于以下问题:C# BuildPropertyGroup.EnsureNoReservedProperties方法的具体用法?C# BuildPropertyGroup.EnsureNoReservedProperties怎么用?C# BuildPropertyGroup.EnsureNoReservedProperties使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Build.BuildEngine.BuildPropertyGroup
的用法示例。
在下文中一共展示了BuildPropertyGroup.EnsureNoReservedProperties方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: foreach
/// <summary>
/// Process each of the direct children beneath the >Project< element.
/// These include things like <PropertyGroup>, <ItemGroup>, <Target>, etc.
/// This method is simply capturing the data in the form of our own
/// internal objects. It is not actually evaluating any of the properties
/// or other data.
/// </summary>
/// <param name="projectElement"></param>
/// <param name="projectDirectoryLocation"></param>
/// <param name="importedProject"></param>
/// <owner>RGoel</owner>
private void ProcessProjectChildren
(
XmlElement projectElement,
string projectDirectoryLocation,
bool importedProject
)
{
// Make sure the <Project> node has been given to us.
error.VerifyThrow(projectElement != null,
"Need an XML node representing the <project> element.");
// Make sure this really is the <Project> node.
ProjectXmlUtilities.VerifyThrowElementName(projectElement, XMakeElements.project);
// Loop through all the direct children of the <project> element.
// This verifies all the XML is legitimate, and creates ordered lists of objects
// representing the top-level nodes (itemgroup, choose, etc.)
// As this progresses, the Chooses and PropertyGroups are evaluated, so that conditions
// on Imports involving properties can be evaluated too, because we need to know whether to
// follow the imports.
// All this comprises "Pass 1".
List<XmlElement> childElements = ProjectXmlUtilities.GetValidChildElements(projectElement);
string currentPerThreadProjectDirectory = Project.PerThreadProjectDirectory;
try
{
// Make the correct project directory available. This is needed because it is
// used for evaluating "exists" in conditional expressions, for example on <Import> elements.
Project.PerThreadProjectDirectory = ProjectDirectory;
foreach (XmlElement childElement in childElements)
{
switch (childElement.Name)
{
// Process the <ItemDefinitionGroup> element.
case XMakeElements.itemDefinitionGroup:
itemDefinitionLibrary.Add(childElement);
break;
// Process the <ItemGroup> element.
case XMakeElements.itemGroup:
BuildItemGroup newItemGroup = new BuildItemGroup(childElement, importedProject, /*parent project*/ this);
this.rawItemGroups.InsertAtEnd(newItemGroup);
break;
// Process the <PropertyGroup> element.
case XMakeElements.propertyGroup:
BuildPropertyGroup newPropertyGroup = new BuildPropertyGroup(this, childElement, importedProject);
newPropertyGroup.EnsureNoReservedProperties();
this.rawPropertyGroups.InsertAtEnd(newPropertyGroup);
// PropertyGroups/Chooses are evaluated immediately during this scan, as they're needed to figure out whether
// we include Imports.
newPropertyGroup.Evaluate(this.evaluatedProperties, this.conditionedPropertiesTable, ProcessingPass.Pass1);
break;
// Process the <Choose> element.
case XMakeElements.choose:
Choose newChoose = new Choose(this, this.rawGroups, childElement, importedProject, 0 /* not nested in another <Choose> */);
this.rawGroups.InsertAtEnd(newChoose);
// PropertyGroups/Chooses are evaluated immediately during this scan, as they're needed to figure out whether
// we include Imports.
newChoose.Evaluate(this.evaluatedProperties, false, true, this.conditionedPropertiesTable, ProcessingPass.Pass1);
break;
// Process the <Target> element.
case XMakeElements.target:
XmlElement targetElement = childElement;
Target newTarget = new Target(targetElement, this, importedProject);
// If a target with this name already exists, log a low priority message.
if (!ParentEngine.LoggingServices.OnlyLogCriticalEvents)
{
if (targets.Exists(newTarget.Name))
{
ParentEngine.LoggingServices.LogComment(projectBuildEventContext, "OverridingTarget",
targets[newTarget.Name].Name, targets[newTarget.Name].ProjectFileOfTargetElement,
newTarget.Name, newTarget.ProjectFileOfTargetElement);
}
}
this.targets.AddOverrideTarget(newTarget);
if (this.nameOfFirstTarget == null)
{
this.nameOfFirstTarget = targetElement.GetAttribute(XMakeAttributes.name);
}
break;
//.........这里部分代码省略.........
示例2: foreach
/// <summary>
/// Helper method for processing the children of a When. Only parses Choose,
/// PropertyGroup, and ItemGroup. All other tags result in an error.
/// </summary>
/// <remarks>
/// </remarks>
/// <owner>DavidLe</owner>
/// <param name="parentNode"></param>
/// <param name="parentProjectForChildren"></param>
/// <param name="importedFromAnotherProject"></param>
/// <param name="options"></param>
/// <param name="nestingDepth">Number of parent <Choose> elements this is nested inside</param>
private void ProcessWhenChildren
(
XmlElement parentNode,
Project parentProjectForChildren, bool importedFromAnotherProject,
int nestingDepth
)
{
// Loop through the child nodes of the <When> element.
foreach (XmlNode whenChildNode in parentNode)
{
switch (whenChildNode.NodeType)
{
// Handle XML comments under the <When> node (just ignore them).
case XmlNodeType.Comment:
// fall through
case XmlNodeType.Whitespace:
// ignore whitespace
break;
case XmlNodeType.Element:
{
// Make sure this element doesn't have a custom namespace
ProjectXmlUtilities.VerifyThrowProjectValidNamespace((XmlElement)whenChildNode);
// The only three types of child nodes that a <When> element can contain
// are <PropertyGroup>, <ItemGroup> and <Choose>.
switch (whenChildNode.Name)
{
case XMakeElements.itemGroup:
BuildItemGroup newItemGroup = new BuildItemGroup((XmlElement)whenChildNode, importedFromAnotherProject, parentProjectForChildren);
this.propertyAndItemLists.InsertAtEnd(newItemGroup);
break;
// Process the <PropertyGroup> element.
case XMakeElements.propertyGroup:
BuildPropertyGroup newPropertyGroup = new BuildPropertyGroup(parentProjectForChildren, (XmlElement)whenChildNode, importedFromAnotherProject);
newPropertyGroup.EnsureNoReservedProperties();
this.propertyAndItemLists.InsertAtEnd(newPropertyGroup);
break;
// Process the <Choose> element.
case XMakeElements.choose:
Choose newChoose = new Choose(parentProjectForChildren, this.PropertyAndItemLists, (XmlElement)whenChildNode,
importedFromAnotherProject, nestingDepth);
this.propertyAndItemLists.InsertAtEnd(newChoose);
break;
default:
{
ProjectXmlUtilities.ThrowProjectInvalidChildElement(whenChildNode);
break;
}
}
}
break;
default:
{
ProjectXmlUtilities.ThrowProjectInvalidChildElement(whenChildNode);
break;
}
}
}
}