BuildItem 类

定义

表示 MSBuild 项目中的单个项。Represents a single item in an MSBuild project.

public ref class BuildItem
public class BuildItem
type BuildItem = class
Public Class BuildItem
继承
BuildItem

示例

下面的示例创建一个 @no__t 0 对象,并使用 LoadXml 方法将内容添加到项目。The following example creates a Project object and uses the LoadXml method to add content to the project. @No__t-0、BuildItemGroupBuildItemGroupCollection 类用于在项目中添加、删除和更改项。The BuildItem, BuildItemGroup, and BuildItemGroupCollection 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 AddNewItem
{
    class Program
    {
        /// <summary>
        /// This code demonstrates the use of the following methods:
        ///     Engine constructor
        ///     Project constructor
        ///     Project.LoadFromXml
        ///     Project.Xml
        ///     BuildItemGroupCollection.GetEnumerator
        ///     BuildItemGroup.GetEnumerator
        ///     BuildItem.Name (get)
        ///     BuildItem.Include (set)
        ///     BuildItem.GetMetadata
        ///     BuildItem.SetMetadata
        ///     BuildItemGroup.RemoveItem
        ///     BuildItemGroup.AddNewItem
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // 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 ItemGroups.
            project.LoadXml(@"
                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>

                    <ItemGroup>
                        <Compile Include='Program.cs'/>
                        <Compile Include='Class1.cs'/>
                        <RemoveThisItemPlease Include='readme.txt'/>
                    </ItemGroup>

                    <ItemGroup>
                        <EmbeddedResource Include='Strings.resx'>
                            <LogicalName>Strings.resources</LogicalName>
                            <Culture>fr-fr</Culture>
                        </EmbeddedResource>
                    </ItemGroup>

                </Project>
                ");

            // Iterate through each ItemGroup in the Project.  There are two.
            foreach (BuildItemGroup ig in project.ItemGroups)
            {
                BuildItem itemToRemove = null;

                // Iterate through each Item in the ItemGroup.
                foreach (BuildItem item in ig)
                {
                    // If the item's name is "RemoveThisItemPlease", then
                    // store a reference to this item in a local variable,
                    // so we can remove it later.
                    if (item.Name == "RemoveThisItemPlease")
                    {
                        itemToRemove = item;
                    }

                    // If the item's name is "EmbeddedResource" and it has a metadata Culture
                    // set to "fr-fr", then ...
                    if ((item.Name == "EmbeddedResource") && (item.GetMetadata("Culture") == "fr-fr"))
                    {
                        // Change the item's Include path to "FrenchStrings.fr.resx", 
                        // and add a new metadata Visiable="false".
                        item.Include = @"FrenchStrings.fr.resx";
                        item.SetMetadata("Visible", "false");
                    }
                }

                // Remove the item named "RemoveThisItemPlease" from the
                // ItemGroup
                if (itemToRemove != null)
                {
                    ig.RemoveItem(itemToRemove);
                }

                // For each ItemGroup that we found, add to the end of it
                // a new item Content with Include="SplashScreen.bmp".
                ig.AddNewItem("Content", "SplashScreen.bmp");
            }

            // The project now looks like this:
            //
            //     <?xml version="1.0" encoding="utf-16"?>
            //     <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
            //         <Compile Include="Program.cs" />
            //         <Compile Include="Class1.cs" />
            //         <Content Include="SplashScreen.bmp" />
            //         <EmbeddedResource Include="FrenchStrings.fr.resx">
            //           <LogicalName>Strings.resources</LogicalName>
            //           <Culture>fr-fr</Culture>
            //           <Visible>false</Visible>
            //         <Content Include="SplashScreen.bmp" />
            //
            Console.WriteLine(project.Xml);
        }
    }
}
Module Module1

    ''' <summary>
    ''' This code demonstrates the use of the following methods:
    '''     Engine constructor
    '''     Project constructor
    '''     Project.LoadFromXml
    '''     Project.Xml
    '''     BuildItemGroupCollection.GetEnumerator
    '''     BuildItemGroup.GetEnumerator
    '''     BuildItem.Name (get)
    '''     BuildItem.Include (set)
    '''     BuildItem.GetMetadata
    '''     BuildItem.SetMetadata
    '''     BuildItemGroup.RemoveItem
    '''     BuildItemGroup.AddNewItem
    ''' </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 ItemGroups.
        project.LoadXml( _
            "<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>" & _
                "<ItemGroup>" & _
                    "<Compile Include='Program.cs'/>" & _
                    "<Compile Include='Class1.cs'/>" & _
                    "<RemoveThisItemPlease Include='readme.txt'/>" & _
                "</ItemGroup>" & _
                "<ItemGroup>" & _
                    "<EmbeddedResource Include='Strings.resx'>" & _
                        "<LogicalName>Strings.resources</LogicalName>" & _
                        "<Culture>fr-fr</Culture>" & _
                    "</EmbeddedResource>" & _
                "</ItemGroup>" & _
            "</Project>" _
            )

        ' Iterate through each ItemGroup in the Project.  There are two.
        For Each ig As BuildItemGroup In project.ItemGroups

            Dim itemToRemove As BuildItem
            itemToRemove = Nothing

            ' Iterate through each Item in the ItemGroup.
            For Each item As BuildItem In ig

                ' If the item's name is "RemoveThisItemPlease", then
                ' store a reference to this item in a local variable,
                ' so we can remove it later.
                If item.Name = "RemoveThisItemPlease" Then
                    itemToRemove = item
                End If

                ' If the item's name is "EmbeddedResource" and it has a metadata Culture
                ' set to "fr-fr", then ...
                If (item.Name = "EmbeddedResource") And (item.GetMetadata("Culture") = "fr-fr") Then
                    ' Change the item's Include path to "FrenchStrings.fr.resx", 
                    ' and add a new metadata Visiable="false".
                    item.Include = "FrenchStrings.fr.resx"
                    item.SetMetadata("Visible", "false")
                End If
            Next

            ' Remove the item named "RemoveThisItemPlease" from the
            ' ItemGroup
            If Not itemToRemove Is Nothing Then
                ig.RemoveItem(itemToRemove)
            End If

            ' For each ItemGroup that we found, add to the end of it
            ' a new item Content with Include="SplashScreen.bmp".
            ig.AddNewItem("Content", "SplashScreen.bmp")
        Next

        ' The project now looks like this:
        '
        '     <?xml version="1.0" encoding="utf-16"?>
        '     <Project xmlns="http:'schemas.microsoft.com/developer/msbuild/2003">
        '         <Compile Include="Program.cs" />
        '         <Compile Include="Class1.cs" />
        '         <Content Include="SplashScreen.bmp" />
        '         <EmbeddedResource Include="FrenchStrings.fr.resx">
        '           <LogicalName>Strings.resources</LogicalName>
        '           <Culture>fr-fr</Culture>
        '           <Visible>false</Visible>
        '         <Content Include="SplashScreen.bmp" />
        '
        Console.WriteLine(project.Xml)

    End Sub

End Module

注解

项目中的元素可以通过使用通配符来表示多个项。An element in a project can represent multiple items through the use of wildcards. 因此,每个 @no__t 0 对象不一定表示项目中的 @no__t 元素。Therefore, each BuildItem object does not necessarily represent an Item element in the project.

构造函数

BuildItem(String, ITaskItem)

基于 BuildItem 对象初始化 ITaskItem 类的新实例。Initializes a new instance of the BuildItem class based on an ITaskItem object.

BuildItem(String, String)

用指定的 BuildItemName 属性值初始化 Include 类的新实例。Initializes a new instance of the BuildItem class with the specified Name and Include property values.

属性

Condition

获取或设置项的 Condition 属性值。Gets or sets the Condition attribute value of the item.

CustomMetadataCount

获取在该项上设置的自定义特性数。Gets the number of custom attributes that are set on this item.

CustomMetadataNames

获取所有用户定义的或自定义的特性名称。Gets all user-defined or custom attribute names.

Exclude

获取或设置项的 Exclude 属性值。Gets or sets the Exclude attribute value of the item.

FinalItemSpec

获取在计算所有通配符和属性后该项的最终规范。Gets the final specification of the item after all wildcards and properties have been evaluated.

Include

获取或设置创建 BuildItemInclude 特性。Gets or sets the Include attribute that created the BuildItem.

IsImported

获取一个值,该值指示该项是否已导入项目。Gets a value indicating whether the item was imported into the project.

MetadataCount

获取在该项上设置的元数据的数目。Gets the number of metadata set on the item.

MetadataNames

获取项上的元数据的名称,包括预定义的或保留的项目特定修饰符。Gets the names of metadata on the item, including pre-defined or reserved item-spec modifiers.

Name

获取或设置该项所属的项集合的名称。Gets or sets the name of the item collection to which the item belongs.

方法

Clone()

创建 BuildItem 的浅表副本。Creates a shallow copy of the BuildItem.

CopyCustomMetadataTo(BuildItem)

将此 BuildItem 的所有项元数据复制到指定的 BuildItemCopies all item metadata on this BuildItem to the specified BuildItem.

Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(继承自 Object)
GetEvaluatedMetadata(String)

返回在计算所有项和属性引用后指定项元数据的值。Returns the value of the specified item metadata after all item and property references have been evaluated.

GetHashCode()

用作默认哈希函数。Serves as the default hash function.

(继承自 Object)
GetMetadata(String)

返回指定的项元数据的值。Returns the value of the specified item metadata.

GetType()

获取当前实例的 TypeGets the Type of the current instance.

(继承自 Object)
HasMetadata(String)

指示该项是否具有指定的项元数据。Indicates whether the item has the specified item metadata.

MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(继承自 Object)
RemoveMetadata(String)

移除指定的项元数据。Removes the specified item metadata.

SetMetadata(String, String)

将指定值分配给指定的项元数据。Assigns the specified value to the specified item metadata.

SetMetadata(String, String, Boolean)

将指定值分配给指定的项元数据,并可以选择将元数据作为文本值处理。Assigns the specified value to the specified item metadata, and optionally treats the metadata as a literal value.

ToString()

返回一个表示当前对象的 string。Returns a string that represents the current object.

(继承自 Object)

适用于