【问题标题】:Error when execute within a TFS build definition在 TFS 构建定义中执行时出错
【发布时间】:2013-12-27 15:49:46
【问题描述】:

当我尝试调用命令行来获取我的 TFS 映射文件夹的最新更新时

TF get /recursive

从 Windows 7 的run 窗口成功完成调用。

但是,当我将调用放入 .bat 文件并在构建定义中通过 InvokeProcess 运行它时(guide 这样做),它失败了。

消息如下。

无法确定工作区。您可以通过以下方式更正此问题 运行 'tf 工作区 /collection:TeamProjectCollectionUrl'

会发生什么?我该如何解决这个问题?

【问题讨论】:

  • 您是否将 InvokeProcess 活动的工作目录设置为构建定义的 Sources 目录?哪个版本的 TFS?
  • 不,我没有指定工作目录。我在批处理脚本中调用CD /D。我会尝试设置工作文件夹。 TFS 版本是 2012
  • 在 InvokeProcess 活动的属性中设置Working Directory 但错误保持不变。
  • 是否设置了其他变量(参数)?
  • cd /d 到哪里去了?您能否确认正在执行构建的用户已为该目录配置了工作区?

标签: batch-file command-line tfs tfsbuild build-definition


【解决方案1】:

发生这种情况的原因是当您在本地运行命令时,您正在下载的文件夹被映射到工作区。当您在构建中执行命令时,它会在构建服务帐户下运行,没有为您指定的文件夹映射工作区。

您不需要在构建过程中使用tf get 命令。配置构建时,您可以在“源设置”选项卡上指定应在工作区中映射哪些文件夹。构建过程将确保您在工作区中映射的文件夹的内容自动出现。

【讨论】:

    【解决方案2】:

    我的问题的原因是构建代理在不同的 Windows 帐户下执行我的 .bat 文件,例如 NTSERVICE;当我直接运行它时,使用了我的 TFS 登录帐户(以前在 Windows 7 凭据管理器中记住了)

    所以解决方法是输入登录名和密码为TF get /login:SomeTFSUsername,SomePassword(查看更多here

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 1970-01-01
      • 2015-06-08
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多