TFS“;“复制”;从一个字段到另一个字段的值
我需要从纯文本->字符串更改工作项字段。 由于我无法更改工作项的类型,因此创建一个新字段并从另一个字段更新其值是我的方法 我尝试了TFS/Web中的“批量编辑所选工作项…”,但我不确定您是否可以引用该模板中的其他字段值 如何设置[Work Item].[FieldNew].Value=[Work Item].[FieldOriginal].Value 甚至不必使用TFDAPI就可以做到这一点吗 我需要将item字段类型从纯文本更改为字符串的原因是,我希望使用列运算符进行查询,以测试字段是否有值 对于纯文本字段,唯一允许的运算符是Contains/Not Contain。我可以覆盖此选项以允许“>”吗?TFS“;“复制”;从一个字段到另一个字段的值,tfs,workitem,Tfs,Workitem,我需要从纯文本->字符串更改工作项字段。 由于我无法更改工作项的类型,因此创建一个新字段并从另一个字段更新其值是我的方法 我尝试了TFS/Web中的“批量编辑所选工作项…”,但我不确定您是否可以引用该模板中的其他字段值 如何设置[Work Item].[FieldNew].Value=[Work Item].[FieldOriginal].Value 甚至不必使用TFDAPI就可以做到这一点吗 我需要将item字段类型从纯文本更改为字符串的原因是,我希望使用列运算符进行查询,以测试字段是否有值
我可以通过Excel
KMoraz的解决方案也不适用于我,因为HTML字段在导出到Excel时变成只读。因此,我使用Powershell脚本将一个字段的值复制到另一个字段中(只需将“$wiFieldNewValue”变量替换为您正在复制的源字段) 代码参考: 嵌入式代码:
#This script sets a specific field to a specified value for all work items in a specific project
Function LoadTfsAssemblies() {
Add-Type –AssemblyName "Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Add-Type -AssemblyName "Microsoft.TeamFoundation.WorkItemTracking.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
}
##### SETTINGS
#The TFS Team Project Collection to connect to
$tfsUri = "http://tfsserver:8080/tfs/DefaultCollection"
#The TFS Team Project from which to select the work items
$tfsProject = "Test Project"
#The work item type of the work items to update
$wiType = "Test Case"
#The reference name of the field to update
$wiFieldRefName = "Microsoft.VSTS.Common.Priority"
#The value to set the field to
$wiFieldNewValue = "1"
##### END SETTINGS
LoadTfsAssemblies
$tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsUri)
$tfs.EnsureAuthenticated()
if($tfs.HasAuthenticated)
{
Write-Output "Successfully authenticated to TFS server [$tfsUri]"
$workItemStore = $tfs.GetService([Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore])
$query = "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.TeamProject] = '{0}' AND [System.WorkItemType] = '{1}'" -f $tfsProject, $wiType
Write-Output("Using query [$query]")
$workItems = $workItemStore.Query($query)
Write-Output("Going to update [{0}] work items" -f $workItems.Count)
$successCount = 0
$failureCount = 0
ForEach($wi in $workItems) {
Write-Output("Updating work item [{0}]" -f $wi.Title)
try {
$wi.Open()
$wi.Fields[$wiFieldRefName].Value = $wiFieldNewValue
Write-Output("Set field [{0}] to [{1}]" -f $wiFieldRefName, $wiFieldNewValue)
$validationMessages = $wi.Validate()
if($wi.IsValid() -eq $true)
{
$wi.Save()
Write-Output("Successfully updated work item [{0}]" -f $wi.Title)
$successCount++
} else {
Write-Error("Work item is not valid!")
ForEach($validationMessage in $validationMessages)
{
Write-Error("Error: {0}" -f $validationMessage)
}
$failureCount++
}
} catch {
Write-Error("Couldn't set field [{0}] to [{1}] for work item [{2}]" -f $wiFieldRefName,$wiFieldNewValue,$wi.Title)
Write-Error $_
$failureCount++
}
}
Write-Output("Finished!")
Write-Output("Successfully updated: {0}" -f $successCount)
Write-Output("Failed to update: {0}" -f $failureCount)
} else {
Write-Error("Couldn't authenticate to TFS server [$tfsUri]")
}
我也有同样的问题。但是,我可以用上面的解决方案来解决它。我的旧字段是“字符串”,字段类型是“HTML”。导出到TFS时,此新字段将变为只读。任何想法都是非常受欢迎的!简单有效的解决方案,谢谢!