【问题标题】:WiX Fails on Build ServerWiX 在构建服务器上失败
【发布时间】:2013-02-27 16:43:15
【问题描述】:

我有一个使用 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)

我在构建服务器上安装了 Wix 3.6,并且运行 tfs build 的帐户列在域管理员组中。

【问题讨论】:

  • 您确认“C:\Program Files (x86)\WiX Toolset v3.6\bin\Heat.exe”存在吗?
  • 试试enabling assembly bind logging,看看它是否能告诉你哪个程序集是最终原因以及原因。
  • 做到了,并意识到当我需要 x86 时,msbuild 以 x64 运行!

标签: wix


【解决方案1】:

实际上,问题完全与架构不匹配有关。其中一个项目只能在 x86 中编译,因此必须更改构建服务器以使用 x86。

编辑构建、流程、MSBuildPlatform X86

【讨论】:

  • "试图加载格式不正确的程序。"是平台不一致的危险信号。
  • 非常感谢!完全节省了我很多时间尝试挖掘其他依赖问题。
【解决方案2】:

尝试用双引号将您的命令括起来

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

MS 版本中包含空格的路径可能会出现问题。

【讨论】:

  • 没用 我正在使用chrissurfleet.co.uk/post/2011/06/30/… 请注意,对 heat 的调用正在使用构建操作,所以我不能在它周围加上引号。
  • 好主意,Kyle,虽然在这种情况下,错误消息似乎在寻找正确的 exe 路径,但无法加载它。感觉像是缺少依赖...
猜你喜欢
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2021-10-25
  • 2021-03-28
  • 1970-01-01
相关资源
最近更新 更多