Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tfs 团队构建目标未执行_Tfs_Msbuild_Tfsbuild - Fatal编程技术网

Tfs 团队构建目标未执行

Tfs 团队构建目标未执行,tfs,msbuild,tfsbuild,Tfs,Msbuild,Tfsbuild,我有一个TFS2008版本,需要添加WiX兼容性 当前,构建将执行并编译所有输出,并将其复制到以下目标中的drops位置 <Target Name="AfterCompile"> .... </Target> 。。。。 我在它的正下方添加了另一个目标,如下所示 <UsingTask TaskName="HeatDirectory" AssemblyFile="$(WixTasksPath)" /> <Target Name="BuildMsi" D

我有一个TFS2008版本,需要添加WiX兼容性

当前,构建将执行并编译所有输出,并将其复制到以下目标中的drops位置

<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,所以它将在它之后执行


我在这里遗漏了什么?

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

见:

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

后目标:可选属性

以分号分隔的目标列表 名字。指定时,表示 此目标应在 指定的一个或多个目标。这 允许项目作者扩展 现有的一套目标 直接修改它们

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

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

美元(已编撰);
MyCustomTarget

有关更多详细信息,请参阅。

我不确定heat任务是否正确,但我实际上并不关心如何执行目标,然后我可以担心如何将heat任务发送到workDaniel-我添加了一些关于目标注入的信息,您可能可以在本例中使用这些信息。