Text $(OutDir) seem to cause problems for some actions

The action Team Foundation Latest Version Number was broken. This was quicly fixed, so I don't have a problem at the moment. However, while creating a workaround, I came across some other issues. This is one of them.

I was running an action Execute Program, which did exactly what Team Foundation Latest Version Number was supposed to do. You only need to know that it is a command that outputs text, and the output was stored in a variable Output.

When running action List Iterator with content %Output% I got the following log lines:
  Setting items...
  Error expanding Item List : Variable : OutDir - does not exist!
  Error while searching for items : Failed to expand list of items.

I then inserted another action Write to Text File immediately after Execute Program so I could study the content of variable Output, to see if that mysterious "OutDir" was within. And this unexpectedly resulted in this log entry for Write to Text File:
  Error expanding Content : Variable : OutDir - does not exist!

I then studied the output of the Execute Program in the log, and eventually found this line in the output of the command:

49     patrik:2   09.02.2010   Attemt  with adding extra path $(OutDir) to

Now, there's the mysterious OutDir it seems to me.

Is this a bug? Is there some processing going on that shouldn't be going on? Is there some option I overlooked? In my opinion these actions shouldn't try to parse variable contents just like that, especially if there is no option to prevent it.

I solved this by adding a workaround to my workaround, which simply replaces all "$" with "X" in variable Output before I go on to parse its lines inside the List Iterator loop.

 

It’s not a bug, variables recursive expand their content by default :

http://help.finalbuilder.com/variable_evaluation_and_recurs.htm

$(OutDir) matches an alternate variable reference syntax so the exansion code deems it to be a variable.

The simple resolution is to use the ! symbol to disable recursive expansion on a variable :

e.g. %!Output%


Aha! I guess I need to read through all the help doc. Thanks.