我们用于构建放置位置的服务器即将退役。我知道如何更改当前构建定义以使用新服务器,但是如何更改已完成构建的历史记录?我希望能够打开过去的构建并单击“打开放置文件夹”并被带到新服务器。我们将手动将旧版本复制到新服务器。
问问题
1139 次
2 回答
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 需要为团队项目 MyTeamProject 中的构建定义 myBuildDefinition 更新构建信息权限以执行操作。有关详细信息,请联系 Team Foundation Server 管理员。
为了克服这个问题,通过在 TeamExplorer“Builds”中单击右键设置权限,然后选择“Security...”。
于 2012-03-12T12:43:35.550 回答
2
我不知道有什么工具可以做到这一点。也许有一个 TFS powershell 命令,但我认为你可以在采取适当的预防措施之后直接更新 SQL Db。
到放置位置的映射存储在 tbl_Build 的集合 SQL Db 中。
从 [tbl_Build] 中选择 [DropLocation]、[DropLocationRoot]、[LogLocation]
我不确定是否对仓库有任何影响。可能想先检查一下。
我相信微软通常建议不要直接为这样的东西操作 SQL。您可以改用 TFS API,这将是一种相对安全的方法。
于 2012-03-09T16:38:47.157 回答