2

我的项目,以前用 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 个值被丢弃了,但最后一个值仍然存在。

4

7 回答 7

2

我们在从 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# 库引用来解决此问题。

于 2010-08-31T03:13:35.577 回答
2

在受影响的 WiX 项目中重新添加所有引用也解决了这个问题。除其他外,该物业

<DoNotHarvest>True</DoNotHarvest> 

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

于 2011-01-12T09:34:52.787 回答
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">
于 2011-11-16T12:43:55.060 回答
2

我从命令行运行热量。所以上面提到的事情根本没有帮助我。最初我的配置看起来像:

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

这产生了以下错误:heat.exe:错误 HEAT5302:未指定项目输出组。

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

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

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

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

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

于 2013-01-02T20:37:22.057 回答
1

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

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

于 2010-08-30T19:27:25.657 回答
1

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

于 2011-04-26T11:41:58.270 回答
0

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

于 2010-07-11T14:36:32.193 回答