我们有x,y,z属性文件并且有一个master.properties文件
现在,我在master.properties文件中写了一些像下面这样的项目组,并将这个项目组传递给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>
现在我想要一个txt文件,其中组件名称将像这样给出
X ÿ
它应该只构建X和Y.
我尝试使用ReadLinesFromFile,但我无法逐个传递组件。
例如:
<ReadLinesFromFile File="Allcomponent.txt">
<Output TaskParameter="Lines" ItemName="AllComponent" />
</ReadLinesFromFile>
然后我想逐个传递itemgroup中的组件来调用Msbuild任务。
如何解决这个问题?
答案 0 :(得分:0)
你的问题不是很清楚,尤其是在“我无法逐一传递”之后。
您可以访问ItemGroup中每个项目的自定义元数据,如下所示:
<Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy">
<MSBuild Projects="%(Identity)"
Targets="%(ComponentName)" />
</Target>
答案 1 :(得分:0)
最后我找到了解决方案。解决方案如下所示
我应该使用组件名称创建属性。
<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>
现在它将构建我通过文本文件的组件。