Как я могу запустить msbuild из службы Windows? - PullRequest
1 голос
/ 07 октября 2011

Я пытаюсь запустить этот пакетный файл из службы Windows (работающей как мой собственный пользователь), а msbuild не работает. Запуск его напрямую, однако, работает. Я получаю пакет "Дескриптор недействителен" на stderr от я предполагаю vcvarsall.bat.

rem Load compilation environment
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
rem Load the All Solutions.sln program
msbuild "C:\AutoBuildCheckout\Other Projects\All Projects\All Projects.sln"
pause

Я в замешательстве. У кого-нибудь есть предложения?

-Isaac

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Службы в Windows Vista и выше работают на отдельном рабочем столе и поэтому не имеют доступа к stdin, stdout и stderr. (Службы больше не могут «взаимодействовать с рабочим столом»; вы заметите, что этот параметр отсутствует в апплете служб на панели управления.)

РЕДАКТИРОВАТЬ: После комментариев ниже ... Служба IMO является неправильным решением. Существуют продукты непрерывной интеграции, которые управляют этим для вас, например Hudson или CruiseControl ; Я уверен, что есть много других. См. Также Непрерывная интеграция в Википедии для получения дополнительной информации.

0 голосов
/ 07 октября 2011

Моим решением было просто не вызывать vcvarsall.bat. Вместо этого я напрямую вызываю msbuild из того места, где он находится в каталоге Windows. Так что я обошел проблему, не зная решения.

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