// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#if NET_2_0
-
using System;
using System.Reflection;
using System.Collections;
GroupingCollection parentCollection;
Project parentProject;
bool read_only;
+ bool evaluated;
public BuildItemGroup ()
: this (null, null, null, false)
buildItems.Add (bi);
project.LastItemGroupContaining [bi.Name] = this;
}
+
+ DefinedInFileName = importedProject != null ? importedProject.FullFileName :
+ project != null ? project.FullFileName : null;
}
public BuildItem AddNewItem (string itemName,
buildItems.Add (buildItem);
}
+ // In eval phase, any ref'ed item would've already been expanded
+ // or it doesnt exist, so dont expand again
+ // In non-eval, items have _already_ been expanded, so dont expand again
+ // So, ignore @options
internal string ConvertToString (Expression transform,
- Expression separator)
+ Expression separator, ExpressionOptions options)
{
string separatorString;
+ // Item refs are not expanded for separator or transform
if (separator == null)
separatorString = ";";
else
- separatorString = (string) separator.ConvertTo (parentProject, typeof (string));
+ separatorString = (string) separator.ConvertTo (parentProject, typeof (string),
+ ExpressionOptions.DoNotExpandItemRefs);
string[] items = new string [buildItems.Count];
int i = 0;
foreach (BuildItem bi in buildItems)
- items [i++] = bi.ConvertToString (transform);
+ items [i++] = bi.ConvertToString (transform, ExpressionOptions.DoNotExpandItemRefs);
return String.Join (separatorString, items);
}
- internal ITaskItem[] ConvertToITaskItemArray (Expression transform)
+ // In eval phase, any ref'ed item would've already been expanded
+ // or it doesnt exist, so dont expand again
+ // In non-eval, items have _already_ been expanded, so dont expand again
+ // So, ignore @options
+ internal ITaskItem[] ConvertToITaskItemArray (Expression transform, Expression separator, ExpressionOptions options)
{
+ if (separator != null)
+ // separator present, so return as a single "join'ed" string
+ return new ITaskItem [] {
+ new TaskItem (ConvertToString (transform, separator, options))
+ };
+
ITaskItem[] array = new ITaskItem [buildItems.Count];
int i = 0;
foreach (BuildItem item in buildItems)
- array [i++] = item.ConvertToITaskItem (transform);
+ array [i++] = item.ConvertToITaskItem (transform, ExpressionOptions.DoNotExpandItemRefs);
return array;
}
internal void Evaluate ()
{
+ if (evaluated)
+ return;
foreach (BuildItem bi in buildItems) {
if (bi.Condition == String.Empty)
bi.Evaluate (parentProject, true);
bi.Evaluate (parentProject, ce.BoolEvaluate (parentProject));
}
}
+ evaluated = true;
}
internal void ReplaceWith (BuildItem item, List <BuildItem> list)
}
}
+ internal string DefinedInFileName { get; private set; }
+
internal bool FromXml {
get {
return itemGroupElement != null;
}
}
}
-
-#endif