У меня есть программа, которая должна быть 32-битной. Он поставляется с приложением x64. В результате есть установщик, который получает битность.
Установщик построен с wixproj
который должен быть построен с /p:Platform=x64
— но vcxproj
нужно построить как x86.
Я пытался заставить Platform
быть x86
или же Win32
установив это явно:
<PropertyGroup>
<Platform>Win32</Platform>
</PropertyGroup>
но похоже, что переключатель командной строки, который был передан в wixproj
«выигрывает» при строительстве.
Есть ли способ, которым файл проекта может заставить Platform
быть Win32
независимо от того, что указано в командной строке?
(за 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>
Других решений пока нет …