Re: [NAnt-users] Nested variables
Hello, I'm working on converting an Ant script to Nant and have ran into an issue with joining several variables together in Nant. Below is the original Ant script in which it pulls information from a properties file and uses the information to feed the build. The project starts by looping through build order (NETDLLS, App) and then uses that variable to prepend to the ProjectName to check out of StarTeam. Project.Build.Order=NETDLLs,App # Windows - .NET DLLs NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows - .NET DLLs NETDLLs.Label=201300722.20130508 ANT script: target name=build.project property name=ProjectName value=${buildProp.${project.Ord}.ProjectName}/ property name=ViewName value=${buildProp.${project.Ord}.ViewName}/ property name=Label value=${buildProp.${project.Ord}.Label}/ antcall target=checkoutModuleSrc inheritall=true/ Here is what I have come up with in Nant which doesn't seem to be working. NAnt script: target name=build.project property name=ProjectName value=${'properties.project.Ord'+'.ProjectName'}/ property name=ViewName value=${'properties.project.Ord'+'.ViewName'}/ property name=Label value=${'properties.project.Ord'+'.Label'}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ I assume based on your title nested variables you want to do something like this: property name=ProjectName value=${property::get-value('properties.project.Ord.ProjectName')}/ ? BOb Results of the script at the command line: checkoutModuleSrc: [exec] StarTeam 10.4 Command Line Interface, Build 10.4.8.36 [exec] Copyright (c) 2003-2008 Borland Software Corporation. All rights res erved. [exec] Using ini file: C:\Documents and Settings\All Users\Application Data \Borland\StarTeam\ConnectionManager.ini [exec] Project not found: properties.project.Ord.ProjectName I would appreciate any help you can provide. Thanks, -Doug Labout The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev ___ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users
Re: [NAnt-users] Nested variables
Hello, I'm working on converting an Ant script to Nant and have ran into an issue with joining several variables together in Nant. Below is the original Ant script in which it pulls information from a properties file and uses the information to feed the build. The project starts by looping through build order (NETDLLS, App) and then uses that variable to prepend to the ProjectName to check out of StarTeam. Project.Build.Order=NETDLLs,App # Windows - .NET DLLs NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows - .NET DLLs NETDLLs.Label=201300722.20130508 ANT script: target name=build.project property name=ProjectName value=${buildProp.${project.Ord}.ProjectName}/ property name=ViewName value=${buildProp.${project.Ord}.ViewName}/ property name=Label value=${buildProp.${project.Ord}.Label}/ antcall target=checkoutModuleSrc inheritall=true/ Here is what I have come up with in Nant which doesn't seem to be working. NAnt script: target name=build.project property name=ProjectName value=${'properties.project.Ord'+'.ProjectName'}/ What are you trying to do here? The value you are going to get in project name is: properties.project.Ord.ProjectName I assume that is not what you want? When you put something in an expression in quotes it is a string literal, it won't be evaluated. Are you trying to get the value of properties.project.Ord.ProjectName and put it into project name? I really don't understand your snippet here. Also, what line does that error occur on? BOb property name=ViewName value=${'properties.project.Ord'+'.ViewName'}/ property name=Label value=${'properties.project.Ord'+'.Label'}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ Results of the script at the command line: checkoutModuleSrc: [exec] StarTeam 10.4 Command Line Interface, Build 10.4.8.36 [exec] Copyright (c) 2003-2008 Borland Software Corporation. All rights res erved. [exec] Using ini file: C:\Documents and Settings\All Users\Application Data \Borland\StarTeam\ConnectionManager.ini [exec] Project not found: properties.project.Ord.ProjectName I would appreciate any help you can provide. Thanks, -Doug Labout The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev ___ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users
Re: [NAnt-users] Nested variables
Bob, You are correct in that I'm trying to put together a couple of variables. The build order is assigned to the variable ${properties.project.Ord}. I then append to the end of that variable the .ProjectName, .ViewName, and .Label and assign them to ${ProjectName}. I then pass $ProjectName to my starteam checkout. The trouble is that ${properties.project.Ord} returns as NETDLLS but when I want the variable ${NETDLLS.ProjectName} to be returned as NETDLLs.ProjectName=Windows - .NET DLLs it instead comes back as NETDLLS.ProjectName. StarTeam goes looking for a NETDLLS.ProjectName and of course can't find it and dies. Thanks for the help! Much appreciated! -Doug -Original Message- From: Bob Archer [mailto:bob.arc...@amsi.com] Sent: Monday, June 17, 2013 9:22 AM To: Labout, Douglas; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Hello, I'm working on converting an Ant script to Nant and have ran into an issue with joining several variables together in Nant. Below is the original Ant script in which it pulls information from a properties file and uses the information to feed the build. The project starts by looping through build order (NETDLLS, App) and then uses that variable to prepend to the ProjectName to check out of StarTeam. Project.Build.Order=NETDLLs,App # Windows - .NET DLLs NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows - .NET DLLs NETDLLs.Label=201300722.20130508 ANT script: target name=build.project property name=ProjectName value=${buildProp.${project.Ord}.ProjectName}/ property name=ViewName value=${buildProp.${project.Ord}.ViewName}/ property name=Label value=${buildProp.${project.Ord}.Label}/ antcall target=checkoutModuleSrc inheritall=true/ Here is what I have come up with in Nant which doesn't seem to be working. NAnt script: target name=build.project property name=ProjectName value=${'properties.project.Ord'+'.ProjectName'}/ property name=ViewName value=${'properties.project.Ord'+'.ViewName'}/ property name=Label value=${'properties.project.Ord'+'.Label'}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ I assume based on your title nested variables you want to do something like this: property name=ProjectName value=${property::get-value('properties.project.Ord.ProjectName')}/ ? BOb Results of the script at the command line: checkoutModuleSrc: [exec] StarTeam 10.4 Command Line Interface, Build 10.4.8.36 [exec] Copyright (c) 2003-2008 Borland Software Corporation. All rights res erved. [exec] Using ini file: C:\Documents and Settings\All Users\Application Data \Borland\StarTeam\ConnectionManager.ini [exec] Project not found: properties.project.Ord.ProjectName I would appreciate any help you can provide. Thanks, -Doug Labout The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev ___ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users
Re: [NAnt-users] Nested variables
Ok... I guess I'm still not understanding what is in each variable: You are correct in that I'm trying to put together a couple of variables. The build order is assigned to the variable ${properties.project.Ord}. I then What is the exact text in that variable? append to the end of that variable the .ProjectName, Is that a property, or a literal? What value is in .ProjectName (assuming that is a variable?) .ViewName, and .Label and assign them to ${ProjectName}. I then pass $ProjectName to my starteam checkout. Same questions... Are you trying to build a new variable name? So, when you say you want to append .ProjectName you mean the contents of that? If I knew what was in each variable in addition to the final value you expect in the variable, I could help you with more specific code. BOb The trouble is that ${properties.project.Ord} returns as NETDLLS but when I want the variable ${NETDLLS.ProjectName} to be returned as NETDLLs.ProjectName=Windows - .NET DLLs it instead comes back as NETDLLS.ProjectName. StarTeam goes looking for a NETDLLS.ProjectName and of course can't find it and dies. Thanks for the help! Much appreciated! -Doug -Original Message- From: Bob Archer [mailto:bob.arc...@amsi.com] Sent: Monday, June 17, 2013 9:22 AM To: Labout, Douglas; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Hello, I'm working on converting an Ant script to Nant and have ran into an issue with joining several variables together in Nant. Below is the original Ant script in which it pulls information from a properties file and uses the information to feed the build. The project starts by looping through build order (NETDLLS, App) and then uses that variable to prepend to the ProjectName to check out of StarTeam. Project.Build.Order=NETDLLs,App # Windows - .NET DLLs NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows - .NET DLLs NETDLLs.Label=201300722.20130508 ANT script: target name=build.project property name=ProjectName value=${buildProp.${project.Ord}.ProjectName}/ property name=ViewName value=${buildProp.${project.Ord}.ViewName}/ property name=Label value=${buildProp.${project.Ord}.Label}/ antcall target=checkoutModuleSrc inheritall=true/ Here is what I have come up with in Nant which doesn't seem to be working. NAnt script: target name=build.project property name=ProjectName value=${'properties.project.Ord'+'.ProjectName'}/ property name=ViewName value=${'properties.project.Ord'+'.ViewName'}/ property name=Label value=${'properties.project.Ord'+'.Label'}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ I assume based on your title nested variables you want to do something like this: property name=ProjectName value=${property::get- value('properties.project.Ord.ProjectName')}/ ? BOb Results of the script at the command line: checkoutModuleSrc: [exec] StarTeam 10.4 Command Line Interface, Build 10.4.8.36 [exec] Copyright (c) 2003-2008 Borland Software Corporation. All rights res erved. [exec] Using ini file: C:\Documents and Settings\All Users\Application Data \Borland\StarTeam\ConnectionManager.ini [exec] Project not found: properties.project.Ord.ProjectName I would appreciate any help you can provide. Thanks, -Doug Labout The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. -- This SF.net email is sponsored by Windows: Build for Windows Store.
Re: [NAnt-users] Nested variables
Hmm, Let's see if I can explain it better... Here is the properties file that contains all the components to be built and their associated views and labels. # Projects Build Order Project.Name=WCFServices Project.Build.Directory=C:\/VisualStudio\/ Project.Build.Order=NETComponents,NETDLLs,App Project.Deploy=C:\/VisualStudio\/\Windows - BuildScripts\/Deploy\/ # Windows - .NET Components NETComponents.ProjectName=Windows - .NET Components NETComponents.ViewName=Windows - .NET Components NETComponents.Label=201261654 # Windows - .NET DLLs NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows - .NET DLLs NETDLLs.Label=2013064494 # Windows - WCFServices_NewAccounts.DataAccess App.ProjectName=Windows - _WCFServices App.ViewName=Windows - _WCFServices App.Label=20781 I use loadproperties file=buildLabels.properties / to load the lines in the property file. Here is the loop that pulles build order: !-- The foreach bellow will loop through the list of projects in the Project.Build.Order in the buildLabels.properties -- foreach item=String in=${Project.Build.Order} delim=, property=properties.project.Ord call target=build.project/ /foreach Here is the build.project target: target name=build.project property name=ProjectName value=${ properties.project.Ord+'.ProjectName'}/ property name=ViewName value=${ properties.project.Ord' +'.ViewName'}/ property name=Label value=${ properties.project.Ord'+'.Label'}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ And finally, here is the checkoutModuleSrc target: !-- checkout src directory -- target name=checkoutModuleSrc exec program=${starteam.cmd} arg line=co -p ${STUser}:${STPassword}@${STServer}:${STPort}/${ProjectName} -o -cfgl ${Label}/ /exec You can see that I loop through the build order and pick up one of the projects to be built, then append the .Projectname, .viewname and .label and then check out the code. The problem is that I can get it to return the property.project.Ord, but can't append the .ProjectName, .ViewName, or Label without it interpreting it as NETDLLs.ProjectName. -Original Message- From: Bob Archer [mailto:bob.arc...@amsi.com] Sent: Monday, June 17, 2013 10:47 AM To: Labout, Douglas; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Ok... I guess I'm still not understanding what is in each variable: You are correct in that I'm trying to put together a couple of variables. The build order is assigned to the variable ${properties.project.Ord}. I then What is the exact text in that variable? append to the end of that variable the .ProjectName, Is that a property, or a literal? What value is in .ProjectName (assuming that is a variable?) .ViewName, and .Label and assign them to ${ProjectName}. I then pass $ProjectName to my starteam checkout. Same questions... Are you trying to build a new variable name? So, when you say you want to append .ProjectName you mean the contents of that? If I knew what was in each variable in addition to the final value you expect in the variable, I could help you with more specific code. BOb The trouble is that ${properties.project.Ord} returns as NETDLLS but when I want the variable ${NETDLLS.ProjectName} to be returned as NETDLLs.ProjectName=Windows - .NET DLLs it instead comes back as NETDLLS.ProjectName. StarTeam goes looking for a NETDLLS.ProjectName and of course can't find it and dies. Thanks for the help! Much appreciated! -Doug -Original Message- From: Bob Archer [mailto:bob.arc...@amsi.com] Sent: Monday, June 17, 2013 9:22 AM To: Labout, Douglas; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Hello, I'm working on converting an Ant script to Nant and have ran into an issue with joining several variables together in Nant. Below is the original Ant script in which it pulls information from a properties file and uses the information to feed the build. The project starts by looping through build order (NETDLLS, App) and then uses that variable to prepend to the ProjectName to check out of StarTeam. Project.Build.Order=NETDLLs,App # Windows - .NET DLLs NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows - .NET DLLs NETDLLs.Label=201300722.20130508 ANT script: target name=build.project property name=ProjectName value=${buildProp.${project.Ord}.ProjectName}/ property name=ViewName value=${buildProp.${project.Ord}.ViewName}/ property name=Label value=${buildProp.${project.Ord}.Label}/ antcall target=checkoutModuleSrc inheritall=true/ Here is what I have come up with in Nant which doesn't seem to be working. NAnt script: target name=build.project property name=ProjectName value=${'properties.project.Ord'+'.ProjectName'}/ property
Re: [NAnt-users] Nested variables
Right... so use the property::get-value() function. I think this is what you need to do: ?xml version=1.0 ? project name=test loadproperties file=buildLabels.properties / !-- The foreach bellow will loop through the list of projects in the Project.Build.Order in the buildLabels.properties -- foreach item=String in=${Project.Build.Order} delim=, property=properties.project.Ord echo message=${properties.project.Ord} / call target=build.project/ /foreach target name=build.project property name=ProjectName value=${ property::get-value(properties.project.Ord+'.ProjectName')}/ property name=ViewName value=${ property::get-value(properties.project.Ord +'.ViewName')}/ property name=Label value=${ property::get-value(properties.project.Ord +'.Label')}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ /target !-- checkout src directory -- target name=checkoutModuleSrc !-- exec program=${starteam.cmd} arg line=co -p ${STUser}:${STPassword}@${STServer}:${STPort}/${ProjectName} -o -cfgl ${Label}/ /exec -- echo message=${ProjectName} -o -cfgl ${Label} / /target /project -Original Message- From: Labout, Douglas [mailto:douglas.lab...@efirstbank.com] Sent: Monday, June 17, 2013 2:24 PM To: Bob Archer; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Hmm, Let's see if I can explain it better... Here is the properties file that contains all the components to be built and their associated views and labels. # Projects Build Order Project.Name=WCFServices Project.Build.Directory=C:\/VisualStudio\/ Project.Build.Order=NETComponents,NETDLLs,App Project.Deploy=C:\/VisualStudio\/\Windows - BuildScripts\/Deploy\/ # Windows - .NET Components NETComponents.ProjectName=Windows - .NET Components NETComponents.ViewName=Windows - .NET Components NETComponents.Label=201261654 # Windows - .NET DLLs NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows - .NET DLLs NETDLLs.Label=2013064494 # Windows - WCFServices_NewAccounts.DataAccess App.ProjectName=Windows - _WCFServices App.ViewName=Windows - _WCFServices App.Label=20781 I use loadproperties file=buildLabels.properties / to load the lines in the property file. Here is the loop that pulles build order: !-- The foreach bellow will loop through the list of projects in the Project.Build.Order in the buildLabels.properties -- foreach item=String in=${Project.Build.Order} delim=, property=properties.project.Ord call target=build.project/ /foreach Here is the build.project target: target name=build.project property name=ProjectName value=${ properties.project.Ord+'.ProjectName'}/ property name=ViewName value=${ properties.project.Ord' +'.ViewName'}/ property name=Label value=${ properties.project.Ord'+'.Label'}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ And finally, here is the checkoutModuleSrc target: !-- checkout src directory -- target name=checkoutModuleSrc exec program=${starteam.cmd} arg line=co -p ${STUser}:${STPassword}@${STServer}:${STPort}/${ProjectName} -o -cfgl ${Label}/ /exec You can see that I loop through the build order and pick up one of the projects to be built, then append the .Projectname, .viewname and .label and then check out the code. The problem is that I can get it to return the property.project.Ord, but can't append the .ProjectName, .ViewName, or Label without it interpreting it as NETDLLs.ProjectName. -Original Message- From: Bob Archer [mailto:bob.arc...@amsi.com] Sent: Monday, June 17, 2013 10:47 AM To: Labout, Douglas; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Ok... I guess I'm still not understanding what is in each variable: You are correct in that I'm trying to put together a couple of variables. The build order is assigned to the variable ${properties.project.Ord}. I then What is the exact text in that variable? append to the end of that variable the .ProjectName, Is that a property, or a literal? What value is in .ProjectName (assuming that is a variable?) .ViewName, and .Label and assign them to ${ProjectName}. I then pass $ProjectName to my starteam checkout. Same questions... Are you trying to build a new variable name? So, when you say you want to append .ProjectName you mean the contents of that? If I knew what was in each variable in addition to the final value you expect in the variable, I could help you
Re: [NAnt-users] Nested variables
Thanks Bob! That fixed it. -Original Message- From: Bob Archer [mailto:bob.arc...@amsi.com] Sent: Monday, June 17, 2013 1:18 PM To: Labout, Douglas; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Right... so use the property::get-value() function. I think this is what you need to do: ?xml version=1.0 ? project name=test loadproperties file=buildLabels.properties / !-- The foreach bellow will loop through the list of projects in the Project.Build.Order in the buildLabels.properties -- foreach item=String in=${Project.Build.Order} delim=, property=properties.project.Ord echo message=${properties.project.Ord} / call target=build.project/ /foreach target name=build.project property name=ProjectName value=${ property::get-value(properties.project.Ord+'.ProjectName')}/ property name=ViewName value=${ property::get-value(properties.project.Ord +'.ViewName')}/ property name=Label value=${ property::get-value(properties.project.Ord +'.Label')}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ /target !-- checkout src directory -- target name=checkoutModuleSrc !-- exec program=${starteam.cmd} arg line=co -p ${STUser}:${STPassword}@${STServer}:${STPort}/${ProjectName} -o -cfgl ${Label}/ /exec -- echo message=${ProjectName} -o -cfgl ${Label} / /target /project -Original Message- From: Labout, Douglas [mailto:douglas.lab...@efirstbank.com] Sent: Monday, June 17, 2013 2:24 PM To: Bob Archer; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Hmm, Let's see if I can explain it better... Here is the properties file that contains all the components to be built and their associated views and labels. # Projects Build Order Project.Name=WCFServices Project.Build.Directory=C:\/VisualStudio\/ Project.Build.Order=NETComponents,NETDLLs,App Project.Deploy=C:\/VisualStudio\/\Windows - BuildScripts\/Deploy\/ # Windows - .NET Components NETComponents.ProjectName=Windows - .NET Components NETComponents.ViewName=Windows - .NET Components NETComponents.Label=201261654 # Windows - .NET DLLs NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows - .NET DLLs NETDLLs.Label=2013064494 # Windows - WCFServices_NewAccounts.DataAccess App.ProjectName=Windows - _WCFServices App.ViewName=Windows - _WCFServices App.Label=20781 I use loadproperties file=buildLabels.properties / to load the lines in the property file. Here is the loop that pulles build order: !-- The foreach bellow will loop through the list of projects in the Project.Build.Order in the buildLabels.properties -- foreach item=String in=${Project.Build.Order} delim=, property=properties.project.Ord call target=build.project/ /foreach Here is the build.project target: target name=build.project property name=ProjectName value=${ properties.project.Ord+'.ProjectName'}/ property name=ViewName value=${ properties.project.Ord' +'.ViewName'}/ property name=Label value=${ properties.project.Ord'+'.Label'}/ echo${ProjectName} ${ViewName} ${Label}/echo call target=checkoutModuleSrc/ And finally, here is the checkoutModuleSrc target: !-- checkout src directory -- target name=checkoutModuleSrc exec program=${starteam.cmd} arg line=co -p ${STUser}:${STPassword}@${STServer}:${STPort}/${ProjectName} -o -cfgl ${Label}/ /exec You can see that I loop through the build order and pick up one of the projects to be built, then append the .Projectname, .viewname and .label and then check out the code. The problem is that I can get it to return the property.project.Ord, but can't append the .ProjectName, .ViewName, or Label without it interpreting it as NETDLLs.ProjectName. -Original Message- From: Bob Archer [mailto:bob.arc...@amsi.com] Sent: Monday, June 17, 2013 10:47 AM To: Labout, Douglas; 'nant-users@lists.sourceforge.net' Subject: RE: Nested variables Ok... I guess I'm still not understanding what is in each variable: You are correct in that I'm trying to put together a couple of variables. The build order is assigned to the variable ${properties.project.Ord}. I then What is the exact text in that variable? append to the end of that variable the .ProjectName, Is that a property, or a literal? What value is in .ProjectName (assuming that is a variable?) .ViewName, and .Label and assign them to ${ProjectName}. I then pass $ProjectName to my starteam checkout. Same questions... Are you trying to build a new variable name? So, when you say you want to append .ProjectName you