1 instantiation of ProjectGraphNode
Microsoft.Build (1)
Graph\GraphBuilder.cs (1)
583var graphNode = new ProjectGraphNode(projectInstance);
189 references to ProjectGraphNode
dotnet-watch (3)
Watch\DotNetWatcher.cs (1)
38ProjectGraphNode? projectRootNode;
Watch\StaticFileHandler.cs (2)
18var projectsWithoutRefreshServer = new HashSet<ProjectGraphNode>(); 34foreach (var projectNode in projectGraph.GetProjectNodes(containingProjectPath))
Microsoft.Build (118)
BackEnd\BuildManager\BuildManager.cs (14)
2201Dictionary<ProjectGraphNode, BuildResult>? resultsPerNode = null; 2207IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetsPerNode = projectGraph.GetTargetLists(submission.BuildRequestData.TargetNames); 2214foreach (ProjectGraphNode entryPointNode in projectGraph.EntryPointNodes) 2234new ReadOnlyDictionary<ProjectGraphNode, BuildResult>(resultsPerNode ?? new Dictionary<ProjectGraphNode, BuildResult>()))); 2236static void DumpGraph(ProjectGraph graph, IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>>? targetList = null) 2249private Dictionary<ProjectGraphNode, BuildResult> BuildGraph( 2251IReadOnlyDictionary<ProjectGraphNode, ImmutableList<string>> targetsPerNode, 2262var blockedNodes = new HashSet<ProjectGraphNode>(projectGraph.ProjectNodes); 2263var finishedNodes = new HashSet<ProjectGraphNode>(projectGraph.ProjectNodes.Count); 2264var buildingNodes = new Dictionary<BuildSubmissionBase, ProjectGraphNode>(); 2265var resultsPerNode = new Dictionary<ProjectGraphNode, BuildResult>(projectGraph.ProjectNodes.Count); 2284foreach (var node in unblockedNodes) 2321ProjectGraphNode finishedNode = buildingNodes[finishedBuildSubmission];
Graph\GraphBuilder.cs (47)
34public IReadOnlyCollection<ProjectGraphNode> ProjectNodes { get; private set; } 36public IReadOnlyCollection<ProjectGraphNode> RootNodes { get; private set; } 38public IReadOnlyCollection<ProjectGraphNode> EntryPointNodes { get; private set; } 112private static IReadOnlyCollection<ProjectGraphNode> GetGraphRoots(IReadOnlyCollection<ProjectGraphNode> entryPointNodes) 114var graphRoots = new List<ProjectGraphNode>(entryPointNodes.Count); 116foreach (var entryPointNode in entryPointNodes) 145Dictionary<ProjectGraphNode, HashSet<ProjectGraphNode>> transitiveReferenceCache = new(allParsedProjects.Count); 149var currentNode = parsedProject.Value.GraphNode; 164foreach (var transitiveProjectReference in GetTransitiveProjectReferencesExcludingSelf(allParsedProjects[referenceInfo.ReferenceConfiguration])) 180HashSet<ProjectGraphNode> GetTransitiveProjectReferencesExcludingSelf(ParsedProject parsedProject) 182if (transitiveReferenceCache.TryGetValue(parsedProject.GraphNode, out HashSet<ProjectGraphNode> transitiveReferences)) 199foreach (ProjectGraphNode transitiveReference in GetTransitiveProjectReferencesExcludingSelf(reference)) 211var projectsByPath = new Dictionary<string, List<ProjectGraphNode>>(); 217if (projectsByPath.TryGetValue(projectPath, out List<ProjectGraphNode> value)) 223projectsByPath[projectPath] = new List<ProjectGraphNode> { project.Value.GraphNode }; 236ErrorUtilities.VerifyThrow(projectsByPath.TryGetValue(referencedProjectPath, out List<ProjectGraphNode> projectToReturn), "nodes should include solution projects"); 240foreach (var referencingNode in referencingNodes) 242foreach (var referencedNode in referencedNodes) 449IReadOnlyCollection<ProjectGraphNode> entryPointNodes, 453var nodeStates = new Dictionary<ProjectGraphNode, NodeVisitationState>(); 455foreach (var entryPointNode in entryPointNodes) 472ProjectGraphNode node, 473IDictionary<ProjectGraphNode, NodeVisitationState> nodeState) 477foreach (var referenceNode in node.ProjectReferences) 583var graphNode = new ProjectGraphNode(projectInstance); 616private List<ProjectInterpretation.ReferenceInfo> ParseReferences(ProjectGraphNode parsedProject) 694private ConcurrentDictionary<(ProjectGraphNode, ProjectGraphNode), ProjectItemInstance> ReferenceItems = 695new ConcurrentDictionary<(ProjectGraphNode, ProjectGraphNode), ProjectItemInstance>(); 699public ProjectItemInstance this[(ProjectGraphNode node, ProjectGraphNode reference) key] 708public void AddOrUpdateEdge((ProjectGraphNode node, ProjectGraphNode reference) key, ProjectItemInstance edge) 713addValueFactory: static ((ProjectGraphNode node, ProjectGraphNode reference) key, ProjectItemInstance referenceItem) => referenceItem, 714updateValueFactory: static ((ProjectGraphNode node, ProjectGraphNode reference) key, ProjectItemInstance existingItem, ProjectItemInstance newItem) => 733static string GetEffectiveTargets(ProjectGraphNode reference, string targetsMetadata) 746public void RemoveEdge((ProjectGraphNode node, ProjectGraphNode reference) key) 751internal bool HasEdge((ProjectGraphNode node, ProjectGraphNode reference) key) => ReferenceItems.ContainsKey(key); 773public ProjectGraphNode GraphNode { get; } 776public 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)
20private readonly HashSet<ProjectGraphNode> _projectReferences = new HashSet<ProjectGraphNode>(); 21private readonly HashSet<ProjectGraphNode> _referencingProjects = new HashSet<ProjectGraphNode>(); 37public IReadOnlyCollection<ProjectGraphNode> ProjectReferences => _projectReferences; 42public IReadOnlyCollection<ProjectGraphNode> ReferencingProjects => _referencingProjects; 57internal void AddProjectReference(ProjectGraphNode reference, ProjectItemInstance projectReferenceItem, GraphBuilder.GraphEdges edges) 65internal void RemoveReference(ProjectGraphNode reference, GraphBuilder.GraphEdges edges) 75foreach (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.DotNet.HotReload.Watch (67)
AppModels\BlazorWebAssemblyAppModel.cs (2)
15internal sealed class BlazorWebAssemblyAppModel(DotNetWatchContext context, ProjectGraphNode clientProject) 18public override ProjectGraphNode LaunchingProject => clientProject;
AppModels\BlazorWebAssemblyHostedAppModel.cs (3)
17internal sealed class BlazorWebAssemblyHostedAppModel(DotNetWatchContext context, ProjectGraphNode clientProject, ProjectGraphNode serverProject) 20public override ProjectGraphNode LaunchingProject => serverProject;
AppModels\DefaultAppModel.cs (1)
13internal sealed class DefaultAppModel(ProjectGraphNode project) : HotReloadAppModel
AppModels\HotReloadAppModel.cs (3)
17public static string GetStartupHookPath(ProjectGraphNode project) 23public static HotReloadAppModel InferFromProject(DotNetWatchContext context, ProjectGraphNode projectNode) 59internal static bool IsManagedAgentSupported(ProjectGraphNode project, ILogger logger)
AppModels\MobileAppModel.cs (1)
11internal sealed class MobileAppModel(DotNetWatchContext context, ProjectGraphNode project) : HotReloadAppModel
AppModels\WebApplicationAppModel.cs (4)
24public abstract ProjectGraphNode LaunchingProject { get; } 39protected WebAssemblyHotReloadClient CreateWebAssemblyClient(ILogger clientLogger, ILogger agentLogger, BrowserRefreshServer browserRefreshServer, ProjectGraphNode clientProject) 50public BrowserRefreshServer? TryCreateRefreshServer(ProjectGraphNode projectNode) 68public bool IsServerSupported(ProjectGraphNode projectNode, ILogger logger)
AppModels\WebServerAppModel.cs (2)
11internal sealed class WebServerAppModel(DotNetWatchContext context, ProjectGraphNode serverProject) 14public override ProjectGraphNode LaunchingProject => serverProject;
Browser\BrowserLauncher.cs (1)
22ProjectGraphNode projectNode,
Browser\BrowserRefreshServerFactory.cs (2)
42public async ValueTask<BrowserRefreshServer?> GetOrCreateBrowserRefreshServerAsync(ProjectGraphNode projectNode, WebApplicationAppModel appModel, CancellationToken cancellationToken) 74public bool TryGetRefreshServer(ProjectGraphNode projectNode, [NotNullWhen(true)] out BrowserRefreshServer? server)
Build\EvaluationResult.cs (1)
152static bool HasParentWithTargetFramework(ProjectGraphNode node)
Build\FilePathExclusions.cs (1)
21foreach (var projectNode in projectGraph.ProjectNodes)
Build\LoadedProjectGraph.cs (6)
14private readonly IReadOnlyDictionary<string, IReadOnlyList<ProjectGraphNode>> _innerBuildNodes = 17elementSelector: static g => (IReadOnlyList<ProjectGraphNode>)[.. g]); 33public IReadOnlyList<ProjectGraphNode> GetProjectNodes(string projectPath) 44public ProjectGraphNode? TryGetProjectNode(string projectPath, string? targetFramework) 63ProjectGraphNode? candidate = null; 64foreach (var node in projectNodes)
Build\ProjectGraphUtilities.cs (31)
13extension(ProjectGraphNode projectNode) 28public static Version? GetTargetFrameworkVersion(this ProjectGraphNode projectNode) 40public static IEnumerable<string> GetWebAssemblyCapabilities(this ProjectGraphNode projectNode) 43public static bool IsTargetFrameworkVersionOrNewer(this ProjectGraphNode projectNode, Version minVersion) 49public static bool IsNetCoreApp(this ProjectGraphNode projectNode) 52public static bool IsNetCoreApp(this ProjectGraphNode projectNode, Version minVersion) 55public static bool IsWebApp(this ProjectGraphNode projectNode) 61public static string GetAssemblyName(this ProjectGraphNode projectNode) 67public static IEnumerable<string> GetCapabilities(this ProjectGraphNode projectNode) 70public static bool IsAutoRestartEnabled(this ProjectGraphNode projectNode) 73public static bool AreDefaultItemsEnabled(this ProjectGraphNode projectNode) 76public static IReadOnlyList<string> GetDefaultItemExcludes(this ProjectGraphNode projectNode) 79public static IReadOnlyList<string> GetStringListPropertyValue(this ProjectGraphNode projectNode, string propertyName) 85public static bool GetBooleanPropertyValue(this ProjectGraphNode projectNode, string propertyName, bool defaultValue = false) 97public static IEnumerable<ProjectGraphNode> GetAncestorsAndSelf(this ProjectGraphNode project) 103public static IEnumerable<ProjectGraphNode> GetAncestorsAndSelf(this IEnumerable<ProjectGraphNode> projects) 109public static IEnumerable<ProjectGraphNode> GetDescendantsAndSelf(this ProjectGraphNode project) 115public static IEnumerable<ProjectGraphNode> GetDescendantsAndSelf(this IEnumerable<ProjectGraphNode> projects) 118private static IEnumerable<ProjectGraphNode> GetTransitiveProjects(IEnumerable<ProjectGraphNode> projects, Func<ProjectGraphNode, IEnumerable<ProjectGraphNode>> getEdges) 120var visited = new HashSet<ProjectGraphNode>(); 121var queue = new Queue<ProjectGraphNode>(); 122foreach (var project in projects) 129var project = queue.Dequeue(); 137foreach (var referencingProject in getEdges(project))
HotReload\CompilationHandler.cs (4)
123ProjectGraphNode projectNode, 702foreach (var containingProjectNode in evaluationResult.ProjectGraph.GetProjectNodes(containingProjectPath)) 714foreach (var referencingProjectNode in containingProjectNode.GetAncestorsAndSelf()) 937foreach (var ancestor in containingProjectNodes[0].GetAncestorsAndSelf())
HotReload\HotReloadDotNetWatcher.cs (1)
1183var projectNode = projectGraph.TryGetProjectNode(rootProject.FullPath, targetFramework);
Process\ProjectLauncher.cs (1)
39var projectNode = projectGraph.TryGetProjectNode(projectOptions.Representation.ProjectGraphPath, projectOptions.TargetFramework);
Process\RunningProject.cs (2)
14ProjectGraphNode projectNode, 24public ProjectGraphNode ProjectNode => projectNode;
Process\WebServerProcessStateObserver.cs (1)
24public static Action<OutputLine> GetObserver(ProjectGraphNode serverProject, Action<string> onServerListening)
NuGet.Build.Tasks.Console (1)
MSBuildStaticGraphRestore.cs (1)
1308foreach (ProjectGraphNode projectGraphItem in projectGraph.ProjectNodes)