【问题标题】:How do I fix a HEAT5301 error with WiX 3.5.1811.0如何使用 WiX 3.5.1811.0 修复 HEAT5301 错误
【发布时间】:2011-03-12 02:41:38
【问题描述】:

我的项目过去使用 WiX 3.0 构建良好,现在失败了

heat.exe:错误 HEAT5301:无效的项目输出组:Binaries3bSources3bSatellites%3bDocuments。

我在 wix.targets 文件中找到了这个 ProjectOutputGroup,但它看起来像这样:

<CreateItem 
  Include="@(_MSBuildProjectReferenceExistent)" 
  Condition=" '%(_MSBuildProjectReferenceExistent.DoNotHarvest)' == '' " 
  AdditionalMetadata="ProjectOutputGroups=Binaries%3BSymbols%3BSources%3BContent%3BSatellites%3BDocuments;GenerateType=payloadgroup;HeatOutput=$(IntermediateOutputPath)_%(_MSBuildProjectReferenceExistent.Filename).wxs">
  <!-- ... -->
</CreateItem>

看起来% 对于前 2 个值被丢弃,但对于最后一个值仍然存在。

【问题讨论】:

    标签: msbuild wix wix3.5 heat


    【解决方案1】:

    我们从 WiX 3.0 升级到 WiX 3.5.x 的一个 WiX 项目(在 Visual Studio 2008 解决方案下)遇到了同样的错误。此外,该问题仅发生在 TFS 2010 构建服务器上。使用 Visual Studio 构建桌面很好。

    我们的 WiX 安装项目与一堆 C# 类库在同一个解决方案中 - 它基本上是一个库安装程序。 WiX 项目具有每个 C# 库的项目参考,我们使用“$(var.MyLibrary1.TargetDir)\MyLibrary.dll”语法来引用我们的 WiX 脚本中的文件。

    DoNotHarvest 没有为我们解决问题。

    我们通过从 WiX 安装项目中删除然后重新添加所有 C# 库引用解决了这个问题。

    【讨论】:

      【解决方案2】:

      将工具版本设置为 4.0 对我有用:

      变化:

      <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      

      收件人:

      <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
      

      【讨论】:

      • 在我们的 TFS 服务器上将 MSBuild 工具从 2008 年升级到 2010 年之后,这也对我有用。
      【解决方案3】:

      在受影响的 WiX 项目中重新添加所有引用可以解决问题,对我来说也是如此。 除其他外,财产

      <DoNotHarvest>True</DoNotHarvest> 
      

      被添加到每个引用中,显然这是解决方案。

      【讨论】:

        【解决方案4】:

        我正在从命令行运行热量。所以上面提到的事情根本没有帮助我。最初我的配置如下:

        heat.exe project "project.csproj" -cg GroupName -gg –out "C:\OutPutLocation.wxs"
        

        这产生了以下错误:heat.exe: error HEAT5302 : No project output group specified。

        我将其更改为添加 -pog 开关,还添加了 -configuration-platform 开关。

        heat.exe project "project.csproj" -cg Portals.Vendor -gg -pog Binaries -pog Content –configuration "release" -platform "AnyCPU" –out "C:\OutPutLocation.wxs"
        

        顺便说一句:我正在为 VS 2010 .NET 4.0 项目运行版本 WIX 3.7.

        以防万一您需要 3.x 的切换命令参考:

        http://wix.sourceforge.net/manual-wix3/heat.htm

        【讨论】:

          【解决方案5】:

          这对我不起作用,相反,我不得不编辑 wix.targets 文件以删除 Harvest 的额外目录...幸运的是,我目前没有使用 HEAT。进行该更改后,我能够在我们的构建服务器上再次构建。

          有趣的是,这不会影响在我们的台式计算机上从 Visual Studio 中进行构建。

          【讨论】:

            【解决方案6】:

            重新添加所有引用并不能自动为我解决问题,但手动将 DoNotHarvest 元素添加到每个项目引用中确实可以。

            【讨论】:

              【解决方案7】:

              首先尝试升级到最新版本。 WiX v3.5 正在开发中,因此问题可能已得到修复。如果没有,请确保该问题存在一个未解决的错误,以便社区了解该问题。最后,您可以尝试调试 HeatTask,看看它哪里出了问题。

              【讨论】:

              • 问题仍然存在于最新的每周构建中。我正在做些什么来导致这个错误?是否可以禁用“HarvestProjects”,这看起来像是它失败的目标
              • 我已经“解决”了这个问题,方法是将 True 添加到我的构建脚本中的自定义操作项目引用中。谢谢,你让我找到了正确的方向,虽然我仍然不知道是什么导致了错误
              猜你喜欢
              • 2019-02-22
              • 2019-10-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-05-29
              • 2019-05-26
              相关资源
              最近更新 更多