答案 0 :(得分:17)
它是一个bug,一个bug,一个bug。 Dunno谁负责,但这是一个工作脏肮脏的黑客:
答案 1 :(得分:4)
在Rob Mensching编辑我原来的帖子之后,最近确实已经在WiX 3.6.0917.0中修复了这个问题。
答案 2 :(得分:3)
我在本地和TFS版本中看到了这个问题(wix 3.7没有找到依赖项目输出)(对于VS2010和VS2012)。
我终于通过将msbuild属性/m:1
设置为仅使用单个构建过程来解决它。我设置/m
以允许msbuild确定它可以用来同时构建的进程数。
答案 3 :(得分:1)
TFS使用一组属性来控制要构建的解决方案和配置的名称(迭代)。对于解决方案和配置的每个组合,它然后使用项目依赖性/构建顺序来控制构建的项目的顺序。您的EXE / DLL可能是AnyCPU,并且您的WiX是x86,虽然WiX依赖于EXE / DLL,但是在您的AnyCPU之前构建了x86。或者他们甚至可能处于不同的解决方案中,所以在不查看源代码的情况下很难分辨,但这基本上就是它的工作方式。
答案 4 :(得分:1)
我们做的是先report the bug to wix,然后我们找到了你的问题。
我们通过说默认情况下wix项目将构建引用来解决我们这方面的问题。我们通过在设置路径的项目中设置<BuildProjectReferences>True</BuildProjectReferences>
来更新文件C:\ Program Files \ MSBuild \ Microsoft \ WiX \ v3.5 \ wix2010.targets。所以,是的,我们已经手动完成了这项工作;我们已经报告了这个错误以及我们的修复。
答案 5 :(得分:0)
我今天遇到了同样的问题并找到了这样的解决方案:
在记事本上打开解决方案文件,找到您的安装项目并更改postProject设置。这将告诉msbuild这个项目应该等待另一个项目来构建。我不知道为什么,但默认情况下没有添加。
Project("{GUID}") = "MyInstaller", "MyInstallerPath", "{Installer Project GUID}"
ProjectSection(ProjectDependencies) = postProject
{Prebuild Project GUID} = {Prebuild Project GUID}
EndProjectSection
EndProject
'Prebuild Project GUID'是您要安装的项目右侧的数字。