2

无论如何可以从IBuildDefinition或其他相关的“服务”获取集合 URI。

我试图避免将 URI 作为自定义参数提供给构建模板中的集合。我正在寻找一种方法来从UITypeEditor自定义类中(在这种情况下)以编程方式检索它。

有没有办法在不使用硬编码的情况下查询这个?在我看来,构建过程本身(定义、控制器、代理等)知道他们正在处理哪个集合,但我怎样才能找到?

更新:这是您从UITypeEditor. 然后您只需访问以下TeamProjectCollection属性VersionControlService

public class Editor : UITypeEditor
{
    public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, IServiceProvider provider, object value)
    {           
        if (provider != null)
        {
            IWindowsFormsEditorService service = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

            if (service != null)
            {                       
                VersionControlServer vcs = provider.GetService(typeof(VersionControlServer)) as VersionControlServer;

                // Do what you need to do with it here
            }               
        }

        return value;
    }

    public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.Modal;
    }
4

2 回答 2

1

在 UITypeEditor.EditValue 的覆盖内,获取 TeamProjectCollection 的相关代码行是

VersionControlServer vcs = provider.GetService(typeof(VersionControlServer)) as VersionControlServer;

然后它在属性中

vcs.TeamProjectCollection
于 2012-04-13T19:08:43.280 回答
1

您可以从 IBuildServer 获取 TfsTeamProjectProjection 对象:

http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuildserver.teamprojectcollection.aspx

然后从这个对象中获取 Uri。

于 2012-04-06T16:29:56.823 回答