我们有一套程序(服务插件),它们都依赖于内部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
包装每一步当然是好的。