Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Msbuild 如何使用WiX 3.5.1811.0修复HEAT5301错误_Msbuild_Wix_Wix3.5_Heat - Fatal编程技术网

Msbuild 如何使用WiX 3.5.1811.0修复HEAT5301错误

Msbuild 如何使用WiX 3.5.1811.0修复HEAT5301错误,msbuild,wix,wix3.5,heat,Msbuild,Wix,Wix3.5,Heat,我的项目过去用WIX3.0构建得很好,现在用WIX3.0失败了 heat.exe:错误HEAT5301:无效的项目输出组:二进制文件3BSOURCES3BSETLETIES%3bDocuments 我在wix.targets文件中找到了这个ProjectOutputGroup,但它看起来像这样: <CreateItem Include="@(_MSBuildProjectReferenceExistent)" Condition=" '%(_MSBuildProjectRefe

我的项目过去用WIX3.0构建得很好,现在用WIX3.0失败了

heat.exe:错误HEAT5301:无效的项目输出组:二进制文件3BSOURCES3BSETLETIES%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>


看起来前两个值的
%
已被丢弃,但最后一个值仍然存在。

首先尝试升级到最新版本。WiX v3.5正在开发中,因此问题可能已经解决。如果没有,请确保该问题存在漏洞,以便社区了解该问题。最后,您可以试着调试HeatTask,看看它出了什么问题。

这对我来说不起作用,相反,我不得不编辑wix.targets文件以删除用于收获的额外目录。。。幸运的是,我目前没有使用热量。在我做了那个更改之后,我能够在我们的构建服务器上再次构建


有趣的是,这并没有影响在桌面计算机上从Visual Studio内部进行构建。

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

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

DoNotHarvest没有为我们解决这个问题


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

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

<DoNotHarvest>True</DoNotHarvest> 
True

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

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

将toolsversion设置为4.0对我有效:

更改:

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

致:


我正在从命令行运行heat。所以上面提到的事情对我一点帮助都没有。最初,我的配置如下所示:

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"
顺便说一句:我正在运行WIX3.7版本。用于VS 2010.NET4.0项目

以防您需要3.x的开关命令的参考:


最新的每周版本仍然存在问题。我正在做什么导致这个错误?“HarvestProjects”可以被禁用吗?看起来它失败的目标已经“解决”了这个问题,方法是在我的构建脚本中为我的自定义操作项目引用添加一个True。谢谢,您让我看到了正确的方向,尽管我仍然不知道是什么导致了错误。在我们的TFS服务器上从2008年升级到2010年的MSBuild工具之后,这也对我有效。
heat.exe project "project.csproj" -cg Portals.Vendor -gg -pog Binaries -pog Content –configuration "release" -platform "AnyCPU" –out "C:\OutPutLocation.wxs"