执行脚本时发生TFS构建定义发布后脚本错误

问题描述:

我有一个使用默认模板的TFS构建定义。构建完成后自行完成,但是当我包含后期部署脚本时,出现以下错误。执行脚本时发生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脚本,包含在我试图构建的解决方案中,它只调用写主机消息。 (此时用于测试)

构建定义具有仅在解决方案,后构建参数和后构建脚本路径更改时选择的所有缺省值。该脚本被检入到解决方案中的源代码控制中。

这是一个POC环境,因此我将所有东西安装在一台服务器上,因此TFS服务器和生成代理位于同一台计算机上。

我已经尝试了几种解决方法,但没有一个似乎是植根于此特定错误。任何帮助非常感谢,谢谢。

+2

构建过程模板的Process选项卡是什么样的?你是否指定了脚本的**源代码控制**路径? – 2015-04-03 19:57:01

+0

如果您已正确映射源控制路径,是否将它包含在源映射中以确保文件已下载到构建服务器? – 2015-04-05 05:49:26

+0

感谢您的回复@DanielMann。 在ProcessTab中我有默认模板(TfvcTemplate.12.xaml)2 Build - > 5.Advanced - > Post Build Script Arguments:-verbose Post Build Script Path:$/TeamProject/Dev/Solution/DeploymentScripts /PostBuildDeployment.ps1 在源设置选项卡: 来源控制:$/TeamProject /开发/解决方案/ DeploymentScripts/PostBuildDeployment.ps1 生成代理:C:\项目\开发\解决方案\ DeploymentScripts/PostBuildDeployment.ps1 源代码控制:$/TeamProject/Dev/Solution 构建代理:C:\ Projects \ Dev \ Solution – 2015-04-06 14:42:37

(从别人谁最近就遇到这个问题自己即将)

检查“源设置”,在构建定义。

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

TFS的最新版本显然存在一个错误,导致这个头发拉动问题。所有关于在Powershell/Cmd等的开始目录中设置%WINDIR%的东西都不起作用,但是这样做。

+0

修复了我的问题! – 2015-11-30 18:14:32