Closed
Description
[ORIGINATES FROM https://github.com/dotnet/templates/issues/723]
dotnet new command never finishes and seems to fall in an infinite loop during parameter condition evaluation with net8 preview 2.
The same template works properly with latest net7 builds.
Steps to repro
Install .NET 8 Preview 2
dotnet new install Uno.Templates
dotnet new unoapp -o testapp
The command fails to finish and is stuck in the following expression (original template source):
this Cannot obtain value of the local variable or argument because it is not available at this instruction pointer, possibly because it has been optimized away. Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro
environmentSettings {Microsoft.TemplateEngine.Edge.EngineEnvironmentSettings} Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings {Microsoft.TemplateEngine.Edge.EngineEnvironmentSettings}
variableCollection {Microsoft.TemplateEngine.Orchestrator.RunnableProjects.ParameterBasedVariableCollection} Microsoft.TemplateEngine.Abstractions.IVariableCollection {Microsoft.TemplateEngine.Orchestrator.RunnableProjects.ParameterBasedVariableCollection}
config {Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacroConfig} Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacroConfig
Type "evaluate" string
VariableName "useFrameNav" string
Static members
Non-Public members
Condition "!useDependencyInjection || navigationEvaluator == 'blank'" string
DataType "bool" string
Evaluator {Method = {Boolean EvaluateFromString(Microsoft.Extensions.Logging.ILogger, System.String, Microsoft.TemplateEngine.Abstractions.IVariableCollection)}} Microsoft.TemplateEngine.Orchestrator.RunnableProjects.ConditionStringEvaluator
Macro {Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro} Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro
At the following stack:
Microsoft.TemplateEngine.Core.dll!Microsoft.TemplateEngine.Core.Expressions.ScopeBuilder<Microsoft.TemplateEngine.Core.Expressions.Operators, Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition.Tokens>.Build(ref int bufferLength, ref int bufferPosition, System.Action<System.Collections.Generic.IReadOnlyList<byte>> onFault, System.Collections.Generic.HashSet<string> referencedVariablesKeys) Unknown
Microsoft.TemplateEngine.Core.dll!Microsoft.TemplateEngine.Core.Expressions.Shared.SharedEvaluatorDefinition<Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition, Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition.Tokens>.Evaluate(Microsoft.TemplateEngine.Core.Contracts.IProcessorState processor, ref int bufferLength, ref int currentBufferPosition, out string faultedMessage, System.Collections.Generic.HashSet<string> referencedVariablesKeys, bool shouldProcessWholeBuffer) Unknown
Microsoft.TemplateEngine.Core.dll!Microsoft.TemplateEngine.Core.Expressions.Shared.SharedEvaluatorDefinition<Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition, Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition.Tokens>.EvaluateFromString(Microsoft.Extensions.Logging.ILogger logger, string text, Microsoft.TemplateEngine.Abstractions.IVariableCollection variables, out string faultedMessage, System.Collections.Generic.HashSet<string> referencedVariablesKeys) Unknown
Microsoft.TemplateEngine.Core.dll!Microsoft.TemplateEngine.Core.Expressions.Shared.SharedEvaluatorDefinition<Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition, Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition.Tokens>.EvaluateFromString(Microsoft.Extensions.Logging.ILogger logger, string text, Microsoft.TemplateEngine.Abstractions.IVariableCollection variables) Unknown
> Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll!Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro.Evaluate(Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Abstractions.IVariableCollection variableCollection, Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacroConfig config) Unknown
Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll!Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.BaseMacroConfig<Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro, Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacroConfig>.Evaluate(Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Abstractions.IVariableCollection vars) Unknown
Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll!Microsoft.TemplateEngine.Orchestrator.RunnableProjects.MacroProcessor.ProcessMacros(Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Orchestrator.RunnableProjects.GlobalRunConfig runConfig, Microsoft.TemplateEngine.Abstractions.IVariableCollection variables) Unknown
Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll!Microsoft.TemplateEngine.Orchestrator.RunnableProjects.RunnableProjectGenerator.Microsoft.TemplateEngine.Abstractions.IGenerator.GetCreationEffectsAsync(Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Abstractions.ITemplate templateData, Microsoft.TemplateEngine.Abstractions.Parameters.IParameterSetData parameters, string targetDirectory, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.TemplateEngine.Edge.dll!Microsoft.TemplateEngine.Edge.Template.TemplateCreator.InstantiateAsync(Microsoft.TemplateEngine.Abstractions.ITemplateInfo templateInfo, string name, string fallbackName, string outputPath, Microsoft.TemplateEngine.Edge.Template.InputDataSet inputParameters, bool forceCreation, string baselineName, bool dryRun, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.TemplateInvoker.CreateTemplateAsync(Microsoft.TemplateEngine.Cli.Commands.TemplateCommandArgs templateArgs, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.TemplateInvoker.InvokeTemplateAsync(Microsoft.TemplateEngine.Cli.Commands.TemplateCommandArgs templateArgs, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.TemplateCommand.InvokeAsync(System.CommandLine.ParseResult parseResult, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.InstantiateCommand.HandleTemplateInstantationAsync(Microsoft.TemplateEngine.Cli.Commands.InstantiateCommandArgs args, Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Edge.Settings.TemplatePackageManager templatePackageManager, Microsoft.TemplateEngine.Cli.TemplateGroup templateGroup, System.Threading.CancellationToken cancellationToken) Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.InstantiateCommand.ExecuteIntAsync(Microsoft.TemplateEngine.Cli.Commands.InstantiateCommandArgs instantiateArgs, Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Edge.Settings.TemplatePackageManager templatePackageManager, System.CommandLine.Invocation.InvocationContext context) Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.BaseCommand<Microsoft.TemplateEngine.Cli.Commands.NewCommandArgs>.InvokeAsync(System.CommandLine.Invocation.InvocationContext context) Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.BaseCommand<System.__Canon>.Invoke(System.CommandLine.Invocation.InvocationContext context) Unknown
System.CommandLine.dll!System.CommandLine.Invocation.InvocationPipeline.BuildInvocationChain.AnonymousMethod__0(System.CommandLine.Invocation.InvocationContext invocationContext, System.Func<System.CommandLine.Invocation.InvocationContext, System.Threading.Tasks.Task> _) Unknown
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment