2011-12-15 73 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> 
相关问题