Как мне указать платформу для MSBuild? - PullRequest
130 голосов
/ 01 июля 2010

Я пытаюсь использовать MSBuild для создания решения с указанной целевой платформой (мне нужны оба бинарных файла, x86 и x64). Вот как я это попробовал:

C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86"

Однако сборка всегда завершается ошибкой, если платформа отличается от «Любой процессор». Что я делаю не так?

Это время вывода MSBuild:

C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5> MSBuild SolutionPath \ Solution.sln / t: перестроить / Р: Конфигурация = релиз / p: платформа = "x86" сборка Microsoft (R) Версия двигателя 3.5.30729.1 [Microsoft .NET Framework, версия 2.0.50727.3082] Copyright (C) Microsoft Corporation 2007. Все права зарезервирован.

Сборка началась 1.7.2010 8:28:10. Проект "SolutionPath \ Solution.sln" в узел 0 (восстановить цель t (s)). SolutionPath \ Solution.sln: ошибка MSB4126: указанное решение Конфигурация "Release | x86" есть недействительным. Пожалуйста, укажите действительный Конфигурация решения с использованием Свойства конфигурации и платформы (например, MSBuild.exe Solution.sln / Р: Конфигурация = отладки / p: платформа = "Любой процессор") или оставить те пустые свойства для использования по умолчанию Конфигурация решения. Готово Строительство Проект "SolutionPath \ Solution.sln" (Восстановить объект (ы)) - СБОЙ.

Сборка НЕ ​​удалась.

"SolutionPath \ Solution.sln" (перестроить цель) (1) -> (Цель ValidateSolutionConfiguration) -> SolutionPath \ Solution.sln: ошибка MSB4126: указанное решение Конфигурация "Release | x86" есть недействительным. Пожалуйста, укажите действительный Конфигурация решения с использованием Свойства конфигурации и платформы (например, MSBuild.ex e Solution.sln / Р: Конфигурация = отладки / p: платформа = "Любой процессор") или оставить те пустые поля для использования по умолчанию конфигурация решения.

0 Warning(s)
1 Error(s)

прошедшее время 00: 00: 00.03

Если я пытаюсь собрать его для x86 / x64 с помощью devenv, он работает отлично, однако я пытаюсь настроить сервер сборки без установки всех необходимых версий Visual Studio. Кстати, если есть лучший бесплатный инструмент (который поддерживает .NET Framework 4), я бы хотел услышать об этом.

Ответы [ 3 ]

166 голосов
/ 28 марта 2015

В MSBuild или Teamcity используйте командную строку

MSBuild yourproject.sln /property:Configuration=Release /property:Platform=x64

или используйте более короткую форму:

MSBuild yourproject.sln /p:Configuration=Release /p:Platform=x64

Однако вам все равно нужно настроить платформу в своем проекте, см. Ответ ЖюльенаHoarau.

98 голосов
/ 01 июля 2010

Если вы хотите создать решение для x86 и x64 , ваше решение должно быть настроено для обеих платформ.На самом деле у вас просто есть конфигурация Any CPU .

Как проверить доступную конфигурацию для проекта

Чтобы проверить доступную конфигурацию для данного проекта, откройте файл проекта(*.csproj например) и найдите PropertyGroup с правым Condition.

Если вы хотите встроить режим Release для x86, у вас должно быть что-то подобное в вашемфайл проекта:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
  ...
</PropertyGroup>

Как создавать и редактировать конфигурацию в Visual Studio

Панель диспетчера конфигурации http://i.msdn.microsoft.com/Cc563937.11a492fe-e240-4cdd-9b53-b6aae7224b09(en-us,office.12).jpg

Кнопка платформы нового решения http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_15.png

Панель платформы нового решения http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_18.png

Как создавать и редактировать конфигурацию (в MSDN)

13 голосов
/ 10 марта 2014

Если вы пытаетесь сделать это из командной строки, вы можете столкнуться с проблемой, когда переменная среды платформы «Платформа» устанавливается для вас и работает против вас. Я могу воспроизвести это, если я использую командное окно VS2012 вместо обычного командного окна Windows.

В командной строке введите:

установка платформы

В окне команд VS2012 у меня есть предустановленное значение «X64». Кажется, это мешает тому, что находится в моем файле решения.

В обычном командном окне команда 'set' приводит к сообщению "переменная не определена" ... что хорошо.

Если результат выполнения вышеприведенной команды 'set' не возвращает значения переменной окружения, вам стоит поработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...