从Team Foundation Server执行Visual Studio

时间:2014-04-04 14:46:26

标签: tfs msbuild

我正在开发一个项目,用于将大型应用程序(数据库,SSIS包,一些类库,PowerShell脚本)从使用批处理文件构建到TFS构建并可能部署。目前,该过程的工作原理是运行批处理文件,并输入一些输入,这些输入存储为变量(有助于确定启动哪个构建的环境),而不是调用MSBuild,如此

MSBUILD BuildAll.proj /t:Clean,Build,Package /p:Configuration=%CONFIGURATION% /fl /flp:Summary;LogFile=%LOGFILE% /fl1 /flp1:ErrorsOnly;LogFile=%ERRORLOGFILE% /tv:4.0

BuildAll.proj是一个自定义项目文件,用于设置一些变量,但最重要的是(以及失败的部分)执行一个命令来调用Visual Studio来构建解决方案

<Target Name="Build">
    <Exec Condition=" '%(Application.Solution)' != '' " Command='"$(DevEnv10InstallDir)Devenv.com" %(Application.Solution) /Rebuild $(Configuration)' />
</Target>

以下是构建的日志

 Target "Build" in project "C:\Source\MBFinancial\Development\Trunk\Source\BuildAll.proj" (entry point):
 Using "Exec" task from assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
 Task "Exec"
   "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Devenv.com" Application.sln /Rebuild LocalDevelopment

当我查看构建事件时,它只是在那里挂起,并且TFS服务器上的构建文件夹永远不会按预期填充。如果我从TFS服务器运行它,运行作为TFS构建帐户,构建过程运行正常,所以我知道所有正确的安装都在构建服务器上,但是当我通过Visual Studio团队资源管理器执行时,它会挂起。如果需要,我可以提供更多细节。

1 个答案:

答案 0 :(得分:1)

你可以在devenv.exe中添加一个/ out开关(非常确定你也可以到devenv.com),我认为你只看到了teambuild的输出,而不是devenv's,希望能够揭示出什么是什么。 FWIW这是我的执行任务:

<Exec WorkingDirectory="$(MSBuildProjectDirectory)\Xxx" Command='"$(VS2010)"\devenv.exe xxx.sln /REBUILD "$(Configuration)|x86" /OUT $(MakeLog) /LOG C:\tmp\ActivityLog.xml' ContinueOnError="false" />

我无法记住为什么我使用.exe和outfile而不是.com。