共用方式為


MSBuild 項目

更新:2007 年 11 月

項目是指建置系統的輸入,會依據使用者所定義的集合名稱組成項目集合。這些項目集合可以做為工作的參數,工作會使用集合所含的個別項目,來執行建置處理序的步驟。

在專案檔中建立項目

在專案檔中宣告項目 (Item) 的方式,是使用項目 (Item) 的名稱建立 ItemGroup 項目 (Element) 的子項目。項目的 Include 屬性會指定該項目集合中應包含哪些檔案。例如,下列程式碼會建立名為 Compile 的項目集合,其中包含兩個檔案。

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

下列程式碼會在一個 Include 屬性中宣告兩個檔案 (以分號分隔) 來建立相同的項目集合。

<ItemGroup>
    <Compile Include = "file1.cs;file2.cs"/>
</ItemGroup>

在專案檔中參考項目

在整個專案檔中,您可以使用 @(ItemCollectionName) 語法來參考項目集合。例如,您可以使用 @(Compile) 參考前一個範例中的項目集合。這個語法可讓您藉由指定項目集合做為工作參數的方式,將項目集合傳遞至工作。如需詳細資訊,請參閱 HOW TO:使用萬用字元建置某一目錄內的所有檔案

根據預設,展開項目集合中的項目時,會以分號 (;) 分隔。使用 @(ItemCollectionName, 'separator') 語法可指定與預設值不同的分隔符號。如需詳細資訊,請參閱 HOW TO:顯示以逗號分隔的項目集合

使用萬用字元指定項目

您可以使用 **、* 和 ? 萬用字元指定檔案群組做為組建的輸入,而不分別列出每個檔案。例如,若要在同一個目錄中指定所有 .cs 檔或 .vb 檔做為專案檔,請使用專案檔中的下列其中一個項目︰

<CSFile Include="*.cs"/>

– 或 –

<VBFile Include="*.vb"/>

注意事項:

您只能在項目上使用萬用字元指定組建的輸入。例如,您無法使用萬用字元指定輸入至 Csc 工作中的 Sources 參數。MSBuild 會接受萬元字元做為參數值,但是會將這些值視為字串常值並且不加以評估。下列範例可能會使用字串常值 *.cs 做為 Sources 參數值。

<Target Name="Compile">
    <CSC Sources="*.cs" />
</Target>

如需萬用字元的詳細資訊,請參閱 HOW TO:使用萬用字元建置某一目錄內的所有檔案

使用 Exclude 屬性

項目亦可包含 Exclude 屬性,這個屬性會排除項目集合中的特定檔案。Exclude 屬性搭配萬用字元使用時相當實用。例如,下列程式碼會加入目錄中的每個 .cs 檔,但 DoNotBuild.cs 檔例外。

<ItemGroup>
    <CSFile
        Include="*.cs"
        Exclude="DoNotBuild.cs"/>
</ItemGroup>

如需詳細資訊,請參閱 HOW TO:將目錄中的某一檔案排除在外並建置其餘所有檔案

項目中繼資料

項目中除了從 IncludeExclude 屬性收集的資訊之外,還會包含中繼資料。這項中繼資料可供需要有關項目之詳細資訊的工作使用,或批次處理工作和目標。如需批次處理的詳細資訊,請參閱 MSBuild 批次處理

在專案檔中宣告項目 (Item) 中繼資料的方式,是使用中繼資料的名稱建立項目 (Element) 做為項目 (Item) 的子項目 (Element)。項目可以不包含或包含更多中繼資料值。例如,下列項目的 Culture 中繼資料值為 Fr。

<ItemGroup>
    <CSFile Include="main.cs">
        <Culture>Fr</Culture>
    </CSFile>
</ItemGroup>

在專案檔中參考項目中繼資料

在整個專案檔中,您可以使用 %(ItemMetadataName) 語法來參考項目中繼資料。發生模稜兩可 (Ambiguity) 的情況時,可由項目集合的名稱來限定這個語法,例如 %(ItemCollectionName.ItemMetaDataName)。下列範例會使用 Display 中繼資料來批次處理 Message 工作。如需使用項目中繼資料進行批次處理的詳細資訊,請參閱 HOW TO:使用項目中繼資料批次處理工作

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Stuff Include="One.cs" >
            <Display>false</Display>
        </Stuff>
        <Stuff Include="Two.cs">
            <Display>true</Display>
        </Stuff>
    </ItemGroup>
    <Target Name="Batching">
        <Message Text="@(Stuff)" Condition=" '%(Display)' == 'true' "/>
    </Target>
</Project>

已知的項目中繼資料

無論何時將項目加入至項目集合中,都會建立該項目並指派一些已知的項目中繼資料,例如 %(檔名),其中包含項目的檔名。如需已知項目中繼資料的完整清單,請參閱 MSBuild 已知的項目中繼資料

轉換項目集合

項目集合可以轉換為新的項目集合。例如,使用類似 @(CppFiles -> '%(Filename).obj') 的運算式,可以將 .cpp 檔的項目集合轉換為 .obj 檔的集合。如需詳細資訊,請參閱 MSBuild 轉換

請參閱

工作

HOW TO:使用萬用字元建置某一目錄內的所有檔案

HOW TO:將目錄中的某一檔案排除在外並建置其餘所有檔案

概念

MSBuild 批次處理

MSBuild 工作

參考

ItemGroup 項目 (MSBuild)

Item 項目 (MSBuild)

ItemMetadata 項目 (MSBuild)

MSBuild 已知的項目中繼資料