【问题标题】:MSBuild SvnInfo - which Target Inputs are correct?MSBuild SvnInfo - 哪些目标输入是正确的?
【发布时间】:2011-08-16 11:22:17
【问题描述】:

我在 MSBuild 脚本中使用SvnInfo task

<SvnInfo LocalPath="$(Sources)">
  <Output TaskParameter="Revision" PropertyName="Revision" />
</SvnInfo>

$(Sources) 仅包含源文件。

显然SvnInfo 依赖于$(Sources) 中的文件。 然后 Target 使用 info 生成带有修订号的输出文件。

实际上我想在修订号更改时运行 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文件夹是否被修改。

【问题讨论】:

  • 所以您问如何通过文件或您的意思输入哪个输入来填写“@(Target1Inputs)”?
  • @sllev 我在问要在 Target 标签的 Input 属性中指定什么。我提出了我的变体,但我不确定。 (更新问题)
  • 看我的回答,如果你还有别的意思也请告诉我

标签: svn msbuild msbuildcommunitytasks msbuild-target


【解决方案1】:

基本上是这样的:

<PropertyGroup>
  <ExcludePdbs>$(YourOutputPath)\**\*.pdb</ExcludePdbs>
  <ExcludeTmp>$(YourOutputPath)\**\*tmp*</ExcludeTmp>
</PropertyGroup>

<!-- Prepare set of files -->
<ItemGroup>
   <Files Include="$(FilesToIncludeFolder)\**\*.*"
          Exclude="$(ExcludePdbs);$(ExcludeTmp);$(ExcludeOtherFiles);"/>
</ItemGroup>

<!-- Pass into the target -->
<Target Name="Target1" Inputs="@(Files)" Outputs="..." />

编辑:问题已更新,所以这也是我的更新

假设您可以处理修订更改状态,您可以将Condition 添加到Target 并根据属性$(RevisionWasChanged) 运行它。

<Target Condition="$(RevisionWasChanged)=='True'"` />

还可以使用&lt;Choose&gt; 功能控制构建脚本执行流程:

<Choose>
    <When Condition="$(RevisionWasChanged)=='True'">
    </When>
    <Otherwise>
    </Otherwise>
</Choose>

让我知道它是否适合你。

【讨论】:

  • 当使用不正确的输入运行我的任务时,可以更新源,但由于增量构建目标未执行。实际上,我想在修订号更改时运行 SvnInfo,但在修订号相同时不运行 Target(使用增量构建)。在包含属性中,我指定了仅包含源的文件夹。
  • @sergdev :您必须将此详细信息添加到答案中,因为它们很重要
  • 事实上,计算$(RevisionWasChanged) 的简单方法是我的问题的可能答案之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多