示例#1
0
 /// <summary>
 /// BuildItems are passed around internally, including across the wire. Before passing these
 /// to tasks, they need to be converted into TaskItems using this method.
 /// </summary>
 internal void ConvertToTaskItems()
 {
     // If outputsByTarget was null then we dont have to re-create anything as nothing was passed over
     if (null != outputsByTarget)
     {
         string[] keys = new string[outputsByTarget.Count];
         outputsByTarget.Keys.CopyTo(keys, 0);
         for (int key_index = 0; key_index < keys.Length; key_index++)
         {
             object      key           = keys[key_index];
             BuildItem[] originalArray = (BuildItem[])outputsByTarget[key];
             outputsByTarget[key] = BuildItem.ConvertBuildItemArrayToTaskItems(originalArray);
         }
     }
 }
示例#2
0
文件: Item_Tests.cs 项目: 3F/IeXod
        public void BuildItemToTaskItemAndBack()
        {
            BuildItem[] buildItems = new BuildItem[2];

            buildItems[0] = new BuildItem("item1name", "item1$$value");
            buildItems[0].SetMetadata("Something", "Dir\\**");
            buildItems[0].SetMetadata("stupidescaping", "nokidding");

            buildItems[1] = new BuildItem("item2", "value2");
            buildItems[1].SetMetadata("name", "value");
            buildItems[1].SetMetadata("OtherName", ";Value;");

            ITaskItem[] pass1 = BuildItem.ConvertBuildItemArrayToTaskItems(buildItems);

            for (int i = 0; i < 2; i++)
            {
                Assert.AreEqual(pass1[i].ItemSpec, buildItems[i].FinalItemSpec);
                foreach (string metadataName in pass1[i].MetadataNames)
                {
                    Assert.AreEqual(pass1[i].GetMetadata(metadataName), buildItems[i].GetEvaluatedMetadata(metadataName));
                }
            }

            // This will create nameless BuildItems, so it's a different code path - that's why we need this and
            // the following test
            BuildItem[] pass2 = BuildItem.ConvertTaskItemArrayToBuildItems(pass1);

            for (int i = 0; i < 2; i++)
            {
                Assert.AreEqual(pass1[i].ItemSpec, pass2[i].FinalItemSpec);
                foreach (string metadataName in pass1[i].MetadataNames)
                {
                    Assert.AreEqual(pass1[i].GetMetadata(metadataName), pass2[i].GetEvaluatedMetadata(metadataName));
                }
            }

            ITaskItem[] pass3 = BuildItem.ConvertBuildItemArrayToTaskItems(pass2);

            for (int i = 0; i < 2; i++)
            {
                Assert.AreEqual(pass3[i].ItemSpec, pass2[i].FinalItemSpec);
                foreach (string metadataName in pass3[i].MetadataNames)
                {
                    Assert.AreEqual(pass3[i].GetMetadata(metadataName), pass2[i].GetEvaluatedMetadata(metadataName));
                }
            }
        }