2011-12-15 114 views
0

我們有X,Y,Z屬性文件並具有master.properties文件如何將項目逐個傳遞給另一個msbuild任務?

現在,我已經寫在我的master.properties文件一些的ItemGroup喜歡遵循,並通過這個來的ItemGroup MSBuild的目標,使其工作像foreach一樣。

項目組:

<Components Include="Y:\Build\X.Properties"> 
     <ComponentName>X</ComponentName> 
    </Components> 

    <Components Include="Y:\Build\Y.Properties"> 
     <ComponentName>Y</ComponentName> 
    </Components> 

    <Components Include="Y:\Build\Z.Properties"> 
     <ComponentName>Z</ComponentName> 
    </Components> 



<Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy"> 

    <MSBuild Projects="@(Components)" 

      Targets="BuildComponent" /> 

    </Target> 

現在我想有哪裏組件名稱將被賦予這樣

X Ÿ

應該單獨建立只有X和Y一個txt文件。

我想用ReadLinesFromFile,但我無法傳遞一個一個的組件。

對於前:

<ReadLinesFromFile File="Allcomponent.txt"> 
     <Output TaskParameter="Lines" ItemName="AllComponent" /> 
    </ReadLinesFromFile> 

然後我想通過一個傳遞元件在一個的ItemGroup調用MSBuild任務。

如何解決這個問題?

+0

PowerShell來自哪裏? – Abbas

+0

@Abbas:我剛剛從這個問題中刪除了powershell標籤... – Aacini

回答

0

終於讓我找到了解決方案。解決方案如下

我應該使用Component名稱創建屬性。

<X>Y:\Build\X.Properties</X> 
<Y>Y:\Build\Y.Properties</Y> 
<Z>Y:\Build\Z.Properties</Z> 

而且在MSBuild任務,我應該如下

<Target Name="BuildAll" > 

    <ReadLinesFromFile File="$(AllComponents)"> 
     <Output TaskParameter="Lines" ItemName="AllComponents"/> 
    </ReadLinesFromFile> 

    <MSBuild Projects="$(%(AllComponents.Identity))" 

      Targets="BuildComponent" /> 

</Target> 

遵循現在將構建一個我通過文本文件中的分量。

0

你的問題不是很清楚,特別是在「我無法逐個傳遞組件」之後。

您可以訪問自定義元數據爲每個項目在這樣一個的ItemGroup:

<Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy"> 
    <MSBuild Projects="%(Identity)" 
      Targets="%(ComponentName)" /> 
</Target> 
相關問題