BuildPropertyGroup Class
Definition
Represents a collection of BuildProperty objects.
public ref class BuildPropertyGroup : System::Collections::IEnumerable
public class BuildPropertyGroup : System.Collections.IEnumerable
type BuildPropertyGroup = class
interface IEnumerable
Public Class BuildPropertyGroup
Implements IEnumerable
- Inheritance
-
BuildPropertyGroup
- Implements
Examples
The following example creates a Project object and uses the LoadXml method to add content to the project. The BuildProperty, BuildPropertyGroup, and BuildPropertyGroupCollection classes are used to add, remove, and change items in the project.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Build.BuildEngine;
namespace AddNewProperty
{
class Program
{
/// <summary>
/// This code demonstrates the use of the following methods:
/// Engine constructor
/// Project constructor
/// Project.LoadFromXml
/// Project.Xml
/// BuildPropertyGroupCollection.GetEnumerator
/// BuildPropertyGroup.GetEnumerator
/// BuildProperty.Name (get)
/// BuildProperty.Value (set)
/// BuildPropertyGroup.RemoveProperty
/// BuildPropertyGroup.AddNewProperty
/// </summary>
static void Main()
{
// Create a new Engine object.
Engine engine = new Engine(Environment.CurrentDirectory);
// Create a new Project object.
Project project = new Project(engine);
// Load the project with the following XML, which contains
// two PropertyGroups.
project.LoadXml(@"
<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
<PropertyGroup>
<Optimize>true</Optimize>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<OutputPath>bin\debug\</OutputPath>
<RemoveThisPropertyPlease>1</RemoveThisPropertyPlease>
</PropertyGroup>
</Project>
");
// Iterate through each PropertyGroup in the Project. There are two.
foreach (BuildPropertyGroup pg in project.PropertyGroups)
{
BuildProperty propertyToRemove = null;
// Iterate through each Property in the PropertyGroup.
foreach (BuildProperty property in pg)
{
// If the property's name is "RemoveThisPropertyPlease", then
// store a reference to this property in a local variable,
// so we can remove it later.
if (property.Name == "RemoveThisPropertyPlease")
{
propertyToRemove = property;
}
// If the property's name is "OutputPath", change its value
// from "bin\debug\" to "bin\release\".
if (property.Name == "OutputPath")
{
property.Value = @"bin\release\";
}
}
// Remove the property named "RemoveThisPropertyPlease" from the
// PropertyGroup
if (propertyToRemove != null)
{
pg.RemoveProperty(propertyToRemove);
}
// For each PropertyGroup that we found, add to the end of it
// a new property called "MyNewProperty".
pg.AddNewProperty("MyNewProperty", "MyNewValue");
}
// The project now looks like this:
//
// <?xml version="1.0" encoding="utf-16"?>
// <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
// <Optimize>true</Optimize>
// <WarningLevel>4</WarningLevel>
// <MyNewProperty>MyNewValue</MyNewProperty>
// <OutputPath>bin\release</OutputPath>
// <MyNewProperty>MyNewValue</MyNewProperty>
Console.WriteLine(project.Xml);
}
}
}
Module Module1
''' <summary>
''' This code demonstrates the use of the following methods:
''' Engine constructor
''' Project constructor
''' Project.LoadFromXml
''' Project.Xml
''' BuildPropertyGroupCollection.GetEnumerator
''' BuildPropertyGroup.GetEnumerator
''' BuildProperty.Name (get)
''' BuildProperty.Value (set)
''' BuildPropertyGroup.RemoveProperty
''' BuildPropertyGroup.AddNewProperty
''' </summary>
''' <remarks></remarks>
Sub Main()
' Create a new Engine object.
Dim engine As New Engine(Environment.CurrentDirectory)
' Create a new Project object.
Dim project As New Project(engine)
' Load the project with the following XML, which contains
' two PropertyGroups.
project.LoadXml( _
"<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>" & _
"<PropertyGroup>" & _
"<Optimize>true</Optimize>" & _
"<WarningLevel>4</WarningLevel>" & _
"</PropertyGroup>" & _
"<PropertyGroup>" & _
"<OutputPath>bin\debug\</OutputPath>" & _
"<RemoveThisPropertyPlease>1</RemoveThisPropertyPlease>" & _
"</PropertyGroup>" & _
"</Project>")
' Iterate through each PropertyGroup in the Project. There are two.
For Each pg As BuildPropertyGroup In project.PropertyGroups
Dim propertyToRemove As BuildProperty
propertyToRemove = Nothing
' Iterate through each Property in the PropertyGroup.
For Each buildProperty As BuildProperty In pg
' If the property's name is "RemoveThisPropertyPlease", then
' store a reference to this property in a local variable,
' so we can remove it later.
If buildProperty.Name = "RemoveThisPropertyPlease" Then
propertyToRemove = buildProperty
End If
' If the property's name is "OutputPath", change its value
' from "bin\debug\" to "bin\release\".
If buildProperty.Name = "OutputPath" Then
buildProperty.Value = "bin\release\"
End If
Next
' Remove the property named "RemoveThisPropertyPlease" from the
' PropertyGroup
If Not propertyToRemove Is Nothing Then
pg.RemoveProperty(propertyToRemove)
End If
' For each PropertyGroup that we found, add to the end of it
' a new property called "MyNewProperty".
pg.AddNewProperty("MyNewProperty", "MyNewValue")
Next
' The project now looks like this:
'
' <?xml version="1.0" encoding="utf-16"?>
' <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
' <Optimize>true</Optimize>
' <WarningLevel>4</WarningLevel>
' <MyNewProperty>MyNewValue</MyNewProperty>
' <OutputPath>bin\release</OutputPath>
' <MyNewProperty>MyNewValue</MyNewProperty>
Console.WriteLine(project.Xml)
End Sub
End Module
Remarks
A BuildPropertyGroup object can represent a element in the project, or a virtual collection of properties, such as global properties or environment variable properties.
Constructors
BuildPropertyGroup() |
Initializes a new instance of the BuildPropertyGroup class. |
BuildPropertyGroup(Project) |
Initializes a new PropertyGroup element in the specified project. |
Properties
Condition |
Gets or sets the |
Count |
Gets a value indicating the number of BuildProperty objects in the BuildPropertyGroup. |
IsImported |
Gets or sets a value indicating whether the property group was imported into the project. |
Item[String] |
Gets or sets a BuildProperty object in this BuildPropertyGroup. |
Methods
AddNewProperty(String, String) |
Adds a new BuildProperty with the specified Name and Value to the BuildPropertyGroup. |
AddNewProperty(String, String, Boolean) |
Adds a new BuildProperty with the specified Name and Value to the BuildPropertyGroup. |
Clear() |
Removes the Condition property value and all BuildProperty objects from the BuildPropertyGroup. |
Clone(Boolean) |
Creates a deep or shallow copy of the BuildPropertyGroup. |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
GetEnumerator() |
Gets an enumerator that iterates through the BuildPropertyGroup. |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
RemoveProperty(BuildProperty) |
Removes the specified BuildProperty from the BuildPropertyGroup. |
RemoveProperty(String) |
Removes the BuildProperty with the specified Name from the BuildPropertyGroup. |
SetImportedPropertyGroupCondition(String) |
Sets the condition for imported property groups. Changes are not persisted. |
SetProperty(String, String) |
Sets the Value of the BuildProperty with the specified Name. |
SetProperty(String, String, Boolean) |
Sets the Value of the BuildProperty with the specified Name. |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |
Extension Methods
Cast<TResult>(IEnumerable) |
Casts the elements of an IEnumerable to the specified type. |
OfType<TResult>(IEnumerable) |
Filters the elements of an IEnumerable based on a specified type. |
AsParallel(IEnumerable) |
Enables parallelization of a query. |
AsQueryable(IEnumerable) |
Converts an IEnumerable to an IQueryable. |