如何从Windows服务运行msbuild?

时间:2011-10-06 22:36:52

标签: msbuild windows-services

我正在尝试从Windows服务(作为我自己的用户运行)运行此批处理文件,并且msbuild不起作用。然而,直接运行它,工作。我假设vcvarsall.bat,我在stderr上得到了“句柄无效”的内容。

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 个答案:

答案 0 :(得分:1)

Windows Vista及更高版本中的服务在单独的桌面上运行,因此无法访问stdinstdoutstderr。 (服务无法再与桌面交互;您会注意到控制面板中的服务小程序缺少该选项。)

编辑:在下面的评论之后......服务IMO是错误的解决方案。有一些持续集成产品可以为您管理,例如HudsonCruiseControl;我相信还有很多其他人。有关详细信息,另请参阅维基百科上的Continuous Integration

答案 1 :(得分:0)

我的解决方案是不要调用vcvarsall.bat。相反,我直接从它在windows目录中的位置召唤msbuild。所以我在没有真正了解解决方案的情况下解决了这个问题。