c# - 使用 C# 和 Microsoft.TeamFoundationServer.Client 将代码签入到 TFS 2017
问题描述
我们有一套程序(服务插件),它们都依赖于内部 NuGet 包的复杂层次结构,这些程序是用 C# 编写的,并保存在 TFS 2017 中,并通过 CI 构建来维护这些包。
我想编写一个实用程序,使我能够签入更改,然后启动一系列自动编辑、签入和构建以自动更新和重建套件。另一种选择是一整天的签出/更新包/签入/合并/签入,冲洗和重复(是的,架构已尽可能优化!)。
自动依赖关系确定和编辑部分很容易,但我很难找到任何体面的文档和/或代码示例,用于使用 C# 和 Microsoft.TeamFoundationServer.Client (等)获取和签入代码 - 所有示例和 doco。到目前为止,我发现要么非常过时(2012 年),要么只处理阅读内容、工作项、报告等,而不是更新存储库中的代码。
我有一段来自 2010 年博客的代码,它可以工作,但我不愿重新调整它的用途,因为它已经过时并且使用了已弃用的 API。
谁能指点我一些像样的doco。或使用 C# 和 2017 以编程方式签入的示例。
解决方案
我最近做了这个(使用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);
当然,用try
和包裹每个步骤是好的catch
。
推荐阅读
- sql - Oracle存储过程插入带有前缀员工编号的唯一ID
- javascript - “npm run test”期间出错:“未定义”的参数数量无效。得到 1 预期 0
- ios - 如何通过您的应用打开显示和亮度设置
- sql - 可以选择 * 与选择所需的列给出不同的结果吗?
- python - 不兼容的形状:[128,1] 与 [128,3,3]
- google-cloud-platform - 启动 VM 实例“abc”失败。错误:超出配额“CPUS”。限制:0.0 在 asia-south1 地区
- docker - 从容器 id 及其内部 pid 中获取主机 pid
- html - 移动设备上的 IMG
- javascript - 一个接一个地运行多个sweetalerts
- javascript - 使用纯javascript:如果选中一个单选按钮,则仅显示下一部分