1 instantiation of ProjectGraphNode
Microsoft.Build (1)
Graph\GraphBuilder.cs (1)
592
var graphNode = new
ProjectGraphNode
(projectInstance);
204 references to ProjectGraphNode
dotnet-watch (3)
Watch\DotNetWatcher.cs (1)
39
ProjectGraphNode
? projectRootNode;
Watch\StaticFileHandler.cs (2)
18
var projectsWithoutRefreshServer = new HashSet<
ProjectGraphNode
>();
34
foreach (
var
projectNode in projectGraph.GetProjectNodes(containingProjectPath))
Microsoft.Build (118)
BackEnd\BuildManager\BuildManager.cs (14)
2466
Dictionary<
ProjectGraphNode
, BuildResult>? resultsPerNode = null;
2472
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = projectGraph.GetTargetLists(submission.BuildRequestData.TargetNames);
2479
foreach (
ProjectGraphNode
entryPointNode in projectGraph.EntryPointNodes)
2497
new ReadOnlyDictionary<
ProjectGraphNode
, BuildResult>(resultsPerNode ?? new Dictionary<
ProjectGraphNode
, BuildResult>())));
2499
static void DumpGraph(ProjectGraph graph, IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>>? targetList = null)
2513
private Dictionary<
ProjectGraphNode
, BuildResult> BuildGraph(
2515
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode,
2526
var blockedNodes = new HashSet<
ProjectGraphNode
>(projectGraph.ProjectNodes);
2527
var finishedNodes = new HashSet<
ProjectGraphNode
>(projectGraph.ProjectNodes.Count);
2528
var buildingNodes = new Dictionary<BuildSubmissionBase,
ProjectGraphNode
>();
2529
var resultsPerNode = new Dictionary<
ProjectGraphNode
, BuildResult>(projectGraph.ProjectNodes.Count);
2548
foreach (
var
node in unblockedNodes)
2585
ProjectGraphNode
finishedNode = buildingNodes[finishedBuildSubmission];
Graph\GraphBuilder.cs (47)
35
public IReadOnlyCollection<
ProjectGraphNode
> ProjectNodes { get; private set; }
37
public IReadOnlyCollection<
ProjectGraphNode
> RootNodes { get; private set; }
39
public IReadOnlyCollection<
ProjectGraphNode
> EntryPointNodes { get; private set; }
116
private static IReadOnlyCollection<
ProjectGraphNode
> GetGraphRoots(IReadOnlyCollection<
ProjectGraphNode
> entryPointNodes)
118
var graphRoots = new List<
ProjectGraphNode
>(entryPointNodes.Count);
120
foreach (
var
entryPointNode in entryPointNodes)
149
Dictionary<
ProjectGraphNode
, HashSet<
ProjectGraphNode
>> transitiveReferenceCache = new(allParsedProjects.Count);
153
var
currentNode = parsedProject.Value.GraphNode;
168
foreach (
var
transitiveProjectReference in GetTransitiveProjectReferencesExcludingSelf(allParsedProjects[referenceInfo.ReferenceConfiguration]))
184
HashSet<
ProjectGraphNode
> GetTransitiveProjectReferencesExcludingSelf(ParsedProject parsedProject)
186
if (transitiveReferenceCache.TryGetValue(parsedProject.GraphNode, out HashSet<
ProjectGraphNode
> transitiveReferences))
210
foreach (
ProjectGraphNode
transitiveReference in GetTransitiveProjectReferencesExcludingSelf(reference))
222
var projectsByPath = new Dictionary<string, List<
ProjectGraphNode
>>();
228
if (projectsByPath.TryGetValue(projectPath, out List<
ProjectGraphNode
> value))
234
projectsByPath[projectPath] = new List<
ProjectGraphNode
> { project.Value.GraphNode };
247
Assumed.True(projectsByPath.TryGetValue(referencedProjectPath, out List<
ProjectGraphNode
> projectToReturn), "nodes should include solution projects");
251
foreach (
var
referencingNode in referencingNodes)
253
foreach (
var
referencedNode in referencedNodes)
460
IReadOnlyCollection<
ProjectGraphNode
> entryPointNodes,
464
var nodeStates = new Dictionary<
ProjectGraphNode
, NodeVisitationState>();
466
foreach (
var
entryPointNode in entryPointNodes)
481
ProjectGraphNode
node,
482
IDictionary<
ProjectGraphNode
, NodeVisitationState> nodeState)
486
foreach (
var
referenceNode in node.ProjectReferences)
592
var
graphNode = new ProjectGraphNode(projectInstance);
625
private List<ProjectInterpretation.ReferenceInfo> ParseReferences(
ProjectGraphNode
parsedProject)
703
private ConcurrentDictionary<(
ProjectGraphNode
,
ProjectGraphNode
), ProjectItemInstance> ReferenceItems =
704
new ConcurrentDictionary<(
ProjectGraphNode
,
ProjectGraphNode
), ProjectItemInstance>();
708
public ProjectItemInstance this[(
ProjectGraphNode
node,
ProjectGraphNode
reference) key]
717
public void AddOrUpdateEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance edge)
722
addValueFactory: static ((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance referenceItem) => referenceItem,
723
updateValueFactory: static ((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance existingItem, ProjectItemInstance newItem) =>
748
static string GetEffectiveTargets(
ProjectGraphNode
reference, string targetsMetadata)
761
public void RemoveEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key)
766
internal bool HasEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key) => ReferenceItems.ContainsKey(key);
788
public
ProjectGraphNode
GraphNode { get; }
791
public ParsedProject(ConfigurationMetadata configurationMetadata,
ProjectGraphNode
graphNode, List<ProjectInterpretation.ReferenceInfo> referenceInfos)
Graph\GraphBuildRequestData.cs (2)
200
foreach (
ProjectGraphNode
entryPoint in ProjectGraph.EntryPointNodes)
219
ProjectGraphNode
? node = ProjectGraph?.EntryPointNodes.FirstOrDefault();
Graph\GraphBuildResult.cs (5)
19
internal GraphBuildResult(int submissionId, IReadOnlyDictionary<
ProjectGraphNode
, BuildResult> resultsByNode)
34
ResultsByNode = ImmutableDictionary<
ProjectGraphNode
, BuildResult>.Empty;
64
foreach (KeyValuePair<
ProjectGraphNode
, BuildResult> result in ResultsByNode)
79
public IReadOnlyDictionary<
ProjectGraphNode
, BuildResult> ResultsByNode { get; }
87
public BuildResult this[
ProjectGraphNode
node] => ResultsByNode[node];
Graph\ProjectGraph.cs (35)
61
private readonly Lazy<IReadOnlyCollection<
ProjectGraphNode
>> _projectNodesTopologicallySorted;
93
public IReadOnlyCollection<
ProjectGraphNode
> EntryPointNodes { get; }
98
public IReadOnlyCollection<
ProjectGraphNode
> ProjectNodes { get; }
104
public IReadOnlyCollection<
ProjectGraphNode
> ProjectNodesTopologicallySorted => _projectNodesTopologicallySorted.Value;
106
public IReadOnlyCollection<
ProjectGraphNode
> GraphRoots { get; }
479
_projectNodesTopologicallySorted = new Lazy<IReadOnlyCollection<
ProjectGraphNode
>>(() => TopologicalSort(GraphRoots, ProjectNodes));
521
internal string ToDot(IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = null)
528
Func<
ProjectGraphNode
, string> nodeIdProvider,
529
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = null)
533
var nodeIds = new ConcurrentDictionary<
ProjectGraphNode
, string>();
543
foreach (
var
node in ProjectNodes)
558
foreach (
var
reference in node.ProjectReferences)
570
string GetNodeId(
ProjectGraphNode
node)
575
string GetTargetListString(
ProjectGraphNode
node)
589
private static IReadOnlyCollection<
ProjectGraphNode
> TopologicalSort(
590
IReadOnlyCollection<
ProjectGraphNode
> graphRoots,
591
IReadOnlyCollection<
ProjectGraphNode
> graphNodes)
593
var toposort = new List<
ProjectGraphNode
>(graphNodes.Count);
594
var partialRoots = new Queue<
ProjectGraphNode
>(graphNodes.Count);
597
foreach (
var
root in graphRoots)
604
var
partialRoot = partialRoots.Dequeue();
608
foreach (
var
reference in partialRoot.ProjectReferences)
639
public IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> GetTargetLists(ICollection<string> entryProjectTargets)
652
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
667
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
695
ProjectGraphNode
node = GetNodeForProject(project);
713
ProjectGraphNode
node = GetNodeForProject(project);
721
ProjectGraphNode
GetNodeForProject(ProjectInSolution project) => EntryPointNodes.First(node => string.Equals(node.ProjectInstance.FullPath, project.AbsolutePath));
727
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
741
var
node = buildRequest.Node;
756
foreach (
var
referenceNode in node.ProjectReferences)
782
var entriesToUpdate = new List<KeyValuePair<
ProjectGraphNode
, ImmutableList<string>>>();
804
entriesToUpdate.Add(new KeyValuePair<
ProjectGraphNode
, ImmutableList<string>>(pair.Key, targetList));
1000
public ProjectGraphBuildRequest(
ProjectGraphNode
node, string[] targets)
1006
public
ProjectGraphNode
Node { get; }
Graph\ProjectGraphNode.cs (9)
19
private readonly HashSet<
ProjectGraphNode
> _projectReferences = new HashSet<
ProjectGraphNode
>();
20
private readonly HashSet<
ProjectGraphNode
> _referencingProjects = new HashSet<
ProjectGraphNode
>();
36
public IReadOnlyCollection<
ProjectGraphNode
> ProjectReferences => _projectReferences;
41
public IReadOnlyCollection<
ProjectGraphNode
> ReferencingProjects => _referencingProjects;
56
internal void AddProjectReference(
ProjectGraphNode
reference, ProjectItemInstance projectReferenceItem, GraphBuilder.GraphEdges edges)
64
internal void RemoveReference(
ProjectGraphNode
reference, GraphBuilder.GraphEdges edges)
74
foreach (
var
reference in _projectReferences)
Graph\ProjectInterpretation.cs (6)
75
public IEnumerable<ReferenceInfo> GetReferences(
ProjectGraphNode
projectGraphNode, ProjectCollection projectCollection, ProjectGraph.ProjectInstanceFactoryFunc projectInstanceFactory, ProjectGraphMode graphMode)
290
ProjectGraphNode
outerBuild = node.Value.GraphNode;
294
foreach (
ProjectGraphNode
innerBuild in outerBuild.ProjectReferences)
296
foreach (
ProjectGraphNode
outerBuildReferencingProject in outerBuild.ReferencingProjects)
595
public string[] GetApplicableTargetsForReference(
ProjectGraphNode
projectGraphNode)
639
public bool RequiresTransitiveProjectReferences(
ProjectGraphNode
projectGraphNode)
Microsoft.DotNet.HotReload.Watch (73)
AppModels\BlazorWebAssemblyAppModel.cs (2)
15
internal sealed class BlazorWebAssemblyAppModel(DotNetWatchContext context,
ProjectGraphNode
clientProject)
18
public override
ProjectGraphNode
LaunchingProject => clientProject;
AppModels\BlazorWebAssemblyHostedAppModel.cs (4)
17
internal sealed class BlazorWebAssemblyHostedAppModel(DotNetWatchContext context,
ProjectGraphNode
clientProject,
ProjectGraphNode
serverProject)
20
public override
ProjectGraphNode
LaunchingProject => serverProject;
22
public override
ProjectGraphNode
BrowserToolsProject => clientProject;
AppModels\DefaultAppModel.cs (1)
13
internal sealed class DefaultAppModel(
ProjectGraphNode
project) : HotReloadAppModel
AppModels\HotReloadAppModel.cs (3)
17
public static string GetStartupHookPath(
ProjectGraphNode
project)
23
public static HotReloadAppModel InferFromProject(DotNetWatchContext context,
ProjectGraphNode
projectNode)
59
internal static bool IsManagedAgentSupported(
ProjectGraphNode
project, ILogger logger)
AppModels\MobileAppModel.cs (1)
11
internal sealed class MobileAppModel(DotNetWatchContext context,
ProjectGraphNode
project) : HotReloadAppModel
AppModels\WebApplicationAppModel.cs (5)
28
public abstract
ProjectGraphNode
LaunchingProject { get; }
34
public virtual
ProjectGraphNode
BrowserToolsProject => LaunchingProject;
49
protected WebAssemblyHotReloadClient CreateWebAssemblyClient(ILogger clientLogger, ILogger agentLogger, BrowserRefreshServer browserRefreshServer,
ProjectGraphNode
clientProject)
91
public BrowserRefreshServer? TryCreateRefreshServer(
ProjectGraphNode
projectNode)
121
public bool IsServerSupported(
ProjectGraphNode
projectNode, ILogger logger)
AppModels\WebServerAppModel.cs (2)
11
internal sealed class WebServerAppModel(DotNetWatchContext context,
ProjectGraphNode
serverProject)
14
public override
ProjectGraphNode
LaunchingProject => serverProject;
Browser\BrowserLauncher.cs (3)
22
ProjectGraphNode
projectNode,
108
ProjectGraphNode
projectNode,
136
private LaunchSettingsProfile GetLaunchProfile(
ProjectGraphNode
projectNode, ProjectOptions projectOptions)
Browser\BrowserRefreshServerFactory.cs (3)
46
public async ValueTask<BrowserRefreshServer?> GetOrCreateBrowserRefreshServerAsync(
ProjectGraphNode
projectNode, WebApplicationAppModel appModel, CancellationToken cancellationToken)
52
var
browserToolsProject = appModel.BrowserToolsProject;
95
public bool TryGetRefreshServer(
ProjectGraphNode
projectNode, [NotNullWhen(true)] out BrowserRefreshServer? server)
Browser\BrowserToolsBuildOutputs.cs (1)
71
public static BrowserToolsBuildOutputs? TryGetFor(
ProjectGraphNode
projectNode, ILogger logger)
Build\EvaluationResult.cs (1)
150
static bool HasParentWithTargetFramework(
ProjectGraphNode
node)
Build\FilePathExclusions.cs (1)
21
foreach (
var
projectNode in projectGraph.ProjectNodes)
Build\LoadedProjectGraph.cs (7)
15
private readonly IReadOnlyDictionary<string, IReadOnlyList<
ProjectGraphNode
>> _innerBuildNodes =
18
elementSelector: static g => (IReadOnlyList<
ProjectGraphNode
>)[.. g]);
34
public IReadOnlyList<
ProjectGraphNode
> GetProjectNodes(string projectPath)
45
public
ProjectGraphNode
GetProjectNode(ProjectInstanceId projectId)
48
public
ProjectGraphNode
? TryGetProjectNode(string projectPath, string? targetFramework)
67
ProjectGraphNode
? candidate = null;
68
foreach (
var
node in projectNodes)
Build\ProjectGraphUtilities.cs (30)
13
extension(
ProjectGraphNode
projectNode)
28
public static Version? GetTargetFrameworkVersion(this
ProjectGraphNode
projectNode)
40
public static IEnumerable<string> GetWebAssemblyCapabilities(this
ProjectGraphNode
projectNode)
43
public static bool IsTargetFrameworkVersionOrNewer(this
ProjectGraphNode
projectNode, Version minVersion)
49
public static bool IsNetCoreApp(this
ProjectGraphNode
projectNode)
52
public static bool IsNetCoreApp(this
ProjectGraphNode
projectNode, Version minVersion)
55
public static bool IsWebApp(this
ProjectGraphNode
projectNode)
70
public static IEnumerable<string> GetCapabilities(this
ProjectGraphNode
projectNode)
73
public static bool IsAutoRestartEnabled(this
ProjectGraphNode
projectNode)
76
public static bool AreDefaultItemsEnabled(this
ProjectGraphNode
projectNode)
79
public static IReadOnlyList<string> GetDefaultItemExcludes(this
ProjectGraphNode
projectNode)
83
public static IReadOnlyList<string> GetStringListPropertyValue(this
ProjectGraphNode
projectNode, string propertyName)
89
public static bool GetBooleanPropertyValue(this
ProjectGraphNode
projectNode, string propertyName, bool defaultValue = false)
101
public static IEnumerable<
ProjectGraphNode
> GetAncestorsAndSelf(this
ProjectGraphNode
project)
107
public static IEnumerable<
ProjectGraphNode
> GetAncestorsAndSelf(this IEnumerable<
ProjectGraphNode
> projects)
113
public static IEnumerable<
ProjectGraphNode
> GetDescendantsAndSelf(this
ProjectGraphNode
project)
119
public static IEnumerable<
ProjectGraphNode
> GetDescendantsAndSelf(this IEnumerable<
ProjectGraphNode
> projects)
122
private static IEnumerable<
ProjectGraphNode
> GetTransitiveProjects(IEnumerable<
ProjectGraphNode
> projects, Func<
ProjectGraphNode
, IEnumerable<
ProjectGraphNode
>> getEdges)
124
var visited = new HashSet<
ProjectGraphNode
>();
125
var queue = new Queue<
ProjectGraphNode
>();
126
foreach (
var
project in projects)
133
var
project = queue.Dequeue();
141
foreach (
var
referencingProject in getEdges(project))
HotReload\HotReloadDotNetWatcher.cs (2)
1097
var
projectNodeForDeviceCheck = projectGraph.TryGetProjectNode(rootProject.FullPath, targetFramework);
1203
var
projectNode = projectGraph.TryGetProjectNode(rootProject.FullPath, targetFramework);
HotReload\ProjectUpdatesBuilder.StaticWebAssets.cs (1)
34
private static ProjectInstanceInfo GetInfo(
ProjectGraphNode
projectNode)
HotReload\RunningProjectsManager.cs (2)
52
ProjectGraphNode
projectNode,
480
foreach (
var
ancestor in containingProjectNodes[0].GetAncestorsAndSelf())
Process\ProjectLauncher.cs (1)
39
var
projectNode = projectGraph.TryGetProjectNode(projectOptions.Representation.ProjectGraphPath, projectOptions.TargetFramework);
Process\RunningProject.cs (2)
21
ProjectGraphNode
projectNode,
31
public
ProjectGraphNode
ProjectNode => projectNode;
Process\WebServerProcessStateObserver.cs (1)
24
public static Action<OutputLine> GetObserver(
ProjectGraphNode
serverProject, Action<string> onServerListening)
NuGet.Build.Tasks.Console (1)
MSBuildStaticGraphRestore.cs (1)
1338
foreach (
ProjectGraphNode
projectGraphItem in projectGraph.ProjectNodes)
SelectTests (9)
GraphAffectedProjects.cs (9)
257
private static Dictionary<string, List<
ProjectGraphNode
>> BuildNodesByProjectPath(IEnumerable<
ProjectGraphNode
> graphNodes)
261
var nodesByProjectPath = new Dictionary<string, List<
ProjectGraphNode
>>(s_pathComparer);
262
foreach (
var
node in graphNodes)
287
private static Dictionary<string, HashSet<string>> BuildInputFileIndex(IEnumerable<
ProjectGraphNode
> graphNodes)
291
foreach (
var
node in graphNodes)
334
IReadOnlyDictionary<string, List<
ProjectGraphNode
>> nodesByProjectPath,
392
IReadOnlyDictionary<string, List<
ProjectGraphNode
>> nodesByProjectPath,
405
foreach (
var
node in nodes)