我们有一套程序(服务插件),它们都依赖于内部NuGet软件包的复杂层次结构,这些都是用C#编写的,并在TFS 2017中通过CI构建进行维护,以维护软件包。
我想编写一个实用程序,使我能够签入更改,然后启动一系列自动编辑,签入和构建以自动更新和重建套件。替代方案是一整天的签出/更新程序包/签入/合并/签入,冲洗和重复(是的,该体系结构已尽可能优化!)。
自动依赖性确定和编辑部分很容易,但是我正在努力寻找任何不错的文档和/或代码示例,以使用C#和Microsoft.TeamFoundationServer.Client(等)获取和签入代码。 -所有示例和doco。我发现到目前为止(2012年)已经非常过时,或者只处理内容,工作项,报告等,而不更新存储库中的代码。
我从2010年的博客中获得了一段代码,该代码可以正常工作,但是我犹豫要重新调整代码的用途,因为它已经过时并且使用了已弃用的API。
任何人都可以请我指出一些不错的doco。或使用C#和2017以编程方式检入的示例。
答案 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);
用try
和catch
包装每个步骤当然是很好的。