7 instantiations of ProjectGraphNode
Microsoft.Build (1)
Graph\GraphBuilder.cs (1)
540var graphNode = new ProjectGraphNode(projectInstance);
Microsoft.Build.Engine.UnitTests (6)
Graph\ProjectGraph_Tests.cs (6)
126Assert.Throws<InternalErrorException>(() => new ProjectGraphNode(null)); 135var node = new ProjectGraphNode(projectInstance); 136var reference1 = new ProjectGraphNode(projectInstance); 139var reference2 = new ProjectGraphNode(projectInstance); 182var node = new ProjectGraphNode(projectInstance); 183var reference1 = new ProjectGraphNode(projectInstance);
371 references to ProjectGraphNode
dotnet-watch (78)
Aspire\AspireServiceFactory.cs (1)
272public IRuntimeProcessLauncher? TryCreate(ProjectGraphNode projectNode, ProjectLauncher projectLauncher, ProjectOptions hostProjectOptions)
Browser\BrowserLauncher.cs (1)
23ProjectGraphNode projectNode,
Browser\BrowserRefreshServerFactory.cs (2)
43public async ValueTask<BrowserRefreshServer?> GetOrCreateBrowserRefreshServerAsync(ProjectGraphNode projectNode, WebApplicationAppModel appModel, CancellationToken cancellationToken) 75public bool TryGetRefreshServer(ProjectGraphNode projectNode, [NotNullWhen(true)] out BrowserRefreshServer? server)
Build\EvaluationResult.cs (2)
72var rootNode = projectGraph.GraphRoots.Single(); 89foreach (var project in projectGraph.ProjectNodesTopologicallySorted)
Build\FilePathExclusions.cs (1)
21foreach (var projectNode in projectGraph.ProjectNodes)
Build\ProjectGraphUtilities.cs (36)
76public static string GetDisplayName(this ProjectGraphNode projectNode) 79public static string GetTargetFramework(this ProjectGraphNode projectNode) 82public static IEnumerable<string> GetTargetFrameworks(this ProjectGraphNode projectNode) 85public static Version? GetTargetFrameworkVersion(this ProjectGraphNode projectNode) 88public static IEnumerable<string> GetWebAssemblyCapabilities(this ProjectGraphNode projectNode) 91public static bool IsTargetFrameworkVersionOrNewer(this ProjectGraphNode projectNode, Version minVersion) 97public static bool IsNetCoreApp(this ProjectGraphNode projectNode) 100public static bool IsNetCoreApp(this ProjectGraphNode projectNode, Version minVersion) 103public static bool IsWebApp(this ProjectGraphNode projectNode) 106public static string? GetOutputDirectory(this ProjectGraphNode projectNode) 109public static string GetAssemblyName(this ProjectGraphNode projectNode) 112public static string? GetIntermediateOutputDirectory(this ProjectGraphNode projectNode) 115public static IEnumerable<string> GetCapabilities(this ProjectGraphNode projectNode) 118public static bool IsAutoRestartEnabled(this ProjectGraphNode projectNode) 121public static bool AreDefaultItemsEnabled(this ProjectGraphNode projectNode) 124public static IEnumerable<string> GetDefaultItemExcludes(this ProjectGraphNode projectNode) 127public static IEnumerable<string> GetStringListPropertyValue(this ProjectGraphNode projectNode, string propertyName) 133public static bool GetBooleanPropertyValue(this ProjectGraphNode projectNode, string propertyName, bool defaultValue = false) 142public static IEnumerable<ProjectGraphNode> GetAncestorsAndSelf(this ProjectGraphNode project) 145public static IEnumerable<ProjectGraphNode> GetAncestorsAndSelf(this IEnumerable<ProjectGraphNode> projects) 148public static IEnumerable<ProjectGraphNode> GetDescendantsAndSelf(this ProjectGraphNode project) 151public static IEnumerable<ProjectGraphNode> GetDescendantsAndSelf(this IEnumerable<ProjectGraphNode> projects) 154private static IEnumerable<ProjectGraphNode> GetTransitiveProjects(IEnumerable<ProjectGraphNode> projects, Func<ProjectGraphNode, IEnumerable<ProjectGraphNode>> getEdges) 156var visited = new HashSet<ProjectGraphNode>(); 157var queue = new Queue<ProjectGraphNode>(); 158foreach (var project in projects) 165var project = queue.Dequeue(); 170foreach (var referencingProject in getEdges(project)) 178public static ProjectInstanceId GetProjectInstanceId(this ProjectGraphNode projectNode)
Build\ProjectNodeMap.cs (6)
15public readonly IReadOnlyDictionary<string, IReadOnlyList<ProjectGraphNode>> Map = 18elementSelector: static g => (IReadOnlyList<ProjectGraphNode>)[.. g]); 20public IReadOnlyList<ProjectGraphNode> GetProjectNodes(string projectPath) 31public ProjectGraphNode? TryGetProjectNode(string projectPath, string? targetFramework) 50ProjectGraphNode? candidate = null; 51foreach (var node in projectNodes)
HotReload\AppModels\BlazorWebAssemblyAppModel.cs (2)
15internal sealed class BlazorWebAssemblyAppModel(DotNetWatchContext context, ProjectGraphNode clientProject) 18public override ProjectGraphNode LaunchingProject => clientProject;
HotReload\AppModels\BlazorWebAssemblyHostedAppModel.cs (3)
17internal sealed class BlazorWebAssemblyHostedAppModel(DotNetWatchContext context, ProjectGraphNode clientProject, ProjectGraphNode serverProject) 20public override ProjectGraphNode LaunchingProject => serverProject;
HotReload\AppModels\DefaultAppModel.cs (1)
13internal sealed class DefaultAppModel(ProjectGraphNode project) : HotReloadAppModel
HotReload\AppModels\HotReloadAppModel.cs (2)
17public static string GetStartupHookPath(ProjectGraphNode project) 23public static HotReloadAppModel InferFromProject(DotNetWatchContext context, ProjectGraphNode projectNode)
HotReload\AppModels\WebApplicationAppModel.cs (4)
24public abstract ProjectGraphNode LaunchingProject { get; } 40protected WebAssemblyHotReloadClient CreateWebAssemblyClient(ILogger clientLogger, ILogger agentLogger, BrowserRefreshServer browserRefreshServer, ProjectGraphNode clientProject) 51public BrowserRefreshServer? TryCreateRefreshServer(ProjectGraphNode projectNode) 70public bool IsServerSupported(ProjectGraphNode projectNode, ILogger logger)
HotReload\AppModels\WebServerAppModel.cs (2)
10internal sealed class WebServerAppModel(DotNetWatchContext context, ProjectGraphNode serverProject) 13public override ProjectGraphNode LaunchingProject => serverProject;
HotReload\CompilationHandler.cs (3)
95ProjectGraphNode projectNode, 502foreach (var containingProjectNode in containingProjectNodes) 504foreach (var referencingProjectNode in containingProjectNode.GetAncestorsAndSelf())
HotReload\HotReloadDotNetWatcher.cs (2)
97var rootProject = evaluationResult.ProjectGraph.GraphRoots.Single(); 576foreach (var node in graph.ProjectNodes)
HotReload\ScopedCssFileHandler.cs (2)
16var projectsToRefresh = new HashSet<ProjectGraphNode>(); 41foreach (var projectNode in projectNodes)
HotReload\StaticFileHandler.cs (2)
16var projectsWithoutRefreshServer = new HashSet<ProjectGraphNode>(); 39foreach (var projectNode in projectNodes)
Process\IRuntimeProcessLauncherFactory.cs (1)
15public IRuntimeProcessLauncher? TryCreate(ProjectGraphNode projectNode, ProjectLauncher projectLauncher, ProjectOptions hostProjectOptions);
Process\ProjectLauncher.cs (1)
36var projectNode = projectMap.TryGetProjectNode(projectOptions.ProjectPath, projectOptions.TargetFramework);
Process\RunningProject.cs (2)
14ProjectGraphNode projectNode, 25public readonly ProjectGraphNode ProjectNode = projectNode;
Process\WebServerProcessStateObserver.cs (1)
24public static void Observe(ProjectGraphNode serverProject, ProcessSpec serverProcessSpec, Action<string> onServerListening)
Watch\DotNetWatcher.cs (1)
38ProjectGraphNode? projectRootNode;
dotnet-watch.Tests (1)
TestUtilities\TestRuntimeProcessLauncher.cs (1)
12public IRuntimeProcessLauncher TryCreate(ProjectGraphNode projectNode, ProjectLauncher projectLauncher, ProjectOptions hostProjectOptions)
Microsoft.Build (118)
BackEnd\BuildManager\BuildManager.cs (14)
2019Dictionary<ProjectGraphNode, BuildResult>? resultsPerNode = null; 2025IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetsPerNode = projectGraph.GetTargetLists(submission.BuildRequestData.TargetNames); 2032foreach (ProjectGraphNode entryPointNode in projectGraph.EntryPointNodes) 2052new ReadOnlyDictionary<ProjectGraphNode, BuildResult>(resultsPerNode ?? new Dictionary<ProjectGraphNode, BuildResult>()))); 2054static void DumpGraph(ProjectGraph graph, IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>>? targetList = null) 2067private Dictionary<ProjectGraphNode, BuildResult> BuildGraph( 2069IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetsPerNode, 2080var blockedNodes = new HashSet<ProjectGraphNode>(projectGraph.ProjectNodes); 2081var finishedNodes = new HashSet<ProjectGraphNode>(projectGraph.ProjectNodes.Count); 2082var buildingNodes = new Dictionary<BuildSubmissionBase, ProjectGraphNode>(); 2083var resultsPerNode = new Dictionary<ProjectGraphNode, BuildResult>(projectGraph.ProjectNodes.Count); 2102foreach (var node in unblockedNodes) 2139ProjectGraphNode finishedNode = buildingNodes[finishedBuildSubmission];
Graph\GraphBuilder.cs (47)
33public IReadOnlyCollection<ProjectGraphNode> ProjectNodes { get; private set; } 35public IReadOnlyCollection<ProjectGraphNode> RootNodes { get; private set; } 37public IReadOnlyCollection<ProjectGraphNode> EntryPointNodes { get; private set; } 103private static IReadOnlyCollection<ProjectGraphNode> GetGraphRoots(IReadOnlyCollection<ProjectGraphNode> entryPointNodes) 105var graphRoots = new List<ProjectGraphNode>(entryPointNodes.Count); 107foreach (var entryPointNode in entryPointNodes) 136Dictionary<ProjectGraphNode, HashSet<ProjectGraphNode>> transitiveReferenceCache = new(allParsedProjects.Count); 140var currentNode = parsedProject.Value.GraphNode; 155foreach (var transitiveProjectReference in GetTransitiveProjectReferencesExcludingSelf(allParsedProjects[referenceInfo.ReferenceConfiguration])) 171HashSet<ProjectGraphNode> GetTransitiveProjectReferencesExcludingSelf(ParsedProject parsedProject) 173if (transitiveReferenceCache.TryGetValue(parsedProject.GraphNode, out HashSet<ProjectGraphNode> transitiveReferences)) 190foreach (ProjectGraphNode transitiveReference in GetTransitiveProjectReferencesExcludingSelf(reference)) 202var projectsByPath = new Dictionary<string, List<ProjectGraphNode>>(); 208if (projectsByPath.TryGetValue(projectPath, out List<ProjectGraphNode> value)) 214projectsByPath[projectPath] = new List<ProjectGraphNode> { project.Value.GraphNode }; 227ErrorUtilities.VerifyThrow(projectsByPath.TryGetValue(referencedProjectPath, out List<ProjectGraphNode> projectToReturn), "nodes should include solution projects"); 231foreach (var referencingNode in referencingNodes) 233foreach (var referencedNode in referencedNodes) 440IReadOnlyCollection<ProjectGraphNode> entryPointNodes, 444var nodeStates = new Dictionary<ProjectGraphNode, NodeVisitationState>(); 446foreach (var entryPointNode in entryPointNodes) 463ProjectGraphNode node, 464IDictionary<ProjectGraphNode, NodeVisitationState> nodeState) 468foreach (var referenceNode in node.ProjectReferences) 540var graphNode = new ProjectGraphNode(projectInstance); 573private List<ProjectInterpretation.ReferenceInfo> ParseReferences(ProjectGraphNode parsedProject) 647private ConcurrentDictionary<(ProjectGraphNode, ProjectGraphNode), ProjectItemInstance> ReferenceItems = 648new ConcurrentDictionary<(ProjectGraphNode, ProjectGraphNode), ProjectItemInstance>(); 652public ProjectItemInstance this[(ProjectGraphNode node, ProjectGraphNode reference) key] 661public void AddOrUpdateEdge((ProjectGraphNode node, ProjectGraphNode reference) key, ProjectItemInstance edge) 666addValueFactory: static ((ProjectGraphNode node, ProjectGraphNode reference) key, ProjectItemInstance referenceItem) => referenceItem, 667updateValueFactory: static ((ProjectGraphNode node, ProjectGraphNode reference) key, ProjectItemInstance existingItem, ProjectItemInstance newItem) => 686static string GetEffectiveTargets(ProjectGraphNode reference, string targetsMetadata) 699public void RemoveEdge((ProjectGraphNode node, ProjectGraphNode reference) key) 704internal bool HasEdge((ProjectGraphNode node, ProjectGraphNode reference) key) => ReferenceItems.ContainsKey(key); 726public ProjectGraphNode GraphNode { get; } 729public ParsedProject(ConfigurationMetadata configurationMetadata, ProjectGraphNode graphNode, List<ProjectInterpretation.ReferenceInfo> referenceInfos)
Graph\GraphBuildRequestData.cs (2)
200foreach (ProjectGraphNode entryPoint in ProjectGraph.EntryPointNodes) 219ProjectGraphNode? node = ProjectGraph?.EntryPointNodes.FirstOrDefault();
Graph\GraphBuildResult.cs (5)
19internal GraphBuildResult(int submissionId, IReadOnlyDictionary<ProjectGraphNode, BuildResult> resultsByNode) 34ResultsByNode = ImmutableDictionary<ProjectGraphNode, BuildResult>.Empty; 64foreach (KeyValuePair<ProjectGraphNode, BuildResult> result in ResultsByNode) 79public IReadOnlyDictionary<ProjectGraphNode, BuildResult> ResultsByNode { get; } 87public BuildResult this[ProjectGraphNode node] => ResultsByNode[node];
Graph\ProjectGraph.cs (35)
60private readonly Lazy<IReadOnlyCollection<ProjectGraphNode>> _projectNodesTopologicallySorted; 92public IReadOnlyCollection<ProjectGraphNode> EntryPointNodes { get; } 97public IReadOnlyCollection<ProjectGraphNode> ProjectNodes { get; } 103public IReadOnlyCollection<ProjectGraphNode> ProjectNodesTopologicallySorted => _projectNodesTopologicallySorted.Value; 105public IReadOnlyCollection<ProjectGraphNode> GraphRoots { get; } 449_projectNodesTopologicallySorted = new Lazy<IReadOnlyCollection<ProjectGraphNode>>(() => TopologicalSort(GraphRoots, ProjectNodes)); 491internal string ToDot(IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetsPerNode = null) 498Func<ProjectGraphNode, string> nodeIdProvider, 499IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetsPerNode = null) 503var nodeIds = new ConcurrentDictionary<ProjectGraphNode, string>(); 513foreach (var node in ProjectNodes) 528foreach (var reference in node.ProjectReferences) 540string GetNodeId(ProjectGraphNode node) 545string GetTargetListString(ProjectGraphNode node) 559private static IReadOnlyCollection<ProjectGraphNode> TopologicalSort( 560IReadOnlyCollection<ProjectGraphNode> graphRoots, 561IReadOnlyCollection<ProjectGraphNode> graphNodes) 563var toposort = new List<ProjectGraphNode>(graphNodes.Count); 564var partialRoots = new Queue<ProjectGraphNode>(graphNodes.Count); 567foreach (var root in graphRoots) 574var partialRoot = partialRoots.Dequeue(); 578foreach (var reference in partialRoot.ProjectReferences) 609public IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> GetTargetLists(ICollection<string> entryProjectTargets) 622foreach (ProjectGraphNode entryPointNode in EntryPointNodes) 637foreach (ProjectGraphNode entryPointNode in EntryPointNodes) 665ProjectGraphNode node = GetNodeForProject(project); 683ProjectGraphNode node = GetNodeForProject(project); 691ProjectGraphNode GetNodeForProject(ProjectInSolution project) => EntryPointNodes.First(node => string.Equals(node.ProjectInstance.FullPath, project.AbsolutePath)); 697foreach (ProjectGraphNode entryPointNode in EntryPointNodes) 711var node = buildRequest.Node; 726foreach (var referenceNode in node.ProjectReferences) 752var entriesToUpdate = new List<KeyValuePair<ProjectGraphNode, ImmutableList<string>>>(); 774entriesToUpdate.Add(new KeyValuePair<ProjectGraphNode, ImmutableList<string>>(pair.Key, targetList)); 866public ProjectGraphBuildRequest(ProjectGraphNode node, ImmutableList<string> targets) 872public ProjectGraphNode Node { get; }
Graph\ProjectGraphNode.cs (9)
21private readonly HashSet<ProjectGraphNode> _projectReferences = new HashSet<ProjectGraphNode>(); 22private readonly HashSet<ProjectGraphNode> _referencingProjects = new HashSet<ProjectGraphNode>(); 38public IReadOnlyCollection<ProjectGraphNode> ProjectReferences => _projectReferences; 43public IReadOnlyCollection<ProjectGraphNode> ReferencingProjects => _referencingProjects; 58internal void AddProjectReference(ProjectGraphNode reference, ProjectItemInstance projectReferenceItem, GraphBuilder.GraphEdges edges) 66internal void RemoveReference(ProjectGraphNode reference, GraphBuilder.GraphEdges edges) 76foreach (var reference in _projectReferences)
Graph\ProjectInterpretation.cs (6)
77public IEnumerable<ReferenceInfo> GetReferences(ProjectGraphNode projectGraphNode, ProjectCollection projectCollection, ProjectGraph.ProjectInstanceFactoryFunc projectInstanceFactory) 250ProjectGraphNode outerBuild = node.Value.GraphNode; 254foreach (ProjectGraphNode innerBuild in outerBuild.ProjectReferences) 256foreach (ProjectGraphNode outerBuildReferencingProject in outerBuild.ReferencingProjects) 525public ImmutableList<string> GetApplicableTargetsForReference(ProjectGraphNode projectGraphNode) 546public bool RequiresTransitiveProjectReferences(ProjectGraphNode projectGraphNode)
Microsoft.Build.Engine.UnitTests (174)
BackEnd\BuildManager_Tests.cs (4)
4210var node1 = graph.ProjectNodes.First(node => node.ProjectInstance.FullPath.Equals(project1, StringComparison.OrdinalIgnoreCase)); 4214var node2 = graph.ProjectNodes.First(node => node.ProjectInstance.FullPath.Equals(project2, StringComparison.OrdinalIgnoreCase)); 4295var node1 = graph.ProjectNodes.First(node => node.ProjectInstance.FullPath.Equals(project1, StringComparison.OrdinalIgnoreCase)); 4299var node2 = graph.ProjectNodes.First(node => node.ProjectInstance.FullPath.Equals(project2, StringComparison.OrdinalIgnoreCase));
Graph\GraphLoadedFromSolution_tests.cs (7)
624var node1 = GetFirstNodeWithProjectNumber(graph, 1); 629var outerBuild3 = GetOuterBuild(graph, 3); 638IEnumerable<ProjectItemInstance> GetOutgoingEdgeItemsFromNode(ProjectGraphNode node, IReadOnlyDictionary<(ConfigurationMetadata, ConfigurationMetadata), ProjectItemInstance> edgeInfos) 643IEnumerable<ProjectItemInstance> GetIncomingEdgeItemsToNode(ProjectGraphNode node, IReadOnlyDictionary<(ConfigurationMetadata, ConfigurationMetadata), ProjectItemInstance> edgeInfos) 707foreach (var node in graphFromSolution.ProjectNodes) 715private static string GetConfiguration(ProjectGraphNode node) 720private static string GetPlatform(ProjectGraphNode node)
Graph\GraphTestingUtilities.cs (25)
41ProjectGraphNode outerBuild, 53foreach (ProjectGraphNode innerBuild in outerBuild.ProjectReferences) 65foreach (ProjectGraphNode outerBuildReferencer in outerBuild.ReferencingProjects) 67ProjectGraphNode[] innerBuilds = outerBuildReferencer.ProjectReferences 73foreach (ProjectGraphNode innerBuild in innerBuilds) 90public static void AssertNonMultitargetingNode(ProjectGraphNode node, Dictionary<string, string> additionalGlobalProperties = null) 99public static void AssertOuterBuildEvaluation(ProjectGraphNode outerBuild, Dictionary<string, string> additionalGlobalProperties) 110ProjectGraphNode innerBuild, 131internal static ProjectGraphNode GetFirstNodeWithProjectNumber(ProjectGraph graph, int projectNum) 136internal static IEnumerable<ProjectGraphNode> GetNodesWithProjectNumber(ProjectGraph graph, int projectNum) 141internal static ProjectGraphNode GetOuterBuild(ProjectGraph graph, int projectNumber) 146internal static IReadOnlyCollection<ProjectGraphNode> GetInnerBuilds(ProjectGraph graph, int projectNumber) 148var outerBuild = GetOuterBuild(graph, projectNumber); 152return ImmutableArray<ProjectGraphNode>.Empty; 166internal static string GetProjectFileName(ProjectGraphNode node) 178internal static int GetProjectNumber(ProjectGraphNode node) 190internal static string GetProjectPath(ProjectGraphNode node) 214internal static IEnumerable<ProjectGraphNode> ComputeClosure(ProjectGraphNode node) 218IEnumerable<ProjectGraphNode> ComputeClosureRecursive(ProjectGraphNode projectGraphNode) 220foreach (var reference in projectGraphNode.ProjectReferences) 224foreach (var closureReference in ComputeClosureRecursive(reference)) 236var node = GetFirstNodeWithProjectNumber(graph, kvp.Key); 241internal static void AssertReferencesIgnoringOrder(this ProjectGraphNode node, int[] expectedReferences)
Graph\IsolateProjects_Tests.cs (3)
15using ExpectedNodeBuildOutput = System.Collections.Generic.Dictionary<Microsoft.Build.Graph.ProjectGraphNode, string[]>; 16using OutputCacheDictionary = System.Collections.Generic.Dictionary<Microsoft.Build.Graph.ProjectGraphNode, string>; 327ProjectGraphNode[] topoSortedProjectGraphNodes = projectGraph.ProjectNodesTopologicallySorted.ToArray();
Graph\ProjectGraph_Tests.cs (108)
135var node = new ProjectGraphNode(projectInstance); 136var reference1 = new ProjectGraphNode(projectInstance); 139var reference2 = new ProjectGraphNode(projectInstance); 182var node = new ProjectGraphNode(projectInstance); 183var reference1 = new ProjectGraphNode(projectInstance); 262ProjectGraphNode node1 = GetFirstNodeWithProjectNumber(graph, 1); 263ProjectGraphNode node2 = GetFirstNodeWithProjectNumber(graph, 2); 264ProjectGraphNode node3 = GetFirstNodeWithProjectNumber(graph, 3); 265ProjectGraphNode node4 = GetFirstNodeWithProjectNumber(graph, 4); 266ProjectGraphNode node5 = GetFirstNodeWithProjectNumber(graph, 5); 267ProjectGraphNode node6 = GetFirstNodeWithProjectNumber(graph, 6); 268ProjectGraphNode node7 = GetFirstNodeWithProjectNumber(graph, 7); 369var root1 = GetFirstNodeWithProjectNumber(graph, 1); 376var root2 = GetFirstNodeWithProjectNumber(graph, 2); 466var node4A = GetFirstNodeWithProjectNumber(graph, 2).ProjectReferences.First(); 467var node4B = GetFirstNodeWithProjectNumber(graph, 3).ProjectReferences.First(); 581var node1 = GetFirstNodeWithProjectNumber(projectGraph, 1); 582var node2 = GetFirstNodeWithProjectNumber(projectGraph, 2); 583var node3 = GetFirstNodeWithProjectNumber(projectGraph, 3); 606var entryPointNode1 = projectGraph.EntryPointNodes.First(); 607var entryPointNode2 = projectGraph.EntryPointNodes.Last(); 645var entryPointNode1 = projectGraph.EntryPointNodes.First(); 646var entryPointNode2 = projectGraph.EntryPointNodes.Last(); 868ProjectGraphNode project1Node = projectGraph.ProjectNodes.Single(node => node.ProjectInstance.FullPath == project1Path); 874ProjectGraphNode project2Node = projectGraph.ProjectNodes.Single(node => node.ProjectInstance.FullPath == project2Path); 880ProjectGraphNode project3Node = projectGraph.ProjectNodes.Single(node => node.ProjectInstance.FullPath == project3Path); 887ProjectGraphNode project4Node = projectGraph.ProjectNodes.Single(node => node.ProjectInstance.FullPath == project4Path); 893ProjectGraphNode project5Node = projectGraph.ProjectNodes.Single(node => node.ProjectInstance.FullPath == project5Path); 899ProjectGraphNode project6Node = projectGraph.ProjectNodes.Single(node => node.ProjectInstance.FullPath == project6Path); 907ProjectGraphNode project8Node = projectGraph.ProjectNodes.Single(node => node.ProjectInstance.FullPath == project8Path); 927IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new[] { "A" }); 955IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new[] { "A" }); 986IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new[] { "A" }); 1008IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(null); 1026IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new[] { "Foo" }); 1049IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(null); 1072IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new[] { "A" }); 1115IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new List<string> { "A" }); 1156IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new List<string> { "A" }); 1190IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new List<string> { "A" }); 1193var root = GetFirstNodeWithProjectNumber(projectGraph, 1); 1195var outerBuild = GetOuterBuild(projectGraph, 2); 1201foreach (var innerBuild in innerBuilds) 1255ProjectGraphNode rootOuterBuild = GetOuterBuild(graph, 1); 1256ProjectGraphNode nonRootOuterBuild = GetOuterBuild(graph, 3); 1261IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = graph.GetTargetLists(new[] { "A" }); 1265foreach (ProjectGraphNode innerBuild in GetInnerBuilds(graph, 1)) 1274foreach (ProjectGraphNode innerBuild in GetInnerBuilds(graph, 3)) 1362IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(new List<string> { "A" }); 1375void AssertMultitargetingNode(int projectNumber, ProjectGraph projectGraph, IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists, string[] outerBuildTargets, string[] nonOuterBuildTargets) 1379foreach (var innerBuild in GetInnerBuilds(projectGraph, projectNumber)) 1397IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(null); 1420IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(null); 1450IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(null); 1507IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(entryProjectTargets: null); 1552IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = graph.GetTargetLists(entryProjectTargets: new[] { "Build" }); 1559expectedNodeBuildOutput: new Dictionary<ProjectGraphNode, string[]>(), 1560outputCaches: new Dictionary<ProjectGraphNode, string>(), 1602IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = graph.GetTargetLists(entryProjectTargets: new[] { "Build" }); 1609expectedNodeBuildOutput: new Dictionary<ProjectGraphNode, string[]>(), 1610outputCaches: new Dictionary<ProjectGraphNode, string>(), 1633IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = graph.GetTargetLists(null); 1847Func<ProjectGraphNode, string> nodeIdProvider = GetProjectFileName; 1853foreach (var node in graph.ProjectNodes) 1865foreach (var reference in node.ProjectReferences) 1890var outerBuild = graph.GraphRoots.First(); 1917var outerBuild = GetOuterBuild(graph, 2); 1951var outerBuild = GetOuterBuild(graph, 2); 1955var outerBuildReferencingNode = GetFirstNodeWithProjectNumber(graph, 1); 1959foreach (var innerBuild in GetInnerBuilds(graph, 2)) 1984var rootOuterBuild = GetOuterBuild(graph, 1); 1985var nonRootOuterBuild = GetOuterBuild(graph, 2); 2005var nonMultitargetingNode = GetFirstNodeWithProjectNumber(graph, 2); 2033var nonMultitargetingNode = GetFirstNodeWithProjectNumber(graph, 2); 2052var nonMultitargetingNode = GetFirstNodeWithProjectNumber(graph, 2); 2105var innerBuildWithCommonReferences = GetNodesWithProjectNumber(graph, 1).First(n => n.ProjectInstance.GlobalProperties.TryGetValue(InnerBuildPropertyName, out string p) && p == "a"); 2111var innerBuildWithAdditionalReferences = GetNodesWithProjectNumber(graph, 1).First(n => n.ProjectInstance.GlobalProperties.TryGetValue(InnerBuildPropertyName, out string p) && p == "b"); 2138var outerBuild = graph.GraphRoots.First(i => i.ProjectType == ProjectInterpretation.ProjectType.OuterBuild); 2143var referencedInnerBuild = GetNodesWithProjectNumber(graph, 1).First(n => n.ProjectInstance.GetPropertyValue(InnerBuildPropertyName) == "a"); 2145var two = GetFirstNodeWithProjectNumber(graph, 2); 2172var rootNode = graph.GraphRoots.First(); 2176var innerBuildNode = rootNode.ProjectReferences.First(); 2216var outerBuild1 = GetOuterBuild(graph, 1); 2220var innerBuild1WithReferenceToInnerBuild2 = outerBuild1.ProjectReferences.FirstOrDefault(n => n.ProjectType == ProjectInterpretation.ProjectType.InnerBuild && n.ProjectInstance.GlobalProperties[InnerBuildPropertyName] == "a"); 2223var outerBuild2 = GetOuterBuild(graph, 2); 2226var innerBuild2 = GetInnerBuilds(graph, 2).FirstOrDefault(); 2334foreach (var node in projectGraph.ProjectNodes) 2364foreach (var node in graph.ProjectNodes) 2540foreach (var innerBuild in innerBuilds1) 2552foreach (var innerBuild in innerBuilds4) 2619var outerBuild1 = GetOuterBuild(graph, 1); 2627foreach (var inner1 in innerBuildsFor1) 2633var outerBuild2 = GetOuterBuild(graph, 2); 2640foreach (var inner2 in innerBuildsFor2) 2645var outerBuild3 = GetOuterBuild(graph, 3); 2654foreach (var inner3 in innerBuildsFor3) 2696IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = graph.GetTargetLists(Array.Empty<string>()); 2698ProjectGraphNode project1 = GetFirstNodeWithProjectNumber(graph, 1); 2699ProjectGraphNode project2 = GetFirstNodeWithProjectNumber(graph, 2); 2738IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = graph.GetTargetLists(Array.Empty<string>()); 2740ProjectGraphNode project1 = GetFirstNodeWithProjectNumber(graph, 1); 2741ProjectGraphNode project2 = GetFirstNodeWithProjectNumber(graph, 2); 2797IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = graph.GetTargetLists(Array.Empty<string>()); 2800foreach (ProjectGraphNode inner in GetInnerBuilds(graph, 1)) 2806foreach (ProjectGraphNode inner in GetInnerBuilds(graph, 2)) 2874ProjectGraphNode project1Node = GetFirstNodeWithProjectNumber(projectGraph, 1); 2875ProjectGraphNode project2Node = GetFirstNodeWithProjectNumber(projectGraph, 2); 2877IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetLists = projectGraph.GetTargetLists(entryTargets);
Graph\ResultCacheBasedBuilds_Tests.cs (10)
20using ExpectedNodeBuildOutput = System.Collections.Generic.Dictionary<Microsoft.Build.Graph.ProjectGraphNode, string[]>; 21using OutputCacheDictionary = System.Collections.Generic.Dictionary<Microsoft.Build.Graph.ProjectGraphNode, string>; 306foreach (var node in topoSortedNodes) 349var rootNode = topoSortedNodes.First(n => Path.GetFileNameWithoutExtension(n.ProjectInstance.FullPath) == "1"); 424IReadOnlyCollection<ProjectGraphNode> topoSortedNodes, 430Func<ProjectGraphNode, ExpectedNodeBuildOutput, string[]> expectedOutputProducer = null, 431IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetListsPerNode = null, 444foreach (var node in topoSortedNodes) 491string[] ExpectedBuildOutputForNode(ProjectGraphNode node) 509private static string ProjectNumber(ProjectGraphNode node) => Path.GetFileNameWithoutExtension(node.ProjectInstance.FullPath);
ProjectCache\ProjectCacheTests.cs (16)
164public CacheResult GetExpectedCacheResultForNode(ProjectGraphNode node) 341public CacheResult GetCacheResultForNode(ProjectGraphNode node) 514var nodesToBuildResults = new Dictionary<ProjectGraphNode, BuildResult>(); 519foreach (var node in graph.ProjectNodesTopologicallySorted) 537(MockLogger logger, ProjectGraph graph, Dictionary<ProjectGraphNode, BuildResult> nodesToBuildResults) = BuildGraphVsScenario(testData, buildParameters); 561private (MockLogger logger, ProjectGraph projectGraph, Dictionary<ProjectGraphNode, BuildResult> nodesToBuildResults) BuildGraphVsScenario( 566var nodesToBuildResults = new Dictionary<ProjectGraphNode, BuildResult>(); 601foreach (var node in graph.ProjectNodesTopologicallySorted) 623foreach (var node in graph.ProjectNodes) 647private static string CreateSolutionConfigurationProperty(IReadOnlyCollection<ProjectGraphNode> projectNodes) 653foreach (var node in projectNodes) 703var rootNode = graph.GraphRoots.First(); 795IReadOnlyDictionary<ProjectGraphNode, BuildResult> projectPathToBuildResults, 811foreach (var node in graph.ProjectNodes) 851private static int GetProjectNumber(ProjectGraphNode node) => GetProjectNumber(node.ProjectInstance.FullPath); 1499foreach (var node in graph.ProjectNodes.Where(n => referenceNumbers.Contains(GetProjectNumber(n))))
SolutionFileBuilder.cs (1)
95n => GraphTestingUtilities.GetProjectNumber((ProjectGraphNode)n).ToString(),