Skip to content

bicep crash trying to implement output feature in DesiredStateConfiguration #17670

@SteveL-MSFT

Description

@SteveL-MSFT

Bicep version

Bicep CLI version 0.36.177 (09988bb4ae)

Describe the bug
Stack trace indicates a problem trying to create the resourceId for DSC

To Reproduce

// This is a very simple example Bicep file for testing

targetScope = 'desiredStateConfiguration'

// use workaround where Bicep currently requires version in date format
resource echo 'Microsoft.DSC.Debug/Echo@2025-01-01' = {
  name: 'exampleEcho'
  properties: {
    output: 'Hello, world!'
  }
}

output exampleOutput string = echo.properties.output

Additional context

WARNING: The following experimental Bicep features have been enabled: Enable defining Desired State Configuration documents. Experimental features should be enabled for testing purposes only, as there are no guarantees about the quality or stability of these features. Do not enable these settings for any production usage, or your production environment may be subject to breaking.
/Users/steve/repos/DSC/dsc/examples/hello_world.dsc.bicep(6,15) : Warning BCP081: Resource type "Microsoft.DSC.Debug/Echo@2025-01-01" does not have types available. Bicep is unable to validate resource properties prior to deployment, but this will not block the resource from being deployed. [https://aka.ms/bicep/core-diagnostics#BCP081]
Unhandled exception. System.InvalidOperationException: Cannot format resourceId for scope DesiredStateConfiguration
   at Bicep.Core.Emit.ScopeHelper.FormatFullyQualifiedResourceId(EmitterContext context, ExpressionConverter converter, ScopeData scopeData, String fullyQualifiedType, IEnumerable`1 nameSegments)
   at Bicep.Core.Emit.ExpressionConverter.GetFullyQualifiedResourceId(ResourceMetadata resource)
   at Bicep.Core.Emit.ExpressionConverter.GetReferenceExpression(ResourceMetadata resource, IndexReplacementContext indexContext, Boolean full)
   at Bicep.Core.Emit.ExpressionConverter.ConvertResourcePropertyAccess(ResourceReferenceExpression reference, PropertyAccessExpression expression)
   at Bicep.Core.Emit.ExpressionConverter.ConvertPropertyAccessExpression(PropertyAccessExpression exp)
   at Bicep.Core.Emit.ExpressionConverter.ConvertExpression(Expression expression)
   at Bicep.Core.Emit.ExpressionConverter.ConvertAccessExpression(AccessExpression expression)
   at Bicep.Core.Emit.ExpressionConverter.ConvertPropertyAccessExpression(PropertyAccessExpression exp)
   at Bicep.Core.Emit.ExpressionConverter.ConvertExpression(Expression expression)
   at Bicep.Core.Emit.ExpressionEmitter.EmitLanguageExpression(Expression expression)
   at Bicep.Core.Emit.ExpressionEmitter.EmitExpression(Expression expression)
   at Bicep.Core.Emit.ExpressionEmitter.<>c__DisplayClass24_0.<EmitProperty>b__0()
   at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WritePropertyWithPosition(IPositionable keyPosition, String name, Action valueFunc)
   at Bicep.Core.Emit.ExpressionEmitter.EmitPropertyInternal(LanguageExpression expressionKey, Action valueFunc, IPositionable location, Boolean skipCopyCheck)
   at Bicep.Core.Emit.ExpressionEmitter.EmitProperty(Expression name, Expression expression)
   at Bicep.Core.Emit.ExpressionEmitter.EmitProperty(String name, Expression expression)
   at Bicep.Core.Emit.TemplateWriter.<>c__DisplayClass79_0.<EmitOutput>b__0()
   at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WriteObjectWithPosition(IPositionable sourcePosition, Action propertiesFunc)
   at Bicep.Core.Emit.ExpressionEmitter.EmitObject(Action writePropertiesFunc, IPositionable position)
   at Bicep.Core.Emit.ExpressionEmitter.<>c__DisplayClass34_0.<EmitObjectProperty>b__0()
   at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WritePropertyWithPosition(IPositionable keyPosition, String name, Action valueFunc)
   at Bicep.Core.Emit.ExpressionEmitter.EmitProperty(String propertyName, Action writeValueFunc, IPositionable position)
   at Bicep.Core.Emit.ExpressionEmitter.EmitObjectProperty(String propertyName, Action writePropertiesFunc, IPositionable position)
   at Bicep.Core.Emit.TemplateWriter.EmitOutput(ExpressionEmitter emitter, DeclaredOutputExpression output)
   at Bicep.Core.Emit.TemplateWriter.<>c__DisplayClass78_0.<EmitOutputsIfPresent>b__0()
   at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WriteObjectWithPosition(IPositionable sourcePosition, Action propertiesFunc)
   at Bicep.Core.Emit.ExpressionEmitter.EmitObject(Action writePropertiesFunc, IPositionable position)
   at Bicep.Core.Emit.ExpressionEmitter.<>c__DisplayClass34_0.<EmitObjectProperty>b__0()
   at Bicep.Core.Emit.PositionTrackingJsonTextWriter.WritePropertyWithPosition(IPositionable keyPosition, String name, Action valueFunc)
   at Bicep.Core.Emit.ExpressionEmitter.EmitProperty(String propertyName, Action writeValueFunc, IPositionable position)
   at Bicep.Core.Emit.ExpressionEmitter.EmitObjectProperty(String propertyName, Action writePropertiesFunc, IPositionable position)
   at Bicep.Core.Emit.TemplateWriter.EmitOutputsIfPresent(ExpressionEmitter emitter, ImmutableArray`1 outputs)
   at Bicep.Core.Emit.TemplateWriter.GenerateTemplateWithoutHash(PositionTrackingJsonTextWriter jsonWriter)
   at Bicep.Core.Emit.TemplateWriter.Write(SourceAwareJsonTextWriter writer)
   at Bicep.Core.Emit.TemplateEmitter.<>c__DisplayClass8_0.<Emit>b__0()
   at Bicep.Core.Emit.TemplateEmitter.EmitOrFail(Func`1 write)
   at Bicep.Core.Emit.TemplateEmitter.Emit(TextWriter textWriter)
   at Bicep.Core.Emit.CompilationEmitter.Template(SemanticModel model)
   at Bicep.Core.Emit.CompilationEmitter.Template()
   at Bicep.Cli.Services.OutputWriter.TemplateToStdout(Compilation compilation)
   at Bicep.Cli.Commands.BuildCommand.Compile(Uri inputUri, Uri outputUri, Boolean noRestore, Nullable`1 diagnosticsFormat, Boolean outputToStdOut)
   at Bicep.Cli.Commands.BuildCommand.RunAsync(BuildArguments args)
   at Bicep.Cli.Program.RunAsync(String[] args, CancellationToken cancellationToken)
   at Bicep.Cli.Program.<>c__DisplayClass3_0.<<Main>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Bicep.Cli.Program.RunWithCancellationAsync(Func`2 runFunc)
   at Bicep.Cli.Program.Main(String[] args)
   at Bicep.Cli.Program.<Main>(String[] args)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions