如何递归执行MSBuild目标?
我试图执行以下目标,但最终导致如何递归执行MSBuild目标?,msbuild,Msbuild,我试图执行以下目标,但最终导致循环依赖性错误。在目标递归中,我确实有一个停止条件$(值)>0: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> <Target Name="Recursive" Condition="$(Value) > 0"> <PropertyGroup> <Value
循环依赖性
错误。在目标递归
中,我确实有一个停止条件$(值)>0
:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<Target Name="Recursive" Condition="$(Value) > 0">
<PropertyGroup>
<Value>$([MSBuild]::Subtract($(Value), 1))</Value>
</PropertyGroup>
<MSBuild Projects="$(MSBuildProjectFile)" Targets="Display" />
</Target>
<Target Name="Display">
<Message Text="Value: $(Value)" />
<MSBuild Projects="$(MSBuildProjectFile)" Targets="Recursive" />
</Target>
<PropertyGroup>
<Value>10</Value>
</PropertyGroup>
<Target Name="Build">
<MSBuild Projects="$(MSBuildProjectFile)" Targets="Display" />
</Target>
</Project>
$([MSBuild]::减去($(值),1))
10
您的停止条件很好,但您忘记将重新计算的值
属性传递到下一个递归中。将您的递归
目标更改如下:
<Target Name="Recursive" Condition="$(Value) > 0">
<PropertyGroup>
<Value>$([MSBuild]::Subtract($(Value), 1))</Value>
</PropertyGroup>
<MSBuild Projects="$(MSBuildProjectFile)" Targets="Display"
Properties="Value=$(Value)" />
</Target>
$([MSBuild]::减去($(值),1))
Wow。非常感谢你。