将属性组值从一个MsBuild任务传递到另一个 [英] Passing property group value from one MsBuild task to another
本文介绍了将属性组值从一个MsBuild任务传递到另一个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使一个构建目标中定义的值在其他targert中保持活动状态?如果PropertyGroup不是我应该在此处使用的写入MsBuild实体,那是什么? ReleaseDir在"Package"目标中可以正常打印,但在"DoPackage"中为空
How do I keep values defined in one build target alive in other targert? If PropertyGroup is not the write MsBuild entity I should use here, what is? ReleaseDir is printed ok in "Package" target, but is empty in "DoPackage"
<Target Name="Package">
<PropertyGroup>
<ReleasesDir>c:\tmp</ReleasesDirBase>
</PropertyGroup>
<Message Text="$(ReleaseDir)"/>
<CallTarget Targets="DoPackage" Condition="!Exists('$(ReleaseDir)')"/>
</Target>
<!-- Do the acutal packaging -->
<Target Name="DoPackage">
<Message Text="Creating package in '$(ReleaseDir)'"/>
<Error Condition="'$(ReleaseDir)' == ''" Text="No ReleaseDir defined"/>
<MakeDir Directories="$(ReleaseDir)"/>
...
</Target>
推荐答案
有一个众所周知的问题与属性和CallTarget任务有关.您应该改用DependsOnTargets.
There is a well known issue with properties and the CallTarget task. You should use DependsOnTargets instead.
<Target Name="Package">
<PropertyGroup>
<ReleasesDir>c:\tmp</ReleasesDir>
</PropertyGroup>
<Message Text="$(ReleasesDir)"/>
</Target>
<Target Name="PrePackage" DependsOnTargets="Package">
<CallTarget Targets="DoPackage" Condition="!Exists('$(ReleasesDir)')"/>
</Target>
<!-- Do the actual packaging -->
<Target Name="DoPackage" DependsOnTargets="Package">
<Message Text="Creating package in '$(ReleasesDir)'"/>
<Error Condition="'$(ReleasesDir)' == ''" Text="No ReleaseDir defined"/>
<MakeDir Directories="$(ReleasesDir)"/>
</Target>
这篇关于将属性组值从一个MsBuild任务传递到另一个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文