在TFS 2010构建工作流模板中创建符号链接

时间:2012-02-09 19:43:59

标签: tfs2010 tfsbuild symlink

场景是我们将文件复制到我们的drop文件夹,但我们还想生成一个“最新”符号链接,指向该构建定义的最新版本。我以前使用删除目录/复制命令创建了“Latest”文件夹,但我不想占用硬盘空间或者在构建执行时添加可能的分钟数。

有没有人知道在TFS2010 / Team Build 2010中构建期间创建符号链接的方法?问题完全在于你必须已经提升/执行作为管理员创建一个符号链接,并且从我所知道的,构建不会以管理员身份升级/作为管理员。我试过运行在本地管理员的用户帐户下构建服务,但仍然无效。

我在下面列出了以下我已经尝试过的方法来实现这一点,但它们都没有奏效:

  • 使用InvokeProcess工作流程活动直接执行各种形式的“cmd.exe / c mklink / d ...”
  • 使用InvokeProcess执行包含mklink命令的批处理脚本。
  • 尝试使用RUNAS [mklink命令](因为提示您手动输入密码而失败)。
  • 尝试在我编写的C#命令行实用程序上使用InvokeProcess活动,该实用程序通过Application Manifest文件中的requiresAdmin选项进行提升。此实用程序不会提示全部提升(UAC)。

如果有人有任何想法或已经这样做过,我会非常感谢所提出的任何建议。

1 个答案:

答案 0 :(得分:0)

Duat Le建议关闭UAC解决了这个问题。

以下是需要采取的措施才能实现这一目标。

  1. 在构建服务器上运行构建服务的帐户需要关闭UAC。
  2. 运行构建服务器的帐户需要是您尝试设置符号链接的服务器上的本地管理员。
  3. 关闭UAC后,我在工作流程中使用了InvokeProcess活动,为其提供以下值:

    • 参数:
      "/c mklink /d ""<symlink name>"" ""<directory for symlink to point to>"""

    • FileName:"cmd.exe"

    • WorkingDirectory:"<some dir>"