Item 項目 (MSBuild)
含有使用者定義的項目及其中繼資料 (Metadata)。MSBuild 專案中使用的每個項目 (Item),都必須指定為 ItemGroup 項目 (Element) 的子項目。
<Item Include="*.cs"
Exclude="MyFile.cs"
Remove="RemoveFile.cs"
Condition="'String A'=='String B'" >
<ItemMetadata1>...</ItemMetadata1>
<ItemMetadata2>...</ItemMetadata2>
</Item>
屬性和項目
下列章節會說明屬性、子項目和父項目。
屬性
屬性 |
描述 |
---|---|
Include |
必要屬性。 要包括在項目清單中的檔案或萬用字元。 |
Exclude |
選擇性屬性。 要從項目清單中排除的檔案或萬用字元。 |
Condition |
選擇性屬性。 要評估的條件。如需詳細資訊,請參閱MSBuild 條件。 |
Remove |
選擇性屬性。 要從項目清單中移除的檔案或萬用字元。 如果啟用這個屬性,只有+当它為項目指定了在 ItemGroup AMPL lT AMPL gT。 Target |
KeepMetadata |
選擇性屬性。 來源項目的中繼資料可以加入至目標項目。名稱(以分號分隔清單中指定的中繼資料會從來源項目轉移到目標項目。如需詳細資訊,請參閱MSBuild 項目。 如果啟用這個屬性,只有+当它為項目指定了在 ItemGroup AMPL lT AMPL gT。 Target |
RemoveMetadata |
選擇性屬性。 來源項目的中繼資料可以傳輸到目標項目。所有中繼資料從來源項目轉移到不同名稱在名稱以分號分隔的清單包含目前欄位的中繼資料的目標項目。如需詳細資訊,請參閱MSBuild 項目。 如果啟用這個屬性,只有+当它為項目指定了在 ItemGroup AMPL lT AMPL gT。 Target |
KeepDuplicates |
選擇性屬性。 指定是否應該將項目加入至目標群組,則為現有項目的一個完全相同的複本。如果來源和目標項目具有相同的值 Include ,但是使用不同的中繼資料,加入的項目, KeepDuplicates 即使設定 false。如需詳細資訊,請參閱MSBuild 項目。 如果啟用這個屬性,只有+当它為項目指定了在 ItemGroup AMPL lT AMPL gT。 Target |
子項目
元素 |
描述 |
---|---|
使用者定義的項目中繼資料索引鍵,其中含有項目中繼資料值。ItemMetadata 項目 (Element) 中可以有零或多個項目 (Item)。 |
父項目
元素 |
描述 |
---|---|
項目 (Item) 的群組項目 (Element)。 |
備註
Item 項目 (Element) 定義對建置 (Build) 系統的輸入,並根據使用者定義的集合名稱,群組為項目 (Item) 集合。這些項目集合可以用來做為工作的參數,工作會使用集合中的個別項目來執行建置程序的步驟。如需詳細資訊,請參閱MSBuild 項目。
使用標記法 @(myType) 允許將 myType 型別的項目集合展開為以分號分隔的字串清單,並傳遞至參數。如果參數的型別為 string,則參數的值是以分號分隔的項目清單。如果參數是字串的陣列 (string[]),每個項目便會根據分號的位置,插入到陣列之中。如果工作參數屬於 ITaskItem[] 型別,則參數值就是項目集合的內容加上任何附加的中繼資料。若要使用分號以外的字元來分隔每個項目,請使用 @(myType, 'separator') 語法。
MSBuild 引擎可以評估如 * 和 ? 等萬用字元,以及如 /**/*.cs 的遞迴萬用字元。如需詳細資訊,請參閱MSBuild 項目。
範例
在下列程式碼範例中,示範了如何宣告兩個 CSFile 型別的項目。第二個宣告項目含有 myAttribute 設定為 HelloWorld 的中繼資料。
<ItemGroup>
<CSFile Include="engine.cs; form.cs" />
<CSFile Include="main.cs" >
<MyMetadata>HelloWorld</MyMetadata>
</CSFile>
</ItemGroup>