예제 #1
0
        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);
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
 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;
 }