Today I've found something strange

Imagine I have these arguments

DMLTxtFilePath
monitor CreateScriptsFolder

CreateScriptsFolder
monitor MyDatabaseFolderName

MyDatabaseFolderName
monitor DatabaseFolderName

I'm having this exception

Microsoft.Practices.RecipeFramework.ActionExecutionException: An exception occurred during the binding of reference or execution of recipe Register. Error was: Action Register failed to execute:
Package configuration is invalid..
You can remove the reference to this recipe through the Guidance Package Manager. ---> System.Configuration.ConfigurationException: Package configuration is invalid. ---> System.Configuration.ConfigurationErrorsException: There is a circular dependency in value providers monitored argument. Offending monitoring call chains are:
DMLTxtFilePath->CreateScriptsFolder->MyDatabaseFolderName->DatabaseFolderName

at Microsoft.Practices.RecipeFramework.Configuration.RecipeValidator.CheckArgumentClosure(Recipe recipe)
at Microsoft.Practices.RecipeFramework.Configuration.RecipeValidator.Validate(Recipe recipe)
at Microsoft.Practices.RecipeFramework.GuidancePackage.<ReadConfiguration>b__0(Recipe recipe)
at Microsoft.Practices.RecipeFramework.Configuration.Serialization.GuidancePackageReader.Read21_Recipe(Boolean isNullable, Boolean checkType)
at Microsoft.Practices.RecipeFramework.Configuration.Serialization.GuidancePackageSerializer.BaseReader.Read23_GuidancePackage(Boolean isNullable, Boolean checkType)
at Microsoft.Practices.RecipeFramework.Configuration.Serialization.GuidancePackageReader.Read23_GuidancePackage(Boolean isNullable, Boolean checkType)
at Microsoft.Practices.RecipeFramework.Configuration.Serialization.GuidancePackageSerializer.BaseReader.Read24_GuidancePackage()
at Microsoft.Practices.RecipeFramework.Configuration.Serialization.GuidancePackageSerializer.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
--- End of inner exception stack trace ---
at Microsoft.Practices.RecipeFramework.GuidancePackage.ReadConfiguration(XmlReader configReader)
at Microsoft.Practices.RecipeFramework.GuidancePackage.ReadConfiguration(String configFile)
at Microsoft.Practices.RecipeFramework.MetaGuidancePackage.Registration.PackageRegistationAction.Execute()
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName, Dictionary`2 inputValues)
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName)
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionCoordinationService.Run(Dictionary`2 declaredActions, XmlElement coordinationData)
at Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
--- End of inner exception stack trace ---
at Microsoft.Practices.RecipeFramework.Recipe.UndoExecutedActionsAndRethrow(Exception ex)
at Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
at Microsoft.Practices.RecipeFramework.Recipe.Execute(Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(String recipe, IAssetReference reference, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(IAssetReference reference)
at Microsoft.Practices.RecipeFramework.RecipeReference.OnExecute()
at Microsoft.Practices.RecipeFramework.AssetReference.Execute()
at Microsoft.Practices.RecipeFramework.VisualStudio.RecipeMenuCommand.OnExec()
at Microsoft.Practices.RecipeFramework.VisualStudio.AssetMenuCommand.Invoke()

I found that the problem was with this two arguments

Argument 1: DatabaseFolderName
Argument 2: MyDatabaseFolderName


Because Argument 2 ends with the same name as Argument 1. If I change the name of Argument 1 to DbFolderName I don't have the exception.

Does any one know why the arguments validate just the end of the name and not the entire name when checking for circular dependecies????