团队构建目标未执行

时间:2011-06-24 02:00:52

标签: tfs msbuild team-build

我有一个tfs 2008版本,我需要添加WiX compliation。

目前,构建执行并编译并将所有输出复制到以下目标

中的drop位置
<Target Name="AfterCompile"> .... </Target>

我在其下方添加了另一个目标,如下所示

<UsingTask TaskName="HeatDirectory" AssemblyFile="$(WixTasksPath)" />

<Target Name="BuildMsi" DependsOnTargets="AfterCompile">
  <Message Text="Start harvesting Website files for Wix compliation" />
  <HeatDirectory
                ToolPath="$(WixToolPath)"
                Directory="$(DropLocation)\Latest\x86\Release\_PublishedWebsites\IFMA.MasterPlan.Web"
                GenerateGuidsNow="yes"
                ComponentGroupName="Web"
                OutputFile="$(MSBuildProjectDirectory)\Setup\Product\Fragments\wwwfiles.wxs"
                SuppressFragments="yes"
                DirectoryRefId="WebRoot"
                KeepEmptyDirectories="yes"
                PreprocessorVariable="var.WebRoot"
                SuppressRegistry="yes"
                SuppressRootDirectory="yes"
                SuppressCom="yes"
                   />

  <Message Text="Finished harvesting Website files for Wix compliation" />

</Target>

永远不会执行BuildMsi目标,但绝对是AfterCompile目标。

BuildMsi未列在默认构建目标中      但我认为,因为它依赖于AfterCompile,它将在它之后执行。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

DependsOnTargets列出了目标可以运行之前必须执行的目标,它不会强制目标在目标列表运行后运行。

请参阅:http://msdn.microsoft.com/en-us/library/t50z2hka(v=VS.90).aspx

如果您使用的是MSBuild 4.0,则需要AfterTargets属性:

  

AfterTargets:可选属性。

     

以分号分隔的目标列表   名。指定时,表示   这个目标应该在之后运行   指定的目标或目标。这个   让项目作者扩展   没有的现有目标集   直接修改它们。

或者,您可以使用目标注入,它基本上覆盖.proj文件中的CompileDependsOn属性,以在最后包含目标。您需要在导入公共目标文件后声明此属性,以确保它是属性的最后一个定义。

<PropertyGroup>
    <CompileDependsOn>
        $(CompileDependsOn);
        MyCustomTarget
    </CompileDependsOn>
</PropertyGroup>

有关详细信息,请参阅"How to extend the visual studio build process"