Skip to content

Extension Authoring

Alan Ren edited this page May 26, 2023 · 32 revisions

If you're interested in extending Azure Data Studio, you can do that by creating your own extension and publish it to the Azure Data Studio extension gallery.

Writing an Extension

Prerequisites

To develop an extension you need Node.js installed and available in your $PATH. Node.js includes npm, the Node.js Package Manager, which will be used to install the extension generator.

To start your new extension, you can use the Azure Data Studio Extension generator. The Yeoman extension generator makes it very easy to create simple extension projects. To Launch the generator, type the following in a command prompt:

npm install -g yo generator-azuredatastudio

yo azuredatastudio

Extensibility References

Please see Extensibility References to learn about Azure Data Studio Extensibility API. You can also see examples of how to use the API in existing samples.

Debugging Extension

You can debug your new extension using Visual Studio Code extension SQL Operations Studio Debug.

Steps

  • Open your extension with Visual Studio Code
  • Install Azure Data Studio Debug extension
  • Press F5 or click the Debug icon and click Start
  • A new instance of Azure Data Studio will start in a special mode (Extension Development Host) and this new instance is now aware of your extension.

Creating Extension Package

After writing your extension, you need to create a VSIX package to be able to install it in Azure Data Studio. You can use vsce to create VSIX package.

npm install -g vsce

npm install

vsce package

Publishing the Extension

**NOTE: **For extensions owned by Azure Data Studio team, please follow the instructions: here.

To publish your new extension to Azure Data Studio:

  1. Fork or make a child branch of the branch release/extensions
  2. Add your extension to the extension gallery file or edit it if updating your extension. update these 2 files accordingly: extensionsGallery.json(If the new extension release works with the latest stable version of ADS) and extensionsGallery-insider.json(If the new extension release works with the insiders build of ADS).
  3. Third party extensions: We don't have support to host third party extensions for now. Instead of downloading the extension, ADS has the option to browses to the download page. To be able to set a download page for your extension please set the value of asset "Microsoft.SQLOps.DownloadPage".
  4. Create a PR against release/extensions branch
  5. For Microsoft owned extensions, please include a link to the new VSIX file (make sure the link is accessible to Microsoft Employees) in the PR description, you can set the Microsoft.VisualStudio.Services.VSIXPackage as: https://sqlopsextensions.blob.core.windows.net/extensions/[extension-name]/[vsix-file](replace the [extension-name] and [vsix-file] accordingly). We will create a folder in our storage account using extension's name and upload the file to it.
  6. Your PR will be reviewed and you will be notified when the changes are published.

Here are example PRs:

3rd party extension: https://github.com/microsoft/azuredatastudio/pull/14926

Microsoft owned extension: https://github.com/microsoft/azuredatastudio/pull/12135

Platform specific extension installers

Some extensions have to download additional binaries based on the OS and processor architecture after installation, that means users with no internet access won't be able to use the common extension installer, extension authors should produce platform specific extension installers with the binaries bundled in so that no download is needed at runtime.

Currently the Azure Data Studio's extension marketplace doesn't support multiple extension installers, extension authors should include a section in the extension readme file which contains the URL to the platform specific extension installers.

Clone this wiki locally