我们用于构建放置位置的服务器正在停用。我知道如何更改当前构建定义以使用新服务器,但是如何更改已完成的构建的历史记录?我希望能够打开过去的版本并单击“打开删除文件夹”并将其带到新服务器。我们将手动将旧版本复制到新服务器。
答案 0 :(得分:4)
以下示例似乎有效:
using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
namespace ChangeDropLocation
{
class Program
{
static void Main()
{
TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://MyServer:8080/tfs/Collection"));
var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));
IBuildDetail buildDetail = buildService.GetBuild(new Uri("vstfs:///Build/Build/1506"));
buildDetail.DropLocation ="\\somewhere";
var buildDetails = new List<IBuildDetail>();
buildDetails.Add(buildDetail);
buildService.SaveBuilds(buildDetails.ToArray());
}
}
}
您应该考虑的一件事是您可能缺乏更新构建信息的权限。在我的第一次尝试中,虽然我是项目管理员,但我得到以下内容:
TF215106:拒绝访问。 DOMAIN \ username需要更新构建 团队中构建定义myBuildDefinition的信息权限 项目MyTeamProject执行操作。欲获得更多信息, 联系Team Foundation Server管理员。
为了克服这个问题,右键单击TeamExplorer“Builds”&amp;然后选择“安全......”。
答案 1 :(得分:2)
我不知道有任何工具可以做到这一点。也许有一个TFS powershell命令,但我认为你可以 - 在采取正确的预防措施之后 - 直接更新SQL Db。
到放置位置的映射存储在tbl_Build中的集合SQL Db中。
从[tbl_Build]中选择[DropLocation],[DropLocationRoot],[LogLocation]
我不确定是否对仓库有任何影响。可能想先检查一下。
我认为微软通常建议不要直接操作SQL来做这样的事情。您可以使用TFS API,这将是一种相对更安全的方法。