使用C#和Microsoft.TeamFoundationServer.Client将代码签入TFS 2017

时间:2018-08-20 02:24:10

标签: c# tfs continuous-integration tfs2017 tfs-sdk

我们有一套程序(服务插件),它们都依赖于内部NuGet软件包的复杂层次结构,这些都是用C#编写的,并在TFS 2017中通过CI构建进行维护,以维护软件包。

我想编写一个实用程序,使我能够签入更改,然后启动一系列自动编辑,签入和构建以自动更新和重建套件。替代方案是一整天的签出/更新程序包/签入/合并/签入,冲洗和重复(是的,该体系结构已尽可能优化!)。

自动依赖性确定和编辑部分很容易,但是我正在努力寻找任何不错的文档和/或代码示例,以使用C#和Microsoft.TeamFoundationServer.Client(等)获取和签入代码。 -所有示例和doco。我发现到目前为止(2012年)已经非常过时,或者只处理内容,工作项,报告等,而不更新存储库中的代码。

我从2010年的博客中获得了一段代码,该代码可以正常工作,但是我犹豫要重新调整代码的用途,因为它已经过时并且使用了已弃用的API。

任何人都可以请我指出一些不错的doco。或使用C#和2017以编程方式检入的示例。

1 个答案:

答案 0 :(得分:0)

我最近(在TFS 2017中)做到了这一点,我不知道这是否是您在博客中看到的您使用的方法,无论如何我都拥有出色的作品。

  • 创建工作区:

    // Connect to TFS
    TfsTeamProjectCollection _tfs = new TfsTeamProjectCollection(new Uri(tfsUrl));
    VersionControlServer _sourceControl = (VersionControlServer)_tfs.GetService(typeof(VersionControlServer));
    // Create workspace
    Workspace _workSpace = _sourceControl.CreateWorkspace("test");
    
  • 将文件添加到“待更改”

    //Copy the files to the workspace
    File.Copy(_filePath, _testWorkSpacePath, true);
    // Add the files to Pending Changes
    _workSpace.PendAdd(_testWorkSpacePath);
    // Get the conflicts
    var conflitcs =_workSpace.QueryConflicts(new string[] { _workSpaceFilePath }, true);
    // Resolve the conflitcs
    foreach (Conflict conflict in conflitcs)
    {
         conflict.Resolution = Resolution.AcceptYours;
         _workSpace.ResolveConflict(conflict);
    }
    
  • 签入

    var pending = _workSpace.GetPendingChanges();
    _workSpace.CheckIn(pending, comment);
    

trycatch包装每个步骤当然是很好的。