2014-01-21 35 views
0

我有一个程序,必须建立为32位。它随附一个x64应用程序。因此,有一个安装程序会有点麻烦。如何强制MSBuild中的C++平台?

安装程序使用wixproj构建,必须使用/p:Platform=x64构建 - 但vcxproj需要构建为x86。

我试图迫使Platformx86Win32通过显式地设置:

<PropertyGroup> 
    <Platform>Win32</Platform> 
</PropertyGroup> 

但现在看来,建设时得到了传递给wixproj“赢”的命令行开关。

无论命令行中指定什么,项目文件都可以强制PlatformWin32吗?

(用于csproj我能做到这一点:

<PropertyGroup> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
</PropertyGroup> 

但不会对任何C++的影响似乎)

+0

既然你问我这个假设你不是单独构建它们 - 那么你是如何构建这些项目的?他们是单一解决方案的一部分吗?你使用主构建文件?你可以展示构建它们的msbuild部分吗? – stijn

+0

@stijn:'msbuild foo.wixproj/p:Platform = x64/p:Configuration = Release' –

回答

2

终于想通了这一点。 MSBuild有一个设置TreatAsLocalProperty,允许项目文件覆盖任何变量,该变量进入文件开头的Project节点。

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" 
     ToolsVersion="4.0" 
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 
     TreatAsLocalProperty="Platform"> <!-- !!! --> 
    <PropertyGroup> 
    <Platform>Win32</Platform> 
    </PropertyGroup> 
    <!-- Now Platform is Win32 no matter what! --> 
</Project>