TFS 生成定义 Post 执行脚本时部署脚本错误

TFS Build Definition Post Deployment Scripts Error When Executing Scripts

我有一个使用默认模板的 TFS 构建定义。构建自行完成,但是当我包含 post 部署脚本时,出现以下错误。

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 脚本,包含在我尝试构建的解决方案中,它只调用写主机消息。 (此时用于测试)

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

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

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

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

检查构建定义中的 "Source Settings"。

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

最新版本的 TFS 中显然存在一个错误,导致了这个令人毛骨悚然的问题。所有关于在 Powershell/Cmd 的起始目录中设置 %WINDIR% 的东西都不起作用,但是这个确实起作用了。