0

我有一个必须构建为 32 位的程序。它附带一个 x64 应用程序。结果,有一个安装程序有点麻烦。

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

我试图强制Platform成为x86Win32通过明确设置它:

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

但似乎wixproj在构建时传递给“wins”的命令行开关。

无论命令行上指定了什么,项目文件是否Platform可以强制执行?Win32

(因为csproj我能够做到这一点:

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

但这似乎对 C++ 没有任何影响)

4

1 回答 1

3

终于想通了。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>
于 2014-01-21T17:38:04.800 回答