Ejemplo n.º 1
0
        public void ITaskItemParameter_EscapableNotEscapedMetadata()
        {
            IDictionary metadata = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            metadata.Add("a", "a1(b1");
            metadata.Add("b", "c1)d1");

            TaskParameter t = new TaskParameter(new TaskItem("foo", metadata));

            Assert.Equal(TaskParameterType.ITaskItem, t.ParameterType);

            ITaskItem2 foo = t.WrappedParameter as ITaskItem2;

            Assert.NotNull(foo);
            Assert.Equal("foo", foo.ItemSpec);
            Assert.Equal("a1(b1", foo.GetMetadata("a"));
            Assert.Equal("c1)d1", foo.GetMetadata("b"));
            Assert.Equal("a1(b1", foo.GetMetadataValueEscaped("a"));
            Assert.Equal("c1)d1", foo.GetMetadataValueEscaped("b"));

            ((ITranslatable)t).Translate(TranslationHelpers.GetWriteTranslator());
            TaskParameter t2 = TaskParameter.FactoryForDeserialization(TranslationHelpers.GetReadTranslator());

            Assert.Equal(TaskParameterType.ITaskItem, t2.ParameterType);

            ITaskItem2 foo2 = t2.WrappedParameter as ITaskItem2;

            Assert.NotNull(foo2);
            Assert.Equal("foo", foo2.ItemSpec);
            Assert.Equal("a1(b1", foo2.GetMetadata("a"));
            Assert.Equal("c1)d1", foo2.GetMetadata("b"));
            Assert.Equal("a1(b1", foo2.GetMetadataValueEscaped("a"));
            Assert.Equal("c1)d1", foo2.GetMetadataValueEscaped("b"));
        }
            public MSBuildItemGroupAdditionalText(ITaskItem2 taskItem)
            {
                Path = taskItem.ItemSpec;

                var metadata = new Dictionary <string, string>();

                foreach (string name in taskItem.MetadataNames)
                {
                    metadata.Add($"build_metadata.AdditionalFiles.{name}", taskItem.GetMetadata(name));
                }
            }
        public void ITaskItem2Operations()
        {
            Project         project         = new Project();
            ProjectInstance projectInstance = project.CreateProjectInstance();

            ProjectItemInstance item = projectInstance.AddItem("EscapedItem", "esca%20ped%3bitem");

            item.SetMetadata("m", "m1");
            item.SetMetadata("m;", "m%3b1");
            ITaskItem2 taskItem = (ITaskItem2)item;

            Assert.Equal(taskItem.EvaluatedIncludeEscaped, "esca%20ped%3bitem");
            Assert.Equal(taskItem.ItemSpec, "esca ped;item");

            Assert.Equal(taskItem.GetMetadata("m;"), "m;1");
            Assert.Equal(taskItem.GetMetadataValueEscaped("m;"), "m%3b1");
            Assert.Equal(taskItem.GetMetadataValueEscaped("m"), "m1");

            Assert.Equal(taskItem.EvaluatedIncludeEscaped, "esca%20ped%3bitem");
            Assert.Equal(taskItem.ItemSpec, "esca ped;item");

            ITaskItem2 taskItem2 = new Microsoft.Build.Utilities.TaskItem(taskItem);

            taskItem2.SetMetadataValueLiteral("m;", "m;2");

            Assert.Equal(taskItem2.GetMetadataValueEscaped("m;"), "m%3b2");
            Assert.Equal(taskItem2.GetMetadata("m;"), "m;2");

            IDictionary <string, string> taskItem2Metadata = (IDictionary <string, string>)taskItem2.CloneCustomMetadata();

            Assert.Equal(3, taskItem2Metadata.Count);

            foreach (KeyValuePair <string, string> pair in taskItem2Metadata)
            {
                if (pair.Key.Equals("m"))
                {
                    Assert.Equal("m1", pair.Value);
                }

                if (pair.Key.Equals("m;"))
                {
                    Assert.Equal("m;2", pair.Value);
                }

                if (pair.Key.Equals("OriginalItemSpec"))
                {
                    Assert.Equal("esca ped;item", pair.Value);
                }
            }

            IDictionary <string, string> taskItem2MetadataEscaped = (IDictionary <string, string>)taskItem2.CloneCustomMetadataEscaped();

            Assert.Equal(3, taskItem2MetadataEscaped.Count);

            foreach (KeyValuePair <string, string> pair in taskItem2MetadataEscaped)
            {
                if (pair.Key.Equals("m"))
                {
                    Assert.Equal("m1", pair.Value);
                }

                if (pair.Key.Equals("m;"))
                {
                    Assert.Equal("m%3b2", pair.Value);
                }

                if (pair.Key.Equals("OriginalItemSpec"))
                {
                    Assert.Equal("esca%20ped%3bitem", pair.Value);
                }
            }
        }