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%
的东西都不起作用,但是这个确实起作用了。
我有一个使用默认模板的 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%
的东西都不起作用,但是这个确实起作用了。