Узнайте "битность" текущей ОС в MSBuild - PullRequest
6 голосов
/ 17 августа 2010

У меня есть скрипт сборки, который должен жестко прописать путь к исполняемому файлу. Путь:

  • C: \ Program Files \ Microsoft Visual Studio 9.0 \ SmartDevices \ SDK \ SDKTools \ cabwiz.exe

Это сработало нормально, но теперь я работаю на 64-битной ОС (но мой коллега и сервер сборки все еще работают на 32-битной версии).

Мне нужен путь, чтобы быть таким для меня:

  • C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ SmartDevices \ SDK \ SDKTools \ cabwiz.exe

Но используйте обычный путь для других.

Вот как я это настроил:

<PropertyGroup>
    <CabWiz>"C:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe"</CabWiz>
</PropertyGroup>

Есть ли условие, которое я могу поставить, чтобы установить его, если ОС (не текущая конфигурация сборки) является 64-битной?

Ответы [ 4 ]

7 голосов
/ 03 декабря 2010

Существует раздел реестра, который расскажет вам о разрядности текущей ОС.Вот свойства, которые я использую в своих файлах MSBuild:

<PropertyGroup>
        <MachineProcessorArchitecture>$(registry:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment@PROCESSOR_ARCHITECTURE)</MachineProcessorArchitecture>
        <Is32Bit>False</Is32Bit>
        <Is32Bit Condition="'$(MachineProcessorArchitecture)' == 'x86'">True</Is32Bit>
        <Is64Bit>False</Is64Bit>
        <Is64Bit Condition="'$(MachineProcessorArchitecture)' == 'AMD64'">True</Is64Bit>
</PropertyGroup>
3 голосов
/ 07 декабря 2010

Вы используете битность, чтобы попытаться угадать правильную папку Program Files, но нет гарантии, что она находится на диске C или даже называется "Program Files".Вам лучше использовать свойство $(MSBuildProgramFiles32) (в MSBuild 4.0).

3 голосов
/ 17 августа 2010

В 64-битной ОС определены следующие переменные:

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)

Так что просто проверьте на ProgramFiles(x86) и, если он пуст, используйте ProgramFiles.

1 голос
/ 17 августа 2010

Если вы всегда используете 32-битную версию MSBuild, независимо от платформы, то это легко: просто замените «$ (ProgramFiles)» на «C: \ Program Files».В 32-разрядной или 64-разрядной ОС «$ (ProgramFiles)» должно указывать правильное расположение папки (расположение всех 32-разрядных программ).

Если вы используете 64-битовая версия MSBuild на 64-битных платформах (что маловероятно), тогда она становится немного сложнее.Может показаться, что вам нужна переменная окружения '% ProgramFiles (x86)%', но удачи вам в этих скобках.Возможно, проще было бы использовать переменную окружения '% PROCESSOR_ARCHITECTURE%' в условии.

...