寻求从TFS 2012迁移Work Items至Azure DevOps Server 2020的方法与工具
从TFS 2012迁移Work Items到Azure DevOps Server 2020的可行方案
一、官方认可的迁移工具
- Azure DevOps Migration Tools:开源工具,微软官方推荐,支持TFS 2012到Azure DevOps Server 2020的Work Items全量迁移,可保留历史记录、链接、附件等核心数据。只需配置JSON格式的迁移规则,即可自动完成批量迁移,无需手动导出导入。
- TFS Integration Platform:微软早期推出的迁移工具,虽已停止更新,但对TFS 2012兼容性良好,适合简单迁移场景。通过配置XML迁移计划,可实现工作项数据的同步迁移。
二、手动导出Work Items的方法
1. 利用Team Foundation Power Tools (TFPT)
TFS 2012对应的Power Tools提供tfpt workitem命令,可直接将工作项导出为CSV:
tfpt workitem /export /collection:http://tfs2012-server:8080/tfs/CollectionName /query:"你的工作项查询路径" /file:exported-workitems.csv
需先安装TFS 2012 Power Tools,并确保命令行环境能访问该工具。
2. PowerShell脚本调用TFS对象模型
通过加载TFS客户端程序集,编写脚本查询并导出工作项:
# 加载TFS相关程序集(路径对应VS2012安装目录) Add-Type -Path "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.Client.dll" Add-Type -Path "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.WorkItemTracking.Client.dll" # 连接到TFS 2012集合 $tfsUri = New-Object System.Uri("http://tfs2012-server:8080/tfs/CollectionName") $tfsServer = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsUri) $tfsServer.EnsureAuthenticated() # 获取工作项跟踪服务 $witStore = $tfsServer.GetService([Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore]) # 执行WIQL查询(替换为你的查询条件) $query = $witStore.Query("SELECT [System.Id], [System.Title], [System.State], [System.Description] FROM WorkItems WHERE [System.TeamProject] = 'TargetProject'") # 导出到CSV文件 $query.WorkItems | Select-Object Id, Title, State, Description | Export-Csv -Path "workitems-export.csv" -NoTypeInformation
注意:需根据本地VS2012的安装路径调整程序集路径,若使用其他版本VS,需对应修改路径中的版本号。
三、迁移补充说明
- 源代码迁移无需单独导出,可直接使用TFS的
tf migrate命令,或通过Azure DevOps Server的仓库导入功能完成迁移。 - 迁移Work Items前,需确保目标服务器的工作项类型定义与源服务器匹配。若有差异,可先用
witadmin exportwitd导出源定义,调整后导入目标服务器。 - 迁移前务必备份TFS 2012的数据库,避免数据丢失。
内容的提问来源于stack exchange,提问作者Desimir Dimovic
相关产品推荐
相关产品推荐

