Azure DevOps Services
选择在自己的服务、第三方托管服务(如 Azure 或 Heroku)或 Azure DevOps Services 上托管扩展的静态内容,例如 HTML、CSS 和 JavaScript 文件。
重要
如果扩展需要在 TFS 数据库中创建自定义表,请不要使用“dbo”架构创建该表。 相反,应在单独的架构中创建自定义表。 例如,“YourExtensionName”。
小窍门
有关最新的扩展开发指南,包括主题设置以及从 VSS.SDK 进行迁移,请参阅 Azure DevOps 扩展 SDK 开发人员门户。
在 Azure DevOps Services 上托管
在此模型中,静态内容与扩展的 .vsix 文件一起打包,并从公共终结点https://publisher.gallerycdn.vsassets.io 提供服务。
当你增强或装饰来自 Azure DevOps 服务的数据时,扩展的静态内容非常有用。 扩展发布者不需要你(扩展发布者)为扩展设置、管理或支付托管服务费用。
Steps
- 在扩展清单文件中,指定要通过
files属性包含的文件:{ "files": [ { "path": "scripts", "addressable": true }, { "path": "images/extra/icon1.png", "addressable": true } ] } - 从扩展清单中删除属性
baseUri(如果已设置)。 - 打包扩展(步骤)
- 发布(或重新发布)扩展(步骤)
> [!重要提示] >确保在对 .vsix 中包含的静态内容文件进行更改时增加扩展名的版本。
请记住:
- 属性指定的
path值可以是文件夹或单个文件。 如果文件夹,则包含整个文件夹(以及任何子文件夹)。 - 该
addressable属性非常重要,它告知 Visual Studio Codespaces 使文件(s)URL 可寻址。 - 所有
addressable资产请求都区分大小写。 如果资产的请求大小写与实际上传的资产不同,会导致 HTTP 404(未找到)错误。 - 不指定 baseUri 或设置空值会告知 Visual Studio Codespaces 在运行时计算基本 URI,就好像静态内容由 Azure DevOps Services 托管一样。
在第三方服务上托管
在此模型中,静态内容从你自己的服务提供,并且不包括在扩展的 .vsix 文件中。
Steps
- 在扩展清单中设置
baseUri属性。例如,假设值为https://myservice.net/extension且此中心贡献为:
"baseUri": "https://myservice.net/extension",
"contributions": [
{
"id": "Fabrikam.HelloWorld",
"type": "ms.vss-web.hub",
"targets": [
"ms.vss-work-web.work-hub-group"
],
"properties": {
"name": "Hello",
"uri": "hello-world.html"
}
}
]
Azure DevOps 服务在渲染 https://myservice.net/extension/hello-world.html 时会加载此中心的内容。