Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在TFS中填充Change.MergeSources字段?_Tfs_Merge_Changeset_Custom Build Step - Fatal编程技术网

如何在TFS中填充Change.MergeSources字段?

如何在TFS中填充Change.MergeSources字段?,tfs,merge,changeset,custom-build-step,Tfs,Merge,Changeset,Custom Build Step,我们希望生成具有以下格式的生成说明: 1) Associated ChangeSets: 2) - ChangeSet 45241, by Joe: "Patching fix for foobar" 3) 'Foo.cs' integrated from dev v. 22 to qa v. 7 4) 'Bar.cs' integrated from dev v. 9 to qa v. 3 到目前为止,我们有一个自定义构建步骤,可以完成1)和2)。它查看“Associat

我们希望生成具有以下格式的生成说明:

1) Associated ChangeSets:
2)   - ChangeSet 45241, by Joe: "Patching fix for foobar"
3)     'Foo.cs' integrated from dev v. 22 to qa v. 7
4)     'Bar.cs' integrated from dev v. 9 to qa v. 3
到目前为止,我们有一个自定义构建步骤,可以完成1)和2)。它查看“AssociatedChangesetsAndWorkItems”TFS生成活动生成的信息。代码如下:

protected override bool Execute(CodeActivityContext context)
{
     StreamWriter sw = new StreamWriter(Path.Combine(BuildNotesPath.Get(context),"build-notes.txt"));
     sw.WriteLine("Associated ChangSets:");
     foreach (Changeset changeset in BuildAssociatedChangesets.Get(context))
     {
        sw.WriteLine(string.Format("ChangeSet {0}, by {1}: {2}", changeset.ChangesetId, changeset.Committer, changeset.Comment));            
        foreach (Change change in changeset.Changes)
        {               
           foreach (MergeSource source in change.MergeSources)
              sw.WriteLine(string.Format("\'t{0}': integrated from dev v. {1} to qa v. {2}", source.ServerItem, source.VersionFrom, source.VersionTo));
        }
     }
     sw.Flush();
     sw.Dispose();
     return true;  
}
我们遇到的问题是,“MergeSources”字段始终是一个空列表。要填充该字段,我们必须做些什么?

请查看中的方法,以及获取合并源的示例

雅各布·恩赫(Jakob Enh)回答如下: