多个DependsOnTargets不执行

时间:2016-10-24 14:50:04

标签: visual-studio-2015 msbuild targets

我正在使用msbuild进行构建任务。 在任务中,我有几个目标,其中一些目标执行准备工作。

当我执行" msbuild myEvent.msbuild / t:event3" 时,事件会运行。 DependsOnTargets中的第一个事件执行但目标列表中的第二个事件不执行。 实施例

<!-- only event1 will fire -->
<Target Name="event3" DependsOnTargets="event1; event2">
   <Task TaskAction="myAction3"/>
</Target>
<Target Name="event1" DependsOnTargets="event4">
   ... do tasks here
</Target>
<Target Name="event2" >
   ... do tasks here
</Target>
<Target Name="event4" >
</Target>

我试图通过消除DependsOnTargets值中的空格来修改它。我确保我有分号分隔值。我尝试过使用BeforeTargets和AfterTargets但没有成功。

我的msbuild代码的目标是ToolsVersion 4.0。

DependsOnTargets的工作方式是否有我遗漏的东西?

修改

  • 我想我弄明白了我的问题。 MSBuild不允许我多次执行同一个目标。
  • 在这种情况下,我必须做以下事情
    • 启动数据库服务
    • drop databases
    • 停止服务
    • 从zip文件中提取一些数据库文件
    • 启动数据库服务
    • 附加数据库
    • 对数据库执行进一步操作......
  • 第一个启动数据库服务将执行,同时删除数据库并停止服务。下一次启动数据库服务的调用失败。

1 个答案:

答案 0 :(得分:0)

问题是因为我将目标视为任务;我试图减少重复的代码。

目标执行后,它永远不会再执行。所以这里需要明确的是什么是目标,什么是任务。

我目前通过删除要作为任务的目标并在正确的目标中创建所需任务(如启动和停止服务)来解决此问题。