[编辑]
您可以通过IServiceProvider
获取当前的build-def。见answer。
的 [/编辑]
我正在尝试为我们的一个TFS Xaml构建工作流程添加自定义编辑器。 我开始关注Ewald Hofman的this excelent tutorial。 一切按预期工作,当我点击工作流参数的[...]按钮时,会显示凭据对话框。
我想做什么: 我想显示TFS团队项目中可用的可选择的测试套件列表/树。就像在默认实验室工作流程中一样:
显然,为了实现这一目标,我必须能够通过其.Net-API传递TFS(是否可以通过SOAP
/ REST
进行通信?)。
但是当我开始改变示例以适应我的场景时,我天真地尝试使用IServiceProvider
来获取IBuildService
实例。
public override object EditValue(ITypeDescriptorContext context, ServiceProvider provider, object value)
{
if (provider != null)
{
IWindowsFormsEditorService editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
IBuildServer bs = (IBuildServer)provider.GetService(typeof(IBuildServer));
...
此方法不起作用,bs在此声明后为空。
然后我尝试连接到TestManagement,如下所示:
var pr = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs:8080/tfs/DefaultCollection/ProjectName"));
var TcmService = pr.GetService<ITestManagementService>();
var t = TcmService.GetTeamProject("ProjectName");
但是当我点击工作流参数的编辑按钮时显示的HTTP 404错误失败了。网址是正确的,如果我在浏览器中打开页面,则会显示Team Webaccess页面。
TL; DR:
我希望能够在自定义worfklow参数编辑器中显示当前tfs的测试套件列表,但是我无法连接到TFS。
其他方法: This网站(以及其他一些网站)建议使用内置编辑器。是否可以使用实验室工作流程参数的内置编辑器窗口(第一个屏幕截图中的那个)?
提前致谢。
答案 0 :(得分:0)
看起来我只是愚蠢。
var pr = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs:8080/tfs/DefaultCollection/ProjectName"));
项目名称不得位于此网址中。使用下面的行可以正常工作。
var pr = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs:8080/tfs/DefaultCollection"));
查看我的跟进question