Prerequisites
Summary
directives.version always compares against 3.2.0, whatever dsc build is running. On dsc 3.3.0, pinning '=3.3.0' fails and pinning '=3.2.0' passes. 3.4.0-preview.1 behaves the same way.
In practice you can't require anything newer than 3.2.0 with the directive, and an upper bound such as '<3.3.0' is accepted by 3.3.0 and 3.4.0-preview.1.
The check in validate_config parses env!("CARGO_PKG_VERSION"), and inside dsc-lib that resolves to dsc-lib's own version (mod.rs L1299-L1301 at v3.3.0). lib/dsc-lib/Cargo.toml is still 3.2.0 on main, while dsc/Cargo.toml is 3.4.0-preview.1. The metadata code in the same file uses self.context.dsc_version (L1253-L1257), so the directive check could probably use that as well. The existing tests in dsc/tests/dsc_version.tests.ps1 use =999.0.0 and >=3.1, and both give the same result with 3.2.0 or 3.3.0, so they don't catch this.
Steps to reproduce
-
Save this as repro.dsc.config.yaml:
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
directives:
version: '=3.3.0'
resources:
- name: os
type: Microsoft/OSInfo
properties: {}
-
Run it with dsc 3.3.0:
dsc --version
dsc config test --file ./repro.dsc.config.yaml
-
Change the directive to '=3.2.0' and run dsc config test again.
Expected behavior
PS> dsc --version
dsc 3.3.0
# version: '=3.3.0'
exit code 0, test results for the OSInfo instance
# version: '=3.2.0'
ERROR Error: Validation: Configuration requires DSC version '=3.2.0', but the current version is '3.3.0'
exit code 2
Actual behavior
PS> dsc --version
dsc 3.3.0
# version: '=3.3.0'
ERROR Error: Validation: Configuration requires DSC version '=3.3.0', but the current version is '3.2.0'
exit code 2
# version: '=3.2.0'
exit code 0, and the output reports executionInformation.version: 3.3.0
Same document, other requirements:
directives.version |
dsc 3.3.0 |
dsc 3.4.0-preview.1 |
=<running version> |
exit 2 |
exit 2 |
=3.2.0 |
exit 0 |
exit 0 |
<3.3.0 |
exit 0 |
exit 0 |
>=3.3.0 |
exit 2 |
not run |
Error details
2026-10-04T10:25:47.660394Z ERROR Error: Validation: Configuration requires DSC version '=3.3.0', but the current version is '3.2.0'
Environment data
Name Value
---- -----
PSVersion 5.1.26100.9444
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.26100.9444
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Windows 11 Pro for Workstations 25H2, build 26200. dsc 3.3.0 installed from the release msixbundle; 3.4.0-preview.1 run from the release zip.
Version
3.3.0 (also reproduced on 3.4.0-preview.1)
Visuals
No response
Prerequisites
Summary
directives.versionalways compares against 3.2.0, whatever dsc build is running. On dsc 3.3.0, pinning'=3.3.0'fails and pinning'=3.2.0'passes. 3.4.0-preview.1 behaves the same way.In practice you can't require anything newer than 3.2.0 with the directive, and an upper bound such as
'<3.3.0'is accepted by 3.3.0 and 3.4.0-preview.1.The check in
validate_configparsesenv!("CARGO_PKG_VERSION"), and inside dsc-lib that resolves to dsc-lib's own version (mod.rs L1299-L1301 at v3.3.0).lib/dsc-lib/Cargo.tomlis still3.2.0on main, whiledsc/Cargo.tomlis3.4.0-preview.1. The metadata code in the same file usesself.context.dsc_version(L1253-L1257), so the directive check could probably use that as well. The existing tests indsc/tests/dsc_version.tests.ps1use=999.0.0and>=3.1, and both give the same result with 3.2.0 or 3.3.0, so they don't catch this.Steps to reproduce
Save this as
repro.dsc.config.yaml:Run it with dsc 3.3.0:
dsc --version dsc config test --file ./repro.dsc.config.yamlChange the directive to
'=3.2.0'and rundsc config testagain.Expected behavior
Actual behavior
Same document, other requirements:
directives.version=<running version>=3.2.0<3.3.0>=3.3.0Error details
2026-10-04T10:25:47.660394Z ERROR Error: Validation: Configuration requires DSC version '=3.3.0', but the current version is '3.2.0'Environment data
Windows 11 Pro for Workstations 25H2, build 26200. dsc 3.3.0 installed from the release msixbundle; 3.4.0-preview.1 run from the release zip.
Version
3.3.0 (also reproduced on 3.4.0-preview.1)
Visuals
No response