共用方式為


操作項目和屬性的新方法 (MSBuild)

更新:2007 年 11 月

從 MSBuild 3.5 開始,您可以執行下列作業:

  • 定義「項目定義群組」,其中包含套用到專案中所有項目的中繼資料 (Metadata)。

  • 直接在「項目群組」中動態建立、刪除、合併或變更屬性、項目和項目中繼資料。如此就無須使用 CreateItem 工作和 CreateProperty 工作。

項目定義群組

ItemDefinitionGroup 項目可讓您定義一組「項目定義」,這些項目定義是預設套用到專案中所有項目的中繼資料值。如需詳細資訊,請參閱項目定義

動態調整項目群組中的中繼資料

MSBuild 使用 ItemGroup 項目 (MSBuild)PropertyGroup 項目 (MSBuild) 靜態宣告項目和屬性。在 MSBuild 2.0 中,當您想要在建置期間建立或修改屬性和項目時,必須使用 CreateItem 工作CreateProperty 工作。此程序相當麻煩,而且動態更新的效果不佳。相較之下,MSBuild 3.5 就可讓您直接在「項目群組」中動態建立、刪除、合併或變更屬性、項目和項目中繼資料。

請比較下列範例。範例 1 顯示如何使用 CreateItem 工作加入工作參數,以及建立新項目清單和中繼資料。範例 3 則顯示直接在 ItemGroup 中加入中繼資料的新方法。

範例 1:使用 CreateItem 工作加入工作參數的簡單範例。第一個目標使用 CreateItem 工作動態建立名為 CultureResource 的新項目清單。第二個目標則針對原始清單中的所有 Culture 資源,加入名為 TargetDirectory 的新中繼資料。

<Target Name="GenerateBeforeCompile">
     <CreateItem Include="SomeGeneratedCode.cs">
        <Output TaskParameter="Include" ItemName="Compile" /> 
    </CreateItem>
</Target>

<Target Name="ProcessCultureResources">
    <CreateItem Include="@(EmbeddedResource)" 
      Condition="'%(Culture)' != ''"
      AdditionalMetadata="TargetDirectory=%
      (EmbeddedResource.Culture)">
    <Output TaskParameter="Include" ItemName="CultureResource" />
    </CreateItem>
</Target>

範例 2:上述範例所產生的結果,現在可以直接將參數和中繼資料直接加入到 ItemGroup 來完成。

<Target Name="GenerateBeforeCompile">
     <ItemGroup>
        <Compile Include="SomeGeneratedCode.cs" />
    </ItemGroup>
 </Target>
 
<Target Name="ProcessCultureResources">
    <ItemGroup>
        <CultureResource Include="@(EmbeddedResource)"
          Condition="'%(EmbeddedResource.Culture)' != ''">
             <TargetDirectory>%(EmbeddedResource.Culture) </TargetDirectory>
        </CultureResource>
    </ItemGroup>
</Target>

移除項目

在舊版 MSBuild 中,若要省略清單中的項目,就必須建立新清單。不過,現在可以使用新的 Remove 參數直接移除項目,如下所示:

<ItemGroup>
    <!—Remove *.licx from the EmbeddedResource list - ->
    <EmbeddedResource Remove="*.licx" />
 
    <!—Or remove items in @(licx) from EmbeddedResource list -- >
    <EmbeddedResource Remove="@(licx)" />
</ItemGroup>

請參閱

概念

MSBuild 專案檔案結構描述參考

其他資源

MSBuild 概念