private static ProjectInstance CreateTestProjectInstance(string fileName) { ProjectRootElement projectRootElement = ProjectRootElement.Create(fileName); #pragma warning disable SA1118 // Parameter should not span multiple lines. Justification: Used to help match formatting in real projects projectRootElement.AddItemDefinitionGroup() .AddItemDefinition(AdditionalIncludeDirectoriesPredictor.ClCompileItemName) .AddMetadata( AdditionalIncludeDirectoriesPredictor.AdditionalIncludeDirectoriesMetadata, @"..\ClCompileIncludes ;%(AdditionalIncludeDirectories)"); projectRootElement.AddItemDefinitionGroup() .AddItemDefinition(AdditionalIncludeDirectoriesPredictor.FxCompileItemName) .AddMetadata( AdditionalIncludeDirectoriesPredictor.AdditionalIncludeDirectoriesMetadata, @"..\FxCompileIncludes ;%(AdditionalIncludeDirectories)"); projectRootElement.AddItemDefinitionGroup() .AddItemDefinition(AdditionalIncludeDirectoriesPredictor.MidlItemName) .AddMetadata( AdditionalIncludeDirectoriesPredictor.AdditionalIncludeDirectoriesMetadata, @"..\MidlIncludes ;%(AdditionalIncludeDirectories)"); projectRootElement.AddItemDefinitionGroup() .AddItemDefinition(AdditionalIncludeDirectoriesPredictor.ResourceCompileItemName) .AddMetadata( AdditionalIncludeDirectoriesPredictor.AdditionalIncludeDirectoriesMetadata, @"..\ResourceCompileIncludes ;%(AdditionalIncludeDirectories)"); #pragma warning restore SA1118 // Parameter should not span multiple lines // No change to AdditionalIncludeDirectories projectRootElement.AddItem(AdditionalIncludeDirectoriesPredictor.ClCompileItemName, "foo.cpp"); // Overrieds AdditionalIncludeDirectories projectRootElement.AddItem(AdditionalIncludeDirectoriesPredictor.FxCompileItemName, "foo.fx") .AddMetadata( AdditionalIncludeDirectoriesPredictor.AdditionalIncludeDirectoriesMetadata, @"..\ReplacedFxCompileIncludes"); // Appends to AdditionalIncludeDirectories projectRootElement.AddItem(AdditionalIncludeDirectoriesPredictor.MidlItemName, "foo.idl") .AddMetadata( AdditionalIncludeDirectoriesPredictor.AdditionalIncludeDirectoriesMetadata, @"..\AnotherMidlIncludes;%(AdditionalIncludeDirectories)"); // Has duplicates and spaces projectRootElement.AddItem(AdditionalIncludeDirectoriesPredictor.ResourceCompileItemName, "foo.rc") .AddMetadata( AdditionalIncludeDirectoriesPredictor.AdditionalIncludeDirectoriesMetadata, @"%(AdditionalIncludeDirectories); ;;%(AdditionalIncludeDirectories);..\AnotherResourceCompileIncludes;%(AdditionalIncludeDirectories)"); return(TestHelpers.CreateProjectInstanceFromRootElement(projectRootElement)); }
public void UpdateMetadataImported() { Assert.Throws <InvalidOperationException>(() => { string file = null; try { file = Microsoft.Build.Shared.FileUtilities.GetTemporaryFile(); ProjectRootElement import = ProjectRootElement.Create(file); import.AddItemDefinitionGroup().AddItemDefinition("i").AddMetadata("m", "m0"); import.Save(); ProjectRootElement main = ProjectRootElement.Create(); Project project = new Project(main); main.AddImport(file); project.ReevaluateIfNecessary(); ProjectItemDefinition definition = project.ItemDefinitions["i"]; definition.SetMetadataValue("m", "m1"); } finally { File.Delete(file); } } ); }
public void SetCondition() { ProjectRootElement project = ProjectRootElement.Create(); ProjectItemDefinitionElement itemDefinition = project.AddItemDefinitionGroup().AddItemDefinition("i"); Helpers.ClearDirtyFlag(project); itemDefinition.Condition = "c"; Assert.AreEqual("c", itemDefinition.Condition); Assert.AreEqual(true, project.HasUnsavedChanges); }
public void SetLabel() { ProjectRootElement project = ProjectRootElement.Create(); project.AddItemDefinitionGroup(); Helpers.ClearDirtyFlag(project); ProjectItemDefinitionGroupElement itemDefinitionGroup = Helpers.GetFirst(project.ItemDefinitionGroups); itemDefinitionGroup.Label = "c"; Assert.Equal("c", itemDefinitionGroup.Label); Assert.True(project.HasUnsavedChanges); }
public void EmptyMetadataCollection() { ProjectRootElement xml = ProjectRootElement.Create(); xml.AddItemDefinitionGroup().AddItemDefinition("i"); Project project = new Project(xml); ProjectItemDefinition itemDefinition = project.ItemDefinitions["i"]; IEnumerable <ProjectMetadata> metadataCollection = itemDefinition.Metadata; List <ProjectMetadata> metadataList = Helpers.MakeList(metadataCollection); Assert.Equal(0, metadataList.Count); Assert.Equal(null, itemDefinition.GetMetadata("m")); }
public void SetMetadata() { ProjectRootElement xml = ProjectRootElement.Create(); xml.AddProperty("p", "v"); xml.AddItemDefinitionGroup().AddItemDefinition("i").AddMetadata("m", "m0"); xml.AddItem("i", "i1"); Project project = new Project(xml); ProjectMetadata metadatum = project.ItemDefinitions["i"].GetMetadata("m"); metadatum.UnevaluatedValue = "$(p)"; Assert.Equal("v", Helpers.GetFirst(project.GetItems("i")).GetMetadataValue("m")); }
public void GetMetadataCollection() { ProjectRootElement xml = ProjectRootElement.Create(); xml.AddItemDefinitionGroup().AddItemDefinition("i").AddMetadata("m", "m0"); Project project = new Project(xml); IEnumerable <ProjectMetadata> metadataCollection = project.ItemDefinitions["i"].Metadata; List <ProjectMetadata> metadataList = Helpers.MakeList(metadataCollection); Assert.Equal(1, metadataList.Count); Assert.Equal("m", metadataList[0].Name); Assert.Equal("m0", metadataList[0].EvaluatedValue); }
private static ProjectInstance CreateTestProjectInstance(string fileName) { ProjectRootElement projectRootElement = ProjectRootElement.Create(fileName); projectRootElement.AddItemDefinitionGroup() .AddItemDefinition(ModuleDefinitionFilePredictor.LinkItemName) .AddMetadata(ModuleDefinitionFilePredictor.ModuleDefinitionFileMetadata, @".\Link.def"); projectRootElement.AddItem(ModuleDefinitionFilePredictor.LinkItemName, "Link.lib"); projectRootElement.AddItem(ModuleDefinitionFilePredictor.LibItemName, "Lib.lib") .AddMetadata(ModuleDefinitionFilePredictor.ModuleDefinitionFileMetadata, @".\Lib.def"); // Has spaces projectRootElement.AddItem(ModuleDefinitionFilePredictor.ImpLibItemName, "ImpLib.lib") .AddMetadata(ModuleDefinitionFilePredictor.ModuleDefinitionFileMetadata, @" .\ImpLib.def "); return(TestHelpers.CreateProjectInstanceFromRootElement(projectRootElement)); }
public void SetMetadataImported() { string file = null; try { file = Microsoft.Build.Shared.FileUtilities.GetTemporaryFile(); ProjectRootElement import = ProjectRootElement.Create(file); import.AddItemDefinitionGroup().AddItemDefinition("i").AddMetadata("m", "m0"); import.Save(); ProjectRootElement main = ProjectRootElement.Create(); Project project = new Project(main); main.AddImport(file); project.ReevaluateIfNecessary(); ProjectItemDefinition definition = project.ItemDefinitions["i"]; definition.SetMetadataValue("n", "n0"); string expected = String.Format ( ObjectModelHelpers.CleanupFileContents( @"<Project ToolsVersion=""msbuilddefaulttoolsversion"" xmlns=""msbuildnamespace""> <ItemDefinitionGroup> <i> <n>n0</n> </i> </ItemDefinitionGroup> <Import Project=""{0}"" /> </Project>"), file ); Helpers.VerifyAssertProjectContent(expected, project.Xml); } finally { File.Delete(file); } }
public void AddMetadataExistingItemDefinitionGroup() { ProjectRootElement xml = ProjectRootElement.Create(); xml.AddItemDefinitionGroup().AddItemDefinition("i").AddMetadata("m", "m0"); Project project = new Project(xml); project.ItemDefinitions["i"].SetMetadataValue("n", "n0"); string expected = ObjectModelHelpers.CleanupFileContents( @"<Project ToolsVersion=""msbuilddefaulttoolsversion"" xmlns=""msbuildnamespace""> <ItemDefinitionGroup> <i> <m>m0</m> </i> <i> <n>n0</n> </i> </ItemDefinitionGroup> </Project>"); Helpers.VerifyAssertProjectContent(expected, project.Xml); }