我有一套构建完整.NET Any CPU应用程序的解决方案。我有一个WiX项目,将该应用程序部署为x86,我可以在Visual Studio 2013中手动运行,没有任何问题。现在我试图在MSBuild / TFS中使用它。冲突是我需要为代码指定Any CPU,为WiX指定x86。我最初的想法是将WiX解决方案/项目破解为名义上的任何CPU,但让它实际上制作x86 MSI。但是wixproj设置不允许使用任何CPU。我期望任何CPU和64位安装程序都存在相同的问题。 WiX似乎决定不允许任何CPU。
我在这里看到的其余选项是不使用MSBuild构建WiX部件,而是在后期构建批处理文件中处理它。但是,您似乎应该能够使用WiX部署任何CPU代码。
答案 0 :(得分:2)
似乎WiX项目使用平台配置来确定他们正在构建的模式,因此他们只允许x86或x64平台配置。因此,无法在“任何CPU”中构建WiX项目。平台配置,因为该平台不存在。
使用32位(或64位)构建WiX项目的最简单方法是设置一个包含.NET项目和WiX项目的解决方案,如下图所示。第一个矩形中的项目是C#项目,第二个矩形中包含WiX项目。
然后使用.NET项目为此解决方案设置一个或多个解决方案配置为'任何CPU'和WiX项目为x86(或64位安装程序的x64)。例如:
如果您想同时拥有32位和64位安装程序,那么我建议您制作x86解决方案配置和x64解决方案配置。将您的.NET项目设置为在任何CPU'配置或相应的位数(x86或x64)并将WiX项目设置为以正确的位数构建(32位安装程序为x86,64位安装程序为x64)。
请注意,在任何一种情况下,您都需要确保安装程序项目从编译器放置它们的位置选择二进制文件。
然后设置TFS构建定义以使用您创建的解决方案配置构建此解决方案。如下图所示
然后,TFS将使用正确的解决方案配置构建您的解决方案,该解决方案配置应该以各自正确的配置构建您的.NET项目和WiX项目。
答案 1 :(得分:0)
告诉它构建任何CPU和x86平台,它将根据需要构建或跳过项目。它应该工作得很好。您将在构建日志中看到类似平台无效跳过的消息,如果您不希望在每个解决方案中创建缺少的平台并将项目配置为不为其构建。
答案 2 :(得分:0)
您可以使用额外的MSBuild步骤创建自定义xaml构建模板,以在主构建之后构建您的安装项目。我在三个不同的MSBuild构建步骤中使用了这种技术:
在其他MSBuild步骤中,您可以对解决方案名称进行硬编码,如果您只构建一个产品,这可能是合适的。如果您想要更多灵活性,可以重新安排构建过程参数并将它们提供给MSBuild步骤。团队构建流程编辑器将自动获取新的流程参数布局:
有关自定义构建模板的一般指南,请参阅https://msdn.microsoft.com/en-us/library/dd647551.aspx。与早期版本相比,TFS Build 2013中的构建模板更易于遵循和修改。