我正在尝试从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
答案 0 :(得分:1)
Windows Vista及更高版本中的服务在单独的桌面上运行,因此无法访问stdin
,stdout
和stderr
。 (服务无法再与桌面交互;您会注意到控制面板中的服务小程序缺少该选项。)
编辑:在下面的评论之后......服务IMO是错误的解决方案。有一些持续集成产品可以为您管理,例如Hudson或CruiseControl;我相信还有很多其他人。有关详细信息,另请参阅维基百科上的Continuous Integration。
答案 1 :(得分:0)
我的解决方案是不要调用vcvarsall.bat。相反,我直接从它在windows目录中的位置召唤msbuild。所以我在没有真正了解解决方案的情况下解决了这个问题。