具有MSBUILD错误的TFS上的HeatDirectory失败MSB4166:子节点“3”过早退出

时间:2014-09-24 13:31:33

标签: msbuild wix heat


我在我的* .wixproj文件中使用了HeatDirectory任务,该文件在我的机器上工作正常,在本地构建。

但是,在TFS上,它失败并出现以下错误:

  

C:\ Program Files(x86)\ WiX Toolset v3.8 \ bin \ Heat.exe目录   D:\ Builds \ 32 \ 48 \ bin \ Debug \ InstallSrc \ WebApp \ -cg CompGrp_WebApp -dr   WebApp -ke -scom -sreg -srd -var var.WebAppSrc -v -ag -sfrag -suid   -out WebApp_.wxs            无法加载文件或程序集' file:/// C:\ Program Files(x86)\ WiX Toolset v3.8 \ bin \ Heat.exe'或其中一个依赖项。一个   尝试加载格式不正确的程序。               在System.Reflection.RuntimeAssembly。 nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly   locationHint,StackCrawlMark& stackMark,IntPtr pPrivHostBinder,   Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean   suppressSecurityChecks)               在System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName   assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,   StackCrawlMark&安培; stackMark,IntPtr pPrivHostBinder,Boolean   throwOnFileNotFound,Boolean forIntrospection,Boolean   suppressSecurityChecks)               在System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName   assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,   StackCrawlMark&安培; stackMark,Boolean throwOnFileNotFound,Boolean   forIntrospection,Boolean suppressSecurityChecks)               在System.Reflection.RuntimeAssembly.InternalLoadFrom(String   assemblyFile,Evidence securityEvidence,Byte [] hashValue,   AssemblyHashAlgorithm hashAlgorithm,Boolean forIntrospection,Boolean   suppressSecurityChecks,StackCrawlMark& stackMark)               在System.Reflection.Assembly.LoadFrom(String assemblyFile)               在Microsoft.Tools.WindowsInstallerXml.Build.Tasks.WixToolTask​​.ExecuteToolThread(Object   参数)        0> MSBUILD:错误MSB4166:子节点" 3"过早退出。关机诊断信息可以在文件中找到   名为MSBuild的临时文件目录 * .failure.txt。

但是,在同一台构建机器上,我尝试执行加热命令行(由上面的日志生成)并使其正常工作:即 C:\ Program Files(x86)\ WiX Toolset v3.8 \ bin \ Heat.exe dir D:\ Builds \ 32 \ 48 \ bin \ Debug \ InstallSrc \ WebApp \ -cg CompGrp_WebApp -dr WebApp -ke -scom -sreg -srd -var var.WebAppSrc -v -ag -sfrag -suid -out WebApp_.wxs

我甚至通过在TFS定义中禁用MsBuild Multi-Proc(并行构建项目)来尝试它,但是徒劳无功。

为什么它在TFS上失败,而不是在本地失败?

非常感谢.....

1 个答案:

答案 0 :(得分:6)

我对Wix-User's mailing group得到了很好的回复。基本上是MsBuild平台问题。它是Auto,需要设置为x86。由于我的解决方案是构建x64项目,所以MsBuild处于x64模式,但是heat.exe没有,因此MsBuild会在日志中显示此消息(如上面的原始帖子所示)

  

无法加载文件或程序集' file:/// C:\ Program Files(x86)\ WiX   工具集v3.8 \ bin \ Heat.exe'或其中一个依赖项。一次尝试   用于加载格式不正确的程序

因此,将Auto更改为x86即 TFS - >编辑构建定义 - >过程 - >高级 - > MSBuild平台= X86。

希望这有助于其他人面临同样的问题。

TFS MSBUILD platform changing