public void GetItemGroupUnderTarget() { string content = @" <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'> <Target Name='t'> <ItemGroup Condition='c1'> <i Include='i1' Exclude='e1' Condition='c2'> <m Condition='c3'>m1</m> <n>n1</n> </i> <j Remove='r1'/> <k> <o>o1</o> </k> </ItemGroup> </Target> </Project> "; ProjectInstance p = GetProjectInstance(content); ProjectItemGroupTaskInstance itemGroup = (ProjectItemGroupTaskInstance)(p.Targets["t"].Children[0]); Assert.Equal("c1", itemGroup.Condition); List <ProjectItemGroupTaskItemInstance> items = Helpers.MakeList(itemGroup.Items); Assert.Equal(3, items.Count); Assert.Equal("i1", items[0].Include); Assert.Equal("e1", items[0].Exclude); Assert.Equal(String.Empty, items[0].Remove); Assert.Equal("c2", items[0].Condition); Assert.Equal(String.Empty, items[1].Include); Assert.Equal(String.Empty, items[1].Exclude); Assert.Equal("r1", items[1].Remove); Assert.Equal(String.Empty, items[1].Condition); Assert.Equal(String.Empty, items[2].Include); Assert.Equal(String.Empty, items[2].Exclude); Assert.Equal(String.Empty, items[2].Remove); Assert.Equal(String.Empty, items[2].Condition); List <ProjectItemGroupTaskMetadataInstance> metadata1 = Helpers.MakeList(items[0].Metadata); List <ProjectItemGroupTaskMetadataInstance> metadata2 = Helpers.MakeList(items[1].Metadata); List <ProjectItemGroupTaskMetadataInstance> metadata3 = Helpers.MakeList(items[2].Metadata); Assert.Equal(2, metadata1.Count); Assert.Equal(0, metadata2.Count); Assert.Equal(1, metadata3.Count); Assert.Equal("c3", metadata1[0].Condition); Assert.Equal("m1", metadata1[0].Value); Assert.Equal(String.Empty, metadata1[1].Condition); Assert.Equal("n1", metadata1[1].Value); Assert.Equal(String.Empty, metadata3[0].Condition); Assert.Equal("o1", metadata3[0].Value); }
/// <summary> /// Constructs a task logging context from a parent target context and a task node. /// </summary> internal TaskLoggingContext(TargetLoggingContext targetLoggingContext, string projectFullPath, ProjectTargetInstanceChild task) : base(targetLoggingContext) { _targetLoggingContext = targetLoggingContext; _task = task; ProjectTaskInstance taskInstance = task as ProjectTaskInstance; if (taskInstance != null) { _taskName = taskInstance.Name; } else { ProjectPropertyGroupTaskInstance propertyGroupInstance = task as ProjectPropertyGroupTaskInstance; if (propertyGroupInstance != null) { _taskName = "PropertyGroup"; } else { ProjectItemGroupTaskInstance itemGroupInstance = task as ProjectItemGroupTaskInstance; if (itemGroupInstance != null) { _taskName = "ItemGroup"; } else { _taskName = "Unknown"; } } } this.BuildEventContext = LoggingService.LogTaskStarted2 ( targetLoggingContext.BuildEventContext, _taskName, projectFullPath, task.Location.File, task.Location.Line, task.Location.Column ); this.IsValid = true; }
public ItemGroupIntrinsicTask(ProjectItemGroupTaskInstance taskInstance, TargetLoggingContext loggingContext, ProjectInstance projectInstance, bool logTaskInputs) : base(loggingContext, projectInstance, logTaskInputs) { _taskInstance = taskInstance; }
/// <summary> /// Instantiates an ItemGroup task /// </summary> /// <param name="taskInstance">The original task instance data</param> /// <param name="loggingContext">The logging context</param> /// <param name="projectInstance">The project instance</param> /// <param name="logTaskInputs">Flag to determine whether or not to log task inputs.</param> public ItemGroupIntrinsicTask(ProjectItemGroupTaskInstance taskInstance, TargetLoggingContext loggingContext, ProjectInstance projectInstance, bool logTaskInputs) : base(loggingContext, projectInstance, logTaskInputs) { _taskInstance = taskInstance; _engineFileUtilities = EngineFileUtilities.Default; }