如何从扩展名获取/标识Azure DevOps Server基本URL?

时间:2019-12-14 16:11:46

标签: azure-devops azure-devops-extensions

我正在开发Azure DevOps Services和Server的扩展,但是一旦我对目标资源进行了一些导航(例如:提取请求详细信息),我就在努力获取Azure DevOps Server版本的基本URL。 / p>

有没有办法得到它?例如:

Azure DevOps服务

  • dev.azure.com/organization
  • organization.visualstudio.com

Azure DevOps服务器

  • serverName / {?}
  • serverName:8080 / {tfs} / {?}

1 个答案:

答案 0 :(得分:1)

我正在使用以下代码:

  1. 使用插件中的document.referrer作为URL来源。
  2. 找到项目名称,并在项目名称之前提取URL的一部分。

    const url = document.referrer;
    // how to detect base Url: get projectName and find 'ProjectName/_'
    // http://tfs2017-test:8080/tfs/Org/MyProject/_apps/hub/...
    const projectService = await SDK.getService<IProjectPageService>(CommonServiceIds.ProjectPageService);
    const project = await projectService.getProject();
    
    if (!project) {
        throw new Error("Cannot get project.")
    }
    
    const findStr = `${project.name}/_`;
    const index = url.indexOf(findStr);
    
    if (index < 0) {
        throw new Error(`URL '${url}' does not contain '${findStr}' substring`);
    }
    
    // extract from url without '_'
    this._baseUrl = url.substring(0, index + findStr.length - 1);