2

我正在尝试推广现有的放置,并且需要在将放置文件夹部署到目标环境之前验证给定的内部版本名称/编号是否有效(状态和质量)。

基于这样的博客(http://www.woodwardweb.com/dotnet/tfs_build_api_b.html)我正在尝试像这样连接到我的构建服务器但没有成功:

string tfsProjectCollectionUrl = @"http://collectionServer:8080/tfs/collection";
var tfs = TeamFoundationServerFactory.GetServer(tfsProjectCollectionUrl); 
tfs.EnsureAuthenticated();

IBuildServer tfsBuildServer = tfs.GetService<IBuildServer>();
//tfsBuildServer == null

我有两台服务器,Collection 和 Build。构建时的 TFS 管理控制台显示“为 collectionServer\collection 配置了构建服务”。不知道我在这里缺少什么。


更新:
我利用了我的 MSDN 支持资源,因为这有点时间紧迫,并通过将这些操作提取到外部程序集取得了一些进展。我获取收藏的方法似乎很好,只是住在 CodeActivity 本身并不快乐。现在,CodeActivity 调用此外部程序集并返回我的 dropPathToPromote 或如果不满足状态和质量条件则抛出异常。

这在测试工具工作流中运行良好,但在飞行中却不行。我在执行构建的前 6-7 秒内收到此错误:
Could not load file or assembly 'MyTFSAPICallingAssembly.dll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

新程序集包含在我的自定义程序集 VCS 文件夹中,以供构建控制器获取,代理临时文件夹使用这些 dll(所有外部程序集和我的自定义程序集)进行更新,新的构建定义呈现包含此 CodeActivity 的流程模板无一例外,并且引用我的根自定义程序集的其他构建定义执行没有失败。

4

2 回答 2

1

好吧,我觉得自己像个菜鸟。我放置 TFS API 代码的程序集上的平台被标记为“x86”,而调用 CodeActivity 程序集是“任何 CPU”。一旦修复,构建执行得很好。我仍然有一些辅助构建失败需要清理,但看起来我的问题已经解决了。

于 2013-02-20T22:00:39.363 回答
0

您应该从 projectcollection 获取服务

TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(@"http://collectionServer:8080/tfs/collection"));
IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));
于 2013-02-16T03:16:23.490 回答