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

3

我有一个使用默认模板的TFS生成定义。生成本身可以完成,但是当我包含一个后部署脚本时,我收到以下错误。

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脚本,包含在我试图构建的解决方案中,它只调用write-host消息(目前仅用于测试)。
构建定义选择了所有默认值,只更改了解决方案、后期构建参数和后期构建脚本路径。该脚本已经在解决方案的源代码控制中进行了检查。
这是一个POC环境,因此我将所有内容都安装在同一台服务器上,因此TFS服务器和构建代理位于同一台机器上。
我尝试了几种解决方法,但似乎没有一种是针对这个特定错误的。非常感谢您的帮助,谢谢。

2
构建过程模板的“进程”选项卡是什么样子的?您是否指定了脚本的源代码控制路径? - Daniel Mann
如果您已正确映射源代码控制路径,您是否已将其包含在源映射中以确保文件下载到构建服务器? - Wouter de Kort
感谢@DanielMann的回复。在ProcessTab中,我在默认模板(TfvcTemplate.12.xaml)下有2个Build->5.Advanced-> Post Build Script Arguments:-verbose Post Build Script Path:$/TeamProject/Dev/Solution/DeploymentScripts/PostBuildDeployment.ps1在Source Settings选项卡中: 源控制:$/TeamProject/Dev/Solution/DeploymentScripts/PostBuildDeployment.ps1 构建代理:C:\Projects\Dev\Solution\DeploymentScripts/PostBuildDeployment.ps1 源控制:$/TeamProject/Dev/Solution 构建代理:C:\Projects\Dev\Solution - Karl Schwirz
@WouterKort,关于源映射,请参考我的先前评论,我已经看到它下载到了构建目录中。 - Karl Schwirz
1个回答

2

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

检查您在构建定义中的“源设置”。

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

显然,在最新版本的TFS中存在一个导致该问题的错误。所有有关在Powershell/Cmd等中为Start-in目录设置%WINDIR%的内容都无效,但是这个方法有效。


问题也被我解决了!! - Nicolas Boisvert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接