Как использовать определенный Windows SDK с MSBuild? - PullRequest
5 голосов
/ 10 июня 2010

У меня есть большой проект, состоящий из многих проектов C ++ и C #, и сценарий MSBuild (3.5) для создания всего этого. Этот сценарий основан на задачах VCBuild (проекты C ++) и MSBuild (проекты C #). Он регулярно выполняется сервером непрерывной интеграции .

Я хочу иметь возможность выбрать определенный Windows SDK (v6.0A, v7.0, v7.1 ...), который будет использоваться для компиляции. Поскольку в моем хранилище много веток, которым в конечном итоге потребуется другая версия SDK, мне нужен способ выбрать правильную ветвь перед каждой компиляцией.

На моем компьютере я смог настроить пакетный скрипт, который вызывает правильный SetEnv.cmd перед запуском скрипта MSBuild. Но это решение нельзя использовать на сервере CI, так как сценарий MSBuild выполняется напрямую.

Знаете ли вы о способе достижения эквивалента SetEnv.cmd в MSBuild?

Ответы [ 2 ]

1 голос
/ 10 июня 2010

Вы можете создать пользовательскую задачу MSBuild, которая использует Environment.SetEnvironmentVariable для установки соответствующих значений переменных среды в зависимости от указанной версии SDK платформы.Проверьте vcvars32.bat (или vcvars64.bat в зависимости от вашей целевой конфигурации), чтобы увидеть, какие переменные среды необходимо установить.

0 голосов
/ 14 июня 2010

В итоге я создал пользовательскую задачу MSBuild, в которой в качестве параметра было бы указано имя пакетного файла, и выполнил следующую командную строку (в качестве параметра batch.cmd):

cmd.exe /E:ON /V:ON /S /C "batch.cmd > nul && SET"

Затем анализируетсяи я устанавливаю переменные среды соответственно для текущего процесса.

Таким образом, я могу выполнить SetEnv.cmd и получить правильные переменные среды в процессе MSBuild.

...