本文整理汇总了C#中Microsoft.Build.Evaluation.Project.GetLogicalProject方法的典型用法代码示例。如果您正苦于以下问题:C# Project.GetLogicalProject方法的具体用法?C# Project.GetLogicalProject怎么用?C# Project.GetLogicalProject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Build.Evaluation.Project
的用法示例。
在下文中一共展示了Project.GetLogicalProject方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LogicalProjectWithWildcardImport
public void LogicalProjectWithWildcardImport()
{
string myTempDir = Path.Combine(Path.GetTempPath() + "MyTempDir");
try
{
// Create a new directory in the system temp folder.
Directory.CreateDirectory(myTempDir);
ProjectRootElement one = ProjectRootElement.Create(Path.Combine(myTempDir, "1.targets"));
one.Save();
one.AddProperty("p", "1");
ProjectRootElement two = ProjectRootElement.Create(Path.Combine(myTempDir, "2.targets"));
two.Save();
two.AddProperty("p", "2");
ProjectRootElement zero = ProjectRootElement.Create(Path.Combine(myTempDir, "0.targets"));
zero.AddProperty("p", "0");
// Add a single import statement that would import both one and two.
zero.AddImport(Path.Combine(myTempDir, "*.targets"));
Project project = new Project(zero);
List<ProjectElement> logicalProject = new List<ProjectElement>(project.GetLogicalProject());
Assert.Equal(6, logicalProject.Count); // 3 properties + 3 property groups
Assert.Equal(true, Object.ReferenceEquals(zero, logicalProject[0].ContainingProject)); // PropertyGroup
Assert.Equal(true, Object.ReferenceEquals(zero, logicalProject[1].ContainingProject)); // p = 0
Assert.Equal(true, Object.ReferenceEquals(one, logicalProject[2].ContainingProject)); // PropertyGroup
Assert.Equal(true, Object.ReferenceEquals(one, logicalProject[3].ContainingProject)); // p = 1
Assert.Equal(true, Object.ReferenceEquals(two, logicalProject[4].ContainingProject)); // PropertyGroup
Assert.Equal(true, Object.ReferenceEquals(two, logicalProject[5].ContainingProject)); // p = 2
// Clear the cache
project.ProjectCollection.UnloadAllProjects();
}
finally
{
// Delete the temp directory that was created above.
if (Directory.Exists(myTempDir))
{
Directory.Delete(myTempDir, true);
}
}
}
示例2: BasicFromXmlFollowImport
public void BasicFromXmlFollowImport()
{
string importContent = ObjectModelHelpers.CleanupFileContents(@"
<Project xmlns='msbuildnamespace'>
<PropertyGroup>
<p2>v3</p2>
</PropertyGroup>
<ItemGroup>
<i Include='i4'/>
</ItemGroup>
<Target Name='t2'>
<task/>
</Target>
</Project>");
string importPath = ObjectModelHelpers.CreateFileInTempProjectDirectory("import.targets", importContent);
string projectFileContent = ObjectModelHelpers.CleanupFileContents(@"
<Project xmlns='msbuildnamespace'>
<PropertyGroup Condition=""'$(Configuration)'=='Foo'"">
<p>v1</p>
</PropertyGroup>
<PropertyGroup Condition=""'$(Configuration)'!='Foo'"">
<p>v2</p>
</PropertyGroup>
<PropertyGroup>
<p2>X$(p)</p2>
</PropertyGroup>
<ItemGroup>
<i Condition=""'$(Configuration)'=='Foo'"" Include='i0'/>
<i Include='i1'/>
<i Include='$(p)X;i3'/>
</ItemGroup>
<Target Name='t'>
<task/>
</Target>
<Import Project='{0}'/>
</Project>");
projectFileContent = String.Format(projectFileContent, importPath);
ProjectRootElement xml = ProjectRootElement.Create(XmlReader.Create(new StringReader(projectFileContent)));
Project project = new Project(xml);
Assert.Equal("v3", project.GetPropertyValue("p2"));
List<ProjectItem> items = Helpers.MakeList(project.GetItems("i"));
Assert.Equal(4, items.Count);
Assert.Equal("i1", items[0].EvaluatedInclude);
Assert.Equal("v2X", items[1].EvaluatedInclude);
Assert.Equal("i3", items[2].EvaluatedInclude);
Assert.Equal("i4", items[3].EvaluatedInclude);
IList<ResolvedImport> imports = project.Imports;
Assert.Equal(1, imports.Count);
Assert.Equal(true, Object.ReferenceEquals(imports.First().ImportingElement, xml.Imports.ElementAt(0)));
// We can take advantage of the fact that we will get the same ProjectRootElement from the cache if we try to
// open it with a path; get that and then compare it to what project.Imports gave us.
Assert.Equal(true, Object.ReferenceEquals(imports.First().ImportedProject, ProjectRootElement.Open(importPath)));
// Test the logical project iterator
List<ProjectElement> logicalElements = new List<ProjectElement>(project.GetLogicalProject());
Assert.Equal(18, logicalElements.Count);
ObjectModelHelpers.DeleteTempProjectDirectory();
}
示例3: VariousImports
public void VariousImports()
{
ProjectRootElement one = ProjectRootElement.Create("c:\\1.targets");
one.AddProperty("p", "1");
ProjectRootElement two = ProjectRootElement.Create("c:\\2.targets");
two.AddProperty("p", "2");
ProjectRootElement zero = ProjectRootElement.Create("c:\\foo\\0.targets");
zero.AddProperty("p", "0");
zero.AddImport(one.FullPath);
zero.AddImport(two.FullPath);
zero.AddImport(two.FullPath); // Duplicated import: only the first one should be entered
zero.AddImport(zero.FullPath); // Ignored self import
ProjectRootElement three = ProjectRootElement.Create("c:\\3.targets");
three.AddProperty("p", "3");
one.AddImport(three.FullPath);
ProjectRootElement four = ProjectRootElement.Create("c:\\4.targets");
four.AddProperty("p", "4");
one.AddImport(four.FullPath).Condition = "false"; // False condition; should not be entered
Project project = new Project(zero);
List<ProjectElement> logicalProject = new List<ProjectElement>(project.GetLogicalProject());
Assert.Equal(8, logicalProject.Count); // 4 properties + 4 property groups
Assert.Equal(true, Object.ReferenceEquals(zero, logicalProject[0].ContainingProject));
Assert.Equal(true, Object.ReferenceEquals(zero, logicalProject[1].ContainingProject));
Assert.Equal(true, Object.ReferenceEquals(one, logicalProject[2].ContainingProject));
Assert.Equal(true, Object.ReferenceEquals(one, logicalProject[3].ContainingProject));
Assert.Equal(true, Object.ReferenceEquals(three, logicalProject[4].ContainingProject));
Assert.Equal(true, Object.ReferenceEquals(three, logicalProject[5].ContainingProject));
Assert.Equal(true, Object.ReferenceEquals(two, logicalProject[6].ContainingProject));
Assert.Equal(true, Object.ReferenceEquals(two, logicalProject[7].ContainingProject));
// Clear the cache
project.ProjectCollection.UnloadAllProjects();
}