我在我的* .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上失败,而不是在本地失败?
非常感谢.....
答案 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。
希望这有助于其他人面临同样的问题。