我如何强制MSBuild中的C 平台

How can I force the C++ platform in MSBuild?

本文关键字:平台 中的 MSBuild 何强制      更新时间:2023-10-16

我有一个程序,必须构建为32位。它通过X64应用程序发货。结果,有一个安装程序会有一点。

安装程序是用wixproj构建的,必须使用/p:Platform=x64构建,但是vcxproj需要以X86的形式构建。

我尝试通过明确设置Platform为CC_4或Win32

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

,但看来构建时传递给wixproj" wins"的命令行开关。

是否有某种方法可以使项目文件强制PlatformWin32,无论命令行中指定了什么?

(对于csproj,我能够做到这一点:

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

,但这对C 没有任何影响)

最终发现了这一点。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>