WiX在构建服务器上失败

问题描述:

我有一个使用WiX的项目。它可以在我的本地机器上正常工作,但是当我发布到构建服务器时,构建过程中会出现以下情况。WiX在构建服务器上失败

从MSBuild的日志

Using "HeatDirectory" task from assembly "C:\Program Files (x86)\WiX Toolset v3.6\bin\\WixTasks.dll". 
Task "HeatDirectory" 
    Command: 
    C:\Program Files (x86)\WiX Toolset v3.6\bin\Heat.exe dir "C:\Builds\3\Project\Foo Bar - CI\Sources\Company.Foobar.UI\obj\BuildServer\Package\PackageTmp\\" -cg Company.Foobar.UI_Project -dr INSTALLLOCATION -scom -sreg -srd -var var.WebServiceProjectDir -ag -sfrag -out web\Company.Foobar.UI.wxs 
    Could not load file or assembly 'file:///C:\Program Files (x86)\WiX Toolset v3.6\bin\Heat.exe' or one of its dependencies. An attempt was made to load a program with an incorrect format. 
    at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark) 
    at System.Reflection.Assembly.LoadFrom(String assemblyFile) 
    at Microsoft.Tools.WindowsInstallerXml.Build.Tasks.WixToolTask.ExecuteToolThread(Object parameters) 

我有维克斯3.6构建服务器上安装并运行TFS建立帐户的域管理员组中列出。

+0

你确认 “C:\ Program Files文件(x86)的\ WiX的工具集3.6版\ BIN \ Heat.exe” 的存在? – 2013-02-26 16:33:41

+0

是的,它确实存在。 – Cookie 2013-02-26 19:17:21

+0

尝试[启用程序集绑定日志记录](http://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx),看它是否能告诉你哪个程序集是最终原因以及原因。 – shambulator 2013-02-26 19:48:40

其实这个问题是所有与建筑mismatch做。其中一个项目只能在x86中编译,因此必须将buildserver更改为使用x86。

编辑生成,过程,MSBuildPlatform X86

+1

“试图加载格式不正确的程序。”是平台不一致的红旗。 – 2013-05-28 09:22:14

+0

非常感谢!完全为我节省了大量时间,试图挖掘其他依赖性问题。 – SteckDEV 2016-03-22 15:59:00

尝试在双引号包裹你的命令

"C:\Program Files (x86)\WiX Toolset v3.6\bin\Heat.exe" 

MS建立可以与具有中有空格的路径问题。

+0

多数民众赞成无用,我正在使用http://www.chrissurfleet.co.uk/post/2011/06/30/simplify-deployment-with-visual-studio-and-wix.aspx请注意,加热的呼叫是使用建立行动,所以我不能引用它。 – Cookie 2013-02-26 19:21:33

+0

好主意,凯尔,虽然在这种情况下错误消息确实似乎在寻找正确的exe路径,只是不能加载它。感觉像缺失的依赖项... – 2013-02-26 19:22:36