Skip to content
Azure Resource Manager Tools for Visual Studio Code
TypeScript HTML Other
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.azure-pipelines Fix tests on linux build machine (#488) Feb 14, 2020
.github Modify code owners (#393) Nov 14, 2019
.vscode PRs from forks should not run lang server tests (#406) Dec 10, 2019
assets Updated scaffolding to match quickstart best practices (#486) Feb 13, 2020
grammars Fix case-insensitivity of parameters and variables (#298) Oct 2, 2019
icons Added icons for 6 new resource types in JsonOutlineProvider (#417) Dec 15, 2019
images Use standalone language server (#263) Sep 17, 2019
src Move to dotnet 3.0 (#480) Feb 14, 2020
test Fixed icons for "Functions" entry in treeview (#427) Feb 4, 2020
tools Use standalone language server (#263) Sep 17, 2019
.gitignore Fix case-insensitivity of parameters and variables (#298) Oct 2, 2019
.vscodeignore Use standalone language server (#263) Sep 17, 2019
AzureRMTools128x128.png Use standalone language server (#263) Sep 17, 2019 More prep for 0.8.4 release (#476) Feb 6, 2020 Add upload-vsix to travis ci and extension recommendations (#40) Mar 13, 2018
NOTICE.html Prepare for 0.8.0 release (#358) Oct 28, 2019
NuGet.Config Use standalone language server (#263) Sep 17, 2019 Add (ARM) to name (#335) Oct 21, 2019 More prep for 0.8.4 release (#476) Feb 6, 2020
clean.cmd Initial Files Oct 12, 2017
extension.bundle.ts Add survey (#448) Jan 21, 2020
gulpfile.ts Move to dotnet 3.0 (#480) Feb 14, 2020
main.js Use standalone language server (#263) Sep 17, 2019
nuget.exe Use standalone language server (#263) Sep 17, 2019
package-lock.json npm update (#478) Feb 14, 2020
package.json Lang server no long supports dynamically changing log level (#481) Feb 14, 2020
tsconfig.json enable strict Jan 14, 2020
tslint.json Enable strict null checking, part 1 (#300) Oct 4, 2019
webpack.config.js Add colorization of expressions (#197) Apr 9, 2019

Azure Resource Manager (ARM) Tools for Visual Studio Code (Preview)

Version Installs Build Status

This extension provides language support for Azure Resource Manager deployment templates and template language expressions.


  • Provides a language server that understands Azure Resource Manager deployment template files

  • ARM Template Outline view for easy navigation through large templates

  • Colorization for Template Language Expressions (TLE)

  • Analyze and validate JSON syntax, JSON schema conformance for Azure resources, string expressions issues that would affect deployment

    • NEW in 0.8.0! Our new language server now has a better understanding of Azure Resource Manager templates and can therefore provide a better error and completion experience beyond that provided using standard JSON validation
      • It narrows down its schema validation based on the resource type and apiVersion properties of each resource.
      • No longer suggests changing the resource type if the apiVersion is not supported, or if a property is missing or invalid (as tools using standard JSON validation would do)
      • Errors provide better guidance for what actually needs to be fixed in each resource to match the schema
      • Greatly improved completion speed
      • Greatly reduced memory usage
      • Schema validation now is case-insensitive and follows other conventions matching the Azure Resource Manager backend's behavior
      • Note: The Azure schemas (which are read and interpreted by this extension) are undergoing continual improvement
  • IntelliSense for string expressions

  • Snippets Just type arm in the editor to see the available snippets

    • Getting started with a new JSON/JSONC file

      • arm! - Adds the framework for a full deployment template file for resource group deployments

        If you have not turned off auto detection of template files, you will now have access to all the snippets for "Azure Resource Manager Template" files

      • arm!s - Adds the framework for a full deployment template file for subscription deployments

      • arm!mg - Adds the framework for a full deployment template file for management group deployments

      • arm!t - Adds the framework for a full deployment template file for tenant deployments

      • armp! - Adds the framework for a full deployment template parameters file

        Then you can use the arm-param-value snippet to add new parameter values for deployment

    • For existing Azure Resource Manage Template files

      • arm-param, arm-variable, arm-userfunc, arm-userfunc-namespace Add new parameters, variables, user functions and user namespaces.
      • Resources - type arm- to see the other 70+ snippets for creating new resources of various types. For example, type arm-ubuntu to add all five resources necessary for a basic Ubuntu virtual machine.

Automatic Detection of deployment template files

By default, the extension recognizes a .json or .jsonc file as a deployment template file based on the $schema specified in the file (for instance, and will switch the editor language to "Azure Resource Manager Template" automatically. If you do not want that behavior, you can set the azureResourceManagerTools.autoDetectJsonTemplates setting to false and use the below methods to determine which files to treat as deployment templates.

Besides automatic detection, you can also use the files.associations setting to set up your own specific mappings based on specific files paths or patterns to mark them as deployment templates, e.g.

    "files.associations": {
        "*.azrm.json": "arm-template" // Treat these files as deployment templates

Related Links


There are several ways you can contribute to our repo:

  • Ideas, feature requests and bugs: We are open to all ideas and we want to get rid of bugs! Use the Issues section to report a new issue, provide your ideas or contribute to existing threads.
  • Documentation: Found a typo or strangely worded sentences? Submit a PR!
  • Snippets: Have a fix for a snippet or a new snippet idea? File an Issue or submit a PR!
  • Code: Contribute bug fixes, features or design changes:
    • Clone the repository locally and open in VS Code.
    • Install TSLint for Visual Studio Code.
    • Open the terminal (press CTRL+`) and run npm install.
    • To build, press F1 and type in Tasks: Run Build Task.
    • Debug: press F5 to start debugging the extension.


Before we can accept your pull request you will need to sign a Contribution License Agreement. All you need to do is to submit a pull request, then the PR will get appropriately labelled (e.g. cla-required, cla-norequired, cla-signed, cla-already-signed). If you already signed the agreement we will continue with reviewing the PR, otherwise system will tell you how you can sign the CLA. Once you sign the CLA all future PR's will be labeled as cla-signed.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.


VS Code collects usage data and sends it to Microsoft to help improve our products and services. Read our privacy statement to learn more. If you don’t wish to send usage data to Microsoft, you can set the telemetry.enableTelemetry setting to false. Learn more in our FAQ.


The source code in our public repository is licensed under the MIT license. The public source code currently contains functionality related to the parsing and validation of template expression strings, but does not contain functionality related to JSON parsing and validation or backend template validation.

The extension as it is built in Azure DevOps and published to the VS Code Marketplace is a distribution of the public repository and is bundled with the Azure Resource Manager language service binaries. The published extension and language service binaries are licensed under a traditional Microsoft product license.

You can’t perform that action at this time.