TFS 2012当更改的副本复制以前的值而不是当前值时
在TFS 2012中,我编辑了任务工作项,以便在更改原始估计时,它自动将原始估计复制到剩余估计字段 我的代码:TFS 2012当更改的副本复制以前的值而不是当前值时,tfs,tfs-workitem,Tfs,Tfs Workitem,在TFS 2012中,我编辑了任务工作项,以便在更改原始估计时,它自动将原始估计复制到剩余估计字段 我的代码: <FieldDefinition name="Remaining Work" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure"> <WHENCHANGED field="Microsoft.VSTS.Scheduling.OriginalEsti
<FieldDefinition name="Remaining Work" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure">
<WHENCHANGED field="Microsoft.VSTS.Scheduling.OriginalEstimate">
<COPY from="field" field="Microsoft.VSTS.Scheduling.OriginalEstimate" />
</WHENCHANGED>
<HELPTEXT>An estimate of the number of units of work remaining to complete this task</HELPTEXT>
</FieldDefinition>
完成此任务剩余工作单元数的估计值
但是,当您在任务的“原始估计”字段中输入值并单击“保存”时,它会复制上一个值,而不是当前值
如何修复它,使其在保存任务时复制新值,而不是以前保存的值
编辑:这是从整个文件视图中提取的xml,而不是仅从该项的TFS power tools视图中提取的xml。出于某种原因,它显示了
,而不是
:
完成此任务剩余工作单元数的估计值
我们已经完成了这项任务,使用了从工作项从“新”移动到“进行中”的转换
<Transition from="New" to="In Progress">
<REASONS>
<DEFAULTREASON value="In Progress">
<FIELDS>
<FIELD refname="System.AssignedTo">
<COPY from="currentuser" />
</FIELD>
<FIELD refname="Microsoft.VSTS.Scheduling.OriginalEstimate">
<WHEN field="Microsoft.VSTS.Scheduling.OriginalEstimate" value="">
<COPY from="field" field="Microsoft.VSTS.Scheduling.RemainingWork" />
</WHEN>
</FIELD>
</FIELDS>
</DEFAULTREASON>
</REASONS>
</Transition>
如果原始估算字段没有设置值,它将使用剩余工时中存储的值。基本上,您无法以您尝试的方式执行您尝试执行的操作。为了使其工作,您需要有效地保存工作项两次。触发WHENCHANGED时存储在TFS中的值仍然是旧值。在保存操作完成之前,不会保存新值(因此实际上无法访问)。这实际上是预期的行为
建议的将两个字段的同步放入状态转换的替代方案将起作用。您还可以在保存操作完成后使用TFS API实现此类功能。您使用而不是定义字段的原因是什么?还有其他规则可能会更新RemainingWork或OriginaleSimitate字段吗?我从TFS power tools视图中提取了该项的xml,但当我查看整个文件时,它是而不是。我不知道为什么。没有其他字段会根据对完整xml.OK的搜索来更改它。您能否查看工作项的详细历史记录,并查看是否有任何条目显示字段值发生变化?根据历史记录,它传递的是以前的值,而不是当前的新值,例如原始估计值旧1新2剩余工作旧0新1
<Transition from="New" to="In Progress">
<REASONS>
<DEFAULTREASON value="In Progress">
<FIELDS>
<FIELD refname="System.AssignedTo">
<COPY from="currentuser" />
</FIELD>
<FIELD refname="Microsoft.VSTS.Scheduling.OriginalEstimate">
<WHEN field="Microsoft.VSTS.Scheduling.OriginalEstimate" value="">
<COPY from="field" field="Microsoft.VSTS.Scheduling.RemainingWork" />
</WHEN>
</FIELD>
</FIELDS>
</DEFAULTREASON>
</REASONS>
</Transition>