执行脚本时TFS构建定义后部署脚本错误

时间:2015-04-03 18:18:43

标签: powershell tfs msbuild

我使用默认模板进行TFS Build定义。构建完成后,但当我包含一个部署后脚本时,我收到以下错误。

Exception Message: The directory name is invalid (type Win32Exception)
Exception Stack Trace: 
Server stack trace: 
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo     startInfo)
   at     Microsoft.TeamFoundation.Build.Workflow.Activities.InvokeProcess.ProcessWrapper.    Start()
   at     Microsoft.TeamFoundation.Build.Workflow.Activities.InvokeProcess.InvokeProcessIn    ternal.RunCommand(AsyncState state)
   at     System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr     md, Object[] args, Object server, Object[]& outArgs)
   at     System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage     msg, IMessageSink replySink)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message     reqMsg, Boolean bProxyCase)
   at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed,     MessageData& msgData)
   at System.Func`2.EndInvoke(IAsyncResult result)
   at System.Activities.AsyncCodeActivity`1.System.Activities.IAsyncCodeActivity.FinishExecution(AsyncCodeActivityContext context, IAsyncResult result)
   at System.Activities.AsyncCodeActivity.CompleteAsyncCodeActivityData.CompleteAsyncC    odeActivityWorkItem.Execute(ActivityExecutor executor, BookmarkManager     bookmarkManager)

脚本本身是一个powershell脚本,它包含在我正在尝试构建的解决方案中,它只调用写主机消息。 (此时进行测试)

构建定义已选择所有默认值,只有解决方案,后构建参数和后构建脚本路径已更改。该脚本将在解决方案中检入源代码管理。

这是一个POC环境,所以我在一台服务器上安装了所有东西,因此TFS服务器和构建代理位于同一台机器上。

我已经为此尝试了几种解决方法,但它们似乎都没有围绕这个特定的错误。非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

(来自最近遇到此问题的人)

检查您的"来源设置"在构建定义中。

  • 确保您没有隐藏脚本的路径。也就是说,如果您的脚本位于utilities/configuration,请确保您没有隐藏utilities/
  • 您的Build Agent文件夹不应使用$(BuildDir),它应使用$(SourceDir)。请记住,这可能会改变脚本中的某些路径。

最新版本的TFS中显然存在一个导致这种拉毛问题的错误。关于在Powershell / Cmd等的Start-in目录中设置%WINDIR%的所有内容都没有用,但确实如此。