以编程方式编写 TFS 命令行以获取最新版本、签出和签入
Posted
技术标签:
【中文标题】以编程方式编写 TFS 命令行以获取最新版本、签出和签入【英文标题】:Scripting TFS Command Line for Get Latest Version, Check Out and Check in, programmatically 【发布时间】:2011-04-15 08:05:49 【问题描述】:我使用 WinXP、VS 2008 和 Team Explorer 连接到 Team Foundation Server。
我需要编写以下脚本(例如 BAT 文件脚本):
在团队项目中获取最新版本的文件夹。 签出团队项目中文件夹的文件。 签入团队项目中文件夹的文件。我的 TFSProject 是$/Arquitectura/Main/
,映射到路径C:\TFS\Arquitectura
有人有任何示例代码或建议吗?
【问题讨论】:
【参考方案1】:在命令行中使用 tf.exe。
在以下示例中,%PathToIde%
通常位于如下路径:%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE
,或在 Windows x64 上:%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE
(取决于 Visual Studio 版本和安装设置)。
获取示例:
cd C:\TFS\Arquitectura
"%PathToIde%\TF.exe" get $/Arquitectura/Main /recursive
结帐示例:
cd C:\TFS\Arquitectura
"%PathToIde%\TF.exe" checkout $/Arquitectura/Main /recursive
签到示例:
cd C:\TFS\Arquitectura
"%PathToIde%\TF.exe" checkin $/Arquitectura/Main /recursive
有关tf commandline的更多信息,请参阅。
【讨论】:
"%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" 在 Win x64 上为 VS 2010 获取 $/Project /recursive。感谢您的意见,非常有用! "%VS120COMNTOOLS%..\IDE\TF.exe" get $/PROJECT_NAME /recursive for VS2013 抱歉挖掘了这篇旧帖子,但我有一个问题:使用不同的本地 TFS 工作区时,我在哪里指定要使用的工作区?还是当前工作目录暗示了这一点?【参考方案2】:VS2017 更新
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe'
【讨论】:
评论胜于回答。 感谢专业的“C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe”【参考方案3】:"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\tf.exe" 获取 "$/ProjectName/Main" /force /recursive
【讨论】:
@Neolisk 为什么建议在这种标准情况下使用/force
?【参考方案4】:
获取 Windows 7 64 位的最新代码
"%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" get /recursive
这对我有用。
【讨论】:
【参考方案5】:Visual Studio 2022 更新
创建一个批处理文件以从 TFS 获取最新版本。
以.bat
扩展名保存此文件
TakeLatest.bat
@echo off
title Project Builder
echo Taking Latest of All Projects which are listed here
cd /d %~dp0
call "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe" get /recursive
pause
注意:cd /d
是您的项目文件夹位置驱动器
适用于 Visual Studio 2019
用这一行更新成批处理文件,
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe" get /recursive
【讨论】:
【参考方案6】:我在 Windows 10 64 位的 Powershell 中尝试了以下代码,它对我有用:
cd C:\MyWorkspace & "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TF.exe" 获取 $/TFSFolderPath /recursive
请注意,第二行以与号 (&) 开头,没有它我的代码将无法工作,但不知道它的原因。
【讨论】:
Found explanation for the & Call operator。用引号将命令括起来会使 PowerShell 将其视为字符串,因此除了引号之外,使用 & 调用运算符强制 PowerShell 将字符串视为要执行的命令。以上是关于以编程方式编写 TFS 命令行以获取最新版本、签出和签入的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio SCC API - 以编程方式签出文件