Как указать платформу для MSBuild?



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



C:WINDOWSMicrosoft.NETFrameworkv3.5>MsBuild SolutionPathSolution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86"


однако сборка всегда терпит неудачу, если платформа отличается от "любого процессора". Что я делаю не так?



это время вывода MSBuild печатает:




C:WINDOWSMicrosoft.NETFrameworkv3.5>MsBuild
Путь РешенияРешение.sln/t: перестроить
/п:настройки=релиз
/p: Platform= " x86" Microsoft (R) Build
Версия Двигателя 3.5.30729.1 [Microsoft
.Framework, версии
2.0.50727.3082] Copyright (C) Microsoft Corporation 2007. Все права
зарезервированный.



сборка началась 1.7.2010 8:28: 10.
Проект " Путь РешенияРешение.СЛН" на
узел 0 (Rebuild targe t (s)).
Путь РешенияРешение.СЛН : ошибка
MSB4126: указанный в Sol ution
конфигурация "Release / x86" является
недействительный. Пожалуйста, укажите действительный
решение c onfiguration с помощью
Конфигурация и платформа свойства
(например, MSBuild.решение ехе.ФСЛ
/п:настройки=отладка
/p: Platform= "любой процессор") или оставьте их
участники узнают пустым, чтобы использовать по умолчанию
конфигурация решения. Готовое Здание
Проект " Путь РешенияРешение.ФСЛ"
(Rebuild t arget (s)) -- не удалось.



ошибка сборки.



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



0 Warning(s)
1 Error(s)


Время Истекло 00: 00: 00.03




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

715   3  

3 ответов:

если вы хотите построить решение для x86 и x64 ваше решение должно быть настроено для обеих платформ. На самом деле у вас просто есть любой ЦП конфигурации.

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

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

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

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

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

панель Configuration Manager 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)

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

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

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

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

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

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

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

установить платформу

в командном окне VS2012 у меня есть значение' X64 ' preset. Это, кажется, мешает все, что есть в моем файле решения.

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

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

Comments

    Ничего не найдено.