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); } } }