All notable changes to the "vscode-azurearmtools" extension will be documented in this file.
Due to technical issues originating with a recent change in Azure schemas, we haven't been able to update our schemas for a while. This release fixes that issue.
- Service bus and blob container snippets #1379
- Add definitions for
items()
,tenant()
andmanagementGroup()
functions #1397
- Add support to pick up schemas again (due to breaking change in schemas) #1324
- Microsoft.Web/sites out of date #1396
- Microsoft.Authorization/policyAssignments latest API unavailable. #1384
- Microsoft.Authorization/roleAssignments is unrecognized #1366
- Microsoft.Web/hostingEnvironments most apiVersions not recognized #1344
- Using scaffolding snippets in empty JSON file should not require CTRL+SPACE #1390
- Added notification message about availability of Bicep extension (can choose to never see again) #1304
- ARM tools snippet completions show up in bicepconfig.json files #1307
- Note in "providers" template function description that it has been deprecated #1356
- Updated to TypeScript 4
- Test improvements
- Improvements to error telemetry from language server
- Moved reource snippets to individual template files to make editing and proofing easier #1370
- Updated schemas
- Updated function metadata #1311
- Correct minor typo for
deprecrated
(thanks Jack Blower @ElvenSpellmaker!) #1301
- Added icons for loadbalancer, virtual machine scaleset, and service fabric resources (thanks Jason Gilbertson @jagilber!) #1255
- Understand new top-level "scope" property #967
- Find references for a nested template parameter incorrectly finds matches in the parameter file #1269
- Show apiVersions in reverse chronological order #1279
- Clicking F12 while on a parameter definition should show all refs but instead says "no definition found" #1267
- Telemetry to better understand which resource types and apiVersions do not have schemas #1250
- Retrieve list of valid schemas and apiVersions from the language server for future features #1258
- Support for linked templates validation and parameter completion
templateLink.relativePath
(requires apiVersion 2020-06-01 or higher of Microsoft.Resources/deployments for template specs, 2020-10-01 for direct deployment)templateLink.uri
deployment().properties.templateLink.uri
- See README.md for more information
"parametersLink"
is not supported (but"parameters"
is)- Experiences include:
- Validation of linked templates using the value of parameter values supplied to the template
- Parameter validation (missing, extra, type mismatch)
- "Light-bulb" and snippet support to fill in parameter values for a linked template
- CTRL-click on relativePath value or click on code lens to navigate to linked template
- Can navigate to URI-based linked templates
- Requires full template validation to be enabled (either all top-level parameters have a default value or else a parameter file is selected)
- Enable full template validation if all top-level parameters have default values, even if no parameter file has been specified #1217
- Show warning notification when the azureResourceManagerTools.languageServer.dotnetExePath setting is in use #1181, #1180
- Schemas updated
- Clearer notification when the extension is starting up and loading schemas #463
- Intellisense for AutoScaleSettings recommends "statistics" when it should be "statistic" #1141
- Incorrect validation errors in user-defined functions when using recently added builtin functions (createObject etc.) #1153
- Give warning if the wrong schema might be wrong for the deployment resources being used #1055
- Add support for pickZones() function (thanks Brian Golden @bgold09!) #1130
- Add mention of ARM Viewer to README #1140
- Upgrade Microsoft.Resources/deployments apiVersion to support relativePath property #1137
- Update schemas cache
- Split nested snippet into inner/outer #1157
- New Feature: Extract to variable/parameter #515
- Thanks to Nils Hedström @nilshedstrom for implementing this new feature!
- Hover over an expression or a multi-line string to see a easy-to-read, formatted version of it #1092
- createArray() now supports creating an empty array, update tooling to avoid false positive #1050
- Extension causes high cpu load with large numbers of variables/parameters/resources #1051
- We should support getting references from the entire 'variables('xxx')' or params expression, not just inside 'xxx' #1046
- Stop displaying our own error message at the same time as .net extension #1093
- Validation error with resourceGroup() tags when using parameter file #831
- dateTimeAdd() in certain scenarios gives a template validation error #1056
- Validation of template function "deployment" #1060
- Completions for
dependsOn
array elements - Intellisense improvements:
- Child/parent code lenses for resources
- If we find just a single matching parameter file, we now automatically use it without asking. It can be manually disassociated or associated with a different parameter file, and this behavior can be turned off via VS Code settings #911
- ARM Template Outline view and Intellisense now use a more compact format for the name and type of resources that are expressions, based on the new string interpolation format for Bicep
- ARM Template Outline view now shows only the last segment of a resource's name
- ARM Template Outline view now also shows the last segment of a resource's type
- For a cleaner look, parameter code lenses just show "Using default value" for parameters with default values, and do not actually repeat the default value #999
- Missing one warning in the error list after changing the property from "inner" to "outer" #891
- Added location property to deployment() function metadata #936
- "Cannot read property 'start' of undefined: TypeError: Cannot read property 'start' of undefined" in suites #858
- List function is not recognized #949
- Support for new template functions: createObject(), false(), true(), null()
- resourceId completion should pull from within the correct scope of resources #775
- Unable to remove file reference from parameter file to template file if template file is deleted #952
- Using schema with http instead of https sets language to arm-template but schema Intellisense/validation don't work #834
- Snippet contextualization #654
- Snippets now appear only in locations where they make sense
- Automatically bring up snippets for new parameters, variables, outputs, etc. when the first double quote is typed
- Automatically bring up snippets for new resources, user function parameters, etc. when the first curly brace is typed
- Support code lenses, errors, intellisense and code actions for nested templates, just like for parameter files #837
- "filename.json does not appear to be an Azure Resource Manager deployment template file" #838
- The notification information is inconsistent with the status bar "Select/Create Parameter File…" #873
- Show error icon in pick list for current parameter file if not found [#693](https://github.com/microsoft/Sscode-azurearmtools/icon issues/693)
- Revision comparison shows unexpected problems #601
- The ARM function listchannelwithkeys is not recognized as a valid function. #846
- Error shows when selecting parameter file for an unsaved template file #841
- Status bar doesn't show up when changing a file to arm-template #839
- Assertion failure in parameter file with no "parameters" object if there are missing parameters #829
- Adding in Resource Group snippet (thanks Ryan Yates @kilasuit!) #726
- SetDiagnosticsFromTask for source 'arm-template (validation)' throws an exception during suites #875
- Disable display of "documentColumnIndex (29) cannot be greater than the line's maximum index" assertion #843
- "value cannot be null" when providing keyvault reference to a nested deployment parameter #827
- Error message and !!MISSING: command!! messages in code lenses opening template file when params file missing #810
- Error shows when selecting parameter file for an unsaved template file #666
- Invalid location given for error when resource name evaluates to empty string #816
- Using 'copy' in nested template variables triggered an template validation error #730
- Better support for nested templates #484
- Support for inner-scoped expressions (expressionEvaluationOptions.scope = 'inner') for parameters, variables and user functions #554
- Fixed null reference exception with nested templates when a parameter file is used #716
- Code lenses mark nested and linked template and their effective expression scope
- Warning about unreachable parameters/variables in a nested template with outer scope
- New code lenses show effective source and value of top-level parameters #675
- First step taken to allow us to restrict snippets to appropriate locations in a template file #789
- Unused parameters and variables are now displayed grayed out like unused code #679
- Recognition for the listKeyValue function #720
- 'Load Balancer Internal' snippet: incorrect placement of subnet for frontendIPConfigurations (thanks Anatoly Basharin @abasharin!) #725
- Format document breaks when using multi-line functions #435
- Made prompt for "Type a parameter name" more explanatory #765
- Improvements for Insert Item... menu (thanks Nils Hedström @nilshedstrom!) #670
- Fails to create a parameter file for arm template when encoded with UTF-8 BOM #721
- Schema validation is not identifying correct location in nested templates #625
- Shortened many schema-related warning messages #623
- "Internal Error: Validation threw an exception" with assembly including linked templates #773
- Completion list for "location" shows incorrect icons #676
- Formatting: empty object blocks should be left alone, not expanded to multi-line #753
- Template validation reports parameter value not specified when it uses a keyvault reference #609
- Template with apiProfile not honored among resources #635
- Microsoft.Logic/workflows snippet apiVersion references removed schema #700
- Made naming of linked template snippet consistent with the terminology in current docs and added a new snippet for nested templates #744
- Updated schema cache #790
-
Improved parameter file support:
- Completions for missing and new parameter values (type double quote or CTRL+SPACE)
- Quick fix and code actions for adding missing parameter values
- Rename parameters across template and parameter file
- Go To Definition and Find References for parameters across both files
-
Insert item... (variables, parameters, resources, functions, outputs) implemented by Nils Hedström @nilshedstrom, thanks! Look for this in the editor context menu or the ARM Template Outline view!
-
Completions for resourceId arguments based on resources found inside the template
-
New
Application Gateway
andApplication Gateway and Firewall
snippets (thanks Emmanuel Auffray @ManuInNZ!)
- Suggestion: Auto-complete should not insert "()" #501
- Removed
arm-param-value
snippet in parameter files (replaced by new parameter auto-completions) - Add lightbulbs to increase discoverability of parameter/variable renames implemented by Nils Hedström @nilshedstrom, thanks!
- Variable autocomplete does not show variables without quotes #361
- Use latest schema version for ARM Template parameter file (thanks Wilfried Woivre @wilfriedwoivre!) #622
- Ensure snippet resource definitions align with best practices doc #525
- Snippets should use tabs instead of spaces so the editor can adjust the tabs to the current editor settings #633
- dateTimeAdd function not recognized #636
- Rename dialog should not include quotes (#660)(microsoft#660)
- Rename doesn't work on a variable/parameter with a hyphen #661
- Template validation doesn't recognize 'environment()' function when full validation enabled [#531]((microsoft#531)
- Space after colon (:) removes IntelliSense Selection List #482
- Pop up 2 dialogs when renaming a resource that can't be renamed #407
- autocomplete of params/var replaces needed code #127
- ARM template validation cannot handle "copy" in outputs section #600
- Note: Currently works only for resource group deployment, see #695
- Use .NET Install Tool for Extension Authors (ms-dotnettools.vscode-dotnet-runtime) to download and install .NET core runtime
- There are problems with this document's schema impacting one or more items in the document (ignore invalid formats in schemas) #570
- Use dotnet core v3.1
- First round of support for parameter files
- Specify a parameter file to associate with a template file
- Parameter file will be used to enable additional validation
- Create new parameter file from parameters within the template
- Support filtering for child resource type name and apiVersion values
- Template sorting (implemented by Nils Hedström @nilshedstrom, thanks!)
- Snippet improvements
- apiVersions updated
- various fixes and standardization
- Added more resource type icons for ARM TEMPLATE OUTLINE view (thanks Nils Hedström @nilshedstrom!) #253
- Support for schema auto-completion inside nested templates
- Now using a single output for extension and language server
- "Found more than 1 match" (oneOf error) in some ARM templates
- Reading schemas from .zip file does not work on Mac
- Arm Template Outline doesn't show up when you first open a file, but does when you tab back to it (thanks Nils Hedström @nilshedstrom!) #470
- Snippets should follow the recommendations in https://github.com/Azure/azure-quickstart-templates/blob/master/1-CONTRIBUTION-GUIDE/best-practices.md #456
- Not getting any completion for subscription().xxx #526
- autocomplete list for child resources should be filtered based on the parent #350
- autocomplete list for apiVersions on child resources is empty #351
- Null ref exception in validation with empty doc or doc containing only a comment
- Add space after colon with IntelliSense #460
- "Error loading Schemas" #536
- Added new snippets for subscription, management group and tenant deployments scaffolding (
arm!s
,arm!mg
andarm!t
) #449
- An error in loading ARM schemas from 2014 Preview #438
- Fallback on cached schemas on Linux and MacOS
- arm! and armp! snippets are using old $schema (thanks Nils Hedström @nilshedstrom!) #432
- Fixed icons for "Functions" entry in treeview (thanks Nils Hedström @nilshedstrom!) #427
- Assertion Failed when opening ARM Templates #441
- Add optional customer survey
- Updated web-app and web-app-deploy schema to 2018-11-01 #451
- "Format Document" and schema validation don't work against unsaved ARM templates #464
- Error downloading dotnet - VERSION_ID: unbound variable #422
- Engineering improvements
- Cannot install extension with "'" in username/users path #356
- Error updating $schema if editor no longer has focus #389
- Should only ask once per vscode session to upgrade $schema if Not Now chosen #391
- We shouldn't allow renaming built-in functions #385
- Update API Version on Nested Deployment Snippet #402
- Improve diagnostics for dotnet acquisition failures
- Added current schemas as cache in case schemas fail to download
- Intellisense support for additional runtime functions:
- listAuthKeys
- listClusterAdminCredential
- listCredential
- listQueryKeys
- listSyncFunctionTriggerStatus
- New "Reload Cached Schemas" command
- Added six new resource icons (plus functions icons see #421) for ARM Template Outline (thanks Nils Hedström @nilshedstrom!) #417
- Full template validation has been temporarily disabled until we can find a long-term solution for some bugs. This fixed:
- Template validation error for evaluated variables #380
- Validation fails using int() with parameter
- Validation error if you have a parameter of type "object" [regression from 0.7.0]
- Support for variable iteration ("variable COPY blocks") (ARM template variable copy block highlighting error #30), see https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-multiple#variable-iteration
- Added
azureResourceManagerTools.languageServer.dotnetExePath
setting to allow using an existing dotnet installation as a work-around for installation issues - Added expression metadata for the environment() function #344
- Do not validate schema against properties containing expressions
Added additional template validations(temporarily disabled in 0.8.2)Language expression evaluationDependency checksTemplate function checks
- Support for all root-level Azure schemas
- Completion for $schema now shows only root-level schemas
- Query user to update to latest schema #368
- Can be completely disabled via
azureResourceManagerTools.checkForLatestSchema
setting
- Can be completely disabled via
- Recognize deployment scope from the schema
- .../deploymentTemplate.json# - resource group deployment
- .../subscriptionDeploymentTemplate.json# - subscription deployment
- .../managementGroupDeploymentTemplate.json# - management group deployment
- .../tenantDeploymentTemplate.json# - tenant deployment
- Completion provider for ARM resource type names and apiVersions
- Fixed message "Exactly 1 match required, but found more than 1" which appears in some scenarios.
- Greatly improved schema errors and completion
- 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 now 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
- 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
- Note: The Azure schemas (which are read and interpreted by this extension) are undergoing continual improvement
- Full support for user-defined template functions #122. See Azure documentation.
- Find References (namespaces, user functions, user function parameters)
- Go to Definition
- Expression completion
- Parameter count validation
- Rename user function parameters
- Hover information
- Signature help
- Added basic snippet support. This makes Sam Cogan's Azure Resource Manager Snippets extension no longer necessary when using this extension. If you have snippet suggestions, you can add them to our repo.
- Hover information for JSON properties (outside of expressions)
Fewer false positivesWe now allow string values to be automatically coerced to non-string types as appropriate (e.g., "false" can be used in place of false), as the ARM backend allowsWe now allow non-string values to be automatically coerced to string as appropriate (e.g. false can be used in place of "false")(This change was reverted in favor of providing a clearer error message.)
- Add Find References for built-in template functions (e.g. click on "add" in an expression then right-click -> Find All References)
- Language server using lots of memory #324
- Colorization of parameters and variables should be case-insensitive #298
- Improved description for uniqueString #309
- Updated dotnet core install scripts to latest versions from https://dot.net/v1/dotnet-install.sh and https://dot.net/v1/dotnet-install.ps1
- Lookup of object variable property names is now correctly case-insensitive
- JSON keys such as "Parameters" are now correctly case-insensitive
- Azure Resource Manager Template Server crashed on MacOS #332 - ~/.local/share folder will now be created if necessary
- Added "(ARM)" to extension name (to "Azure Resource Manager (ARM) Tools" from "Azure Resource Manager Tools") for better discoverability
- Enabled strict null checking
- Lots of other code improvements
- 0.7.0 contains the first release of a new language service that we are creating specifically for Azure Resource Manager deployment template files. Up to this point, the extension has been built on top of the built-in VS Code JSON language server. This has caused some problems, including:
- Deployment templates allow comments, unlike standard JSON files
- Deployment templates allow multi-line strings
- Deployment templates use case-insensitive properties
- Deployment templates have looser type rules, allowing substitutions such as "true" and "false" instead of true and false
- The large schema files published for Azure resources cause poor validation performance
- The errors provided by standard JSON validation frequently provide poor suggestions for fixing (due to lack of knowledge of Azure Resource Manager-specific properties such as resource name and apiVersion)
The new language server aims to provide a better experience for deployment template creation and editing by alleviating many of the problems above. This version addresses points 1-3 above (see #fixed section). We intend to alleviate more of these problems in upcoming versions. In addition, we are considering other improvements to the experience, such as:
- Snippets
- User-defined functions support
- Copy loops support
If you would like to suggest additional features, or for other comments or problems, please enter a new issue at our public repo.
- Comments are now supported (
//
and/* */
styles) - Multi-line strings are now supported
- Schema validation no longer reports false positives because of incorrectly-cased properties Examples:
"parameters": {
"dnsLabelPrefix": {
"type": "String", << No longer flagged as incorrect
"resources": [
{
"type": "microsoft.network/networkInterfaces", << No longer flagged as incorrect
- Expressions in property names are not colorized #225
- Intellisense completion for parameter object properties defined inside a defaultValue #124
- Parameters color not correct if whitespace separates param name from parentheses #239
- Does not correctly handle colorization when a string starts with a bracket but does not end with a bracket #250
- Changed grammar scopes from '.json.arm' to '.json.arm-template' and '.tle.arm' to '.tle.arm-template'
- Expressions inside strings are now colorized
- Support subscription deployment templates #188
- Random notifications with "documentColumnIndex cannot be greater than the line's maximum index" #193
- Missing functions added:
- Support escaped apostrophe in strings #199
- Extension 'msazurermtools.azurerm-vscode-tools' uses a document selector without scheme #94
- Update dev readme #220
- Extension does not load in older vscode versions:
- Changed view title from "JSON OUTLINE" to "ARM TEMPLATE OUTLINE" #145
- Add "Report Issue" button directly to error messages
- Improved start-up and installation performance
- Rename variable/parameter definition doesn't work if you don't rename double quotes #63
- Added
listAccountSas
#125 - Added
listAdminKeys
(on SearchService) andlistServiceSas
(on Storage) #128 - Updated text on
listKeys
to reflect 2016 and later apiVersion changes #128 - Allow for 1..n args on
and
andor
#159 - Better handle asynchronous errors #169
- Added support for JSONC
- Improved labeling in JSON outline, similar to Visual Studio
- Use displayName tag for label of resources when available
- Shorten labels when possible (e.g. parameters['abc'] -> <abc>)
- Engineering improvements (tests, lint, telemetry)
- Bug fixes:
- Unhandled exception: Cannot read property 'catch' of null inside non-template JSON files
- Incorrect number of parameters is not detected if function name differs in case
- reference TLE signature intellisense out of date
- CopyIndex with 2 arguments is considered an error
- Unrecognized function name 'listCallbackUrl'
- listSecrets and generic list* functions not recognized
- listPackage function metadata is missing a description
- Add JSON outline for ARM depolyment templates
- Add support for guid TLE
- Bug fixes
- Add support for if, and, or, not and json TLEs
- Bug fix for autocompletion
- Add new TLE function metadata
- Update dependencies versions
- Bug fixes
- Bug fixes
- Removed Resources link to License
- Add resourceGroup() properties
- Add subscription() properties
- Add signature help for TLE function parameters
- Add find all references (Shift + F12) for variables and parameters
- Add rename all references (F2) for variables and parameters
- Add error for reference() function usage in variable definition
- Add error for incorrect number of arguments in TLE functions
- Add warning for unused parameters
- Add warning for unused variables
- Add IntelliSense for properties of references to variables that are objects
- Add Go to Definition for parameter and variable references
- Add Peek for variable and parameter definitions
- Various bug fixes and improved telemetry
- Add user survey prompt and make parameter and variable references case-insensitive
- Fix function, parameter, and variable IntelliSense
- Initial release