|
1 | 1 | ---
|
2 |
| -title: Using statement |
3 |
| -description: Learn how to use the `using` statement in Bicep. |
| 2 | +title: Using and using none statements |
| 3 | +description: Learn how to use the `using` and `using none` statements in Bicep. |
4 | 4 | ms.topic: conceptual
|
5 |
| -ms.date: 01/10/2025 |
| 5 | +ms.date: 06/30/2025 |
6 | 6 | ms.custom: devx-track-bicep
|
7 | 7 | ---
|
8 | 8 |
|
9 |
| -# Using statement |
| 9 | +# Using and using none statements |
10 | 10 |
|
11 |
| -The `using` statement in [Bicep parameters files](./parameter-files.md) ties the file to a [Bicep file](./file.md), a [JSON Azure Resource Manager template (ARM template)](../templates/syntax.md), a [Bicep module](./modules.md), or a [template spec](./template-specs.md). A `using` declaration must be present in all Bicep parameters files. |
| 11 | +A `using` or a `using none` declaration must be present in all Bicep parameters files. |
| 12 | + |
| 13 | +A Bicep parameter file typically uses a `using` statement to tie the file to a [Bicep file](./file.md), a [JSON Azure Resource Manager template (ARM template)](../templates/syntax.md), a [Bicep module](./modules.md), or a [template spec](./template-specs.md). This linkage allows the Bicep language server and compiler to validate the parameter file—checking for correct names, types, and required values based on the template’s inputs. |
| 14 | + |
| 15 | +In contrast, the `using none` statement explicitly indicates that the parameter file isn't tied to any particular template at compile time. This means the parameters aren't validated against a specific template and are instead intended for more general use—such as being consumed by external tools or serving as shared, reusable parameter sets. |
12 | 16 |
|
13 | 17 | > [!NOTE]
|
14 |
| -> The Bicep parameters file is only supported in the [Bicep CLI](./install.md#visual-studio-code-and-bicep-extension) version 0.18.4 or later, [Azure CLI](/cli/azure/install-azure-cli) version 2.47.0 or later, and [Azure PowerShell](/powershell/azure/install-azure-powershell) version 9.7.1 or later. |
| 18 | +> Bicep parameters files are supported only in [Bicep CLI version 0.18.4](https://github.com/Azure/bicep/releases/tag/v0.18.4) or later, [Azure CLI](/cli/azure/install-azure-cli) version 2.47.0 or later, and [Azure PowerShell](/powershell/azure/install-azure-powershell) version 9.7.1 or later. The `using none` feature is supported in [Bicep CLI version 0.31.0](https://github.com/Azure/bicep/releases/tag/v0.31.92) or later. |
15 | 19 | >
|
16 |
| -> To use the statement with JSON ARM templates, Bicep modules, and template specs, you need to have [Bicep CLI](./install.md#visual-studio-code-and-bicep-extension) version 0.22.6 or later and [Azure CLI](/cli/azure/install-azure-cli) version 2.53.0 or later. |
| 20 | +> To use the statement with JSON ARM templates, Bicep modules, and template specs, you need to have [Bicep CLI version 0.22.6](https://github.com/Azure/bicep/releases/tag/v0.22.6) or later and [Azure CLI](/cli/azure/install-azure-cli) version 2.53.0 or later. |
17 | 21 |
|
18 |
| -## Syntax |
| 22 | +## The using statement |
| 23 | + |
| 24 | +The syntax of the `using` statement: |
19 | 25 |
|
20 | 26 | - To use Bicep files:
|
21 | 27 |
|
@@ -91,6 +97,40 @@ The `using` statement in [Bicep parameters files](./parameter-files.md) ties the
|
91 | 97 | using 'ts/myStorage:storageSpec:1.0'
|
92 | 98 | ```
|
93 | 99 |
|
| 100 | +## The using none statement |
| 101 | + |
| 102 | +The `using none` statement in a Bicep parameters file (.bicepparam) indicates that the file isn't tied to a specific Bicep template during authoring or compilation. This decouples the parameter file from a particular template, enabling greater flexibility in how parameters are defined and used across deployments. |
| 103 | + |
| 104 | +The syntax of the `using none` statement: |
| 105 | + |
| 106 | +```bicep |
| 107 | +using none |
| 108 | +``` |
| 109 | + |
| 110 | +This statement is placed at the beginning of a Bicep parameters file to signal that no specific template is referenced. |
| 111 | + |
| 112 | +The primary benefit of `using none` in Bicep lies in scenarios where parameter files are generalized, shared, or dynamically integrated with templates. Common use cases include: |
| 113 | + |
| 114 | +- **Centralized Parameter Repositories** |
| 115 | + |
| 116 | + Organizations often maintain standard parameter values—such as default regions, naming conventions, or global tags—used across multiple Bicep deployments. A Bicep parameters file with using none can act as a central store for these shared values, improving consistency and minimizing duplication. These parameters can then be programmatically merged with template-specific values at deployment time. |
| 117 | + |
| 118 | + For example, a shared Bicep parameters file might define: |
| 119 | + |
| 120 | + ```bicepparam |
| 121 | + using none |
| 122 | + |
| 123 | + param location = 'westus2' |
| 124 | + param environmentTag = 'production' |
| 125 | + param projectName = 'myApp' |
| 126 | + ``` |
| 127 | + |
| 128 | +- **Dynamic Generation and Runtime Integration** |
| 129 | + |
| 130 | + In CI/CD pipelines or automation scripts, parameter files may be created on-the-fly or associated with templates at runtime. By omitting a fixed template reference, `using none` allows these files to remain flexible and adaptable to different deployment contexts. |
| 131 | + |
| 132 | +When `using none` is specified in a Bicep parameter file, the compiler doesn't validate the parameters against a specific Bicep template, meaning no compile-time warnings or errors are raised for mismatched names or types due to the absence of a linked template. However, this decoupling applies only during authoring and compilation—at deployment time, Azure Resource Manager (ARM) still requires both a Bicep template and a parameter file. The ARM engine performs validation during deployment by resolving the parameters in the file against those defined in the target template. |
| 133 | + |
94 | 134 | ## Next steps
|
95 | 135 |
|
96 | 136 | - Learn about Bicep parameters files in [Create parameters files for Bicep deployment](./parameter-files.md).
|
|
0 commit comments