MSBuild SvnInfo - 哪些目标输入是正确的?
我在 MSBuild 脚本中使用 SvnInfo 任务:
<SvnInfo LocalPath="$(Sources)">
<Output TaskParameter="Revision" PropertyName="Revision" />
</SvnInfo>
$(Sources)
仅包含源文件。
显然 SvnInfo
依赖于 $(Sources)
中的文件。 然后目标使用信息生成带有修订号的输出文件。
事实上,我想在修订号更改时运行 SvnInfo,但在修订号与上次运行相同时不运行 Target(使用增量构建)。
如何在目标中指定正确的输入(Target
标签中的属性Inputs
,其中包含SvnInfo
任务的调用)?
我通过以下方式做到了:
<ItemGroup>
<Target1Inputs Include="$(Sources)\**" />
</ItemGroup>
<Target Name="Target1" Inputs="@(Target1Inputs)" Outputs="...">
...
<!-- SvnInfo call here -->
<!-- File with revision number is created here -->
</Target>
在我看来这是解决方法,因为理想情况下我应该知道 SvnInfo
依赖于哪些文件而无需猜测。是否可以获得此类信息?
我也不知道 .svn
文件夹是否被修改。
I use SvnInfo task in MSBuild script:
<SvnInfo LocalPath="$(Sources)">
<Output TaskParameter="Revision" PropertyName="Revision" />
</SvnInfo>
$(Sources)
contains source files only.
Obviously SvnInfo
depends on files in $(Sources)
.
Target then uses info to generate output file with revision number.
In fact I want to run SvnInfo when revision number is changed, but not to run Target (use incremental build) when Revision number is the same as previous run.
How to specify correctly input in target (attribute Inputs
in Target
tag, which contains call of SvnInfo
task)?
I made it in the following way:
<ItemGroup>
<Target1Inputs Include="$(Sources)\**" />
</ItemGroup>
<Target Name="Target1" Inputs="@(Target1Inputs)" Outputs="...">
...
<!-- SvnInfo call here -->
<!-- File with revision number is created here -->
</Target>
It seems to me its workaround, because ideally I should know which files SvnInfo
depends on without guessing. Is it possible to obtain such info?
I am also not aware whether .svn
folders are modified or not.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
基本上是这样的:
编辑:问题已更新,所以这里也是我的更新
假设您可以处理修订更改状态,您可以将
Condition
添加到Target
并运行它取决于属性$(RevisionWasChanged)
。另外,为了控制构建脚本执行流程,您可以使用
功能:让我知道它是否适合您。
Basically in this way:
EDIT: The question was updated so here is my update as well
Supposing you can handle revision changed state, you can add
Condition
to aTarget
and run it depends on property$(RevisionWasChanged)
.Also to control build script execution flow you can use
<Choose>
feature:Let me know whether it works for you.