1 instantiation of ProjectGraphNode
Microsoft.Build (1)
Graph\GraphBuilder.cs (1)
583
var graphNode = new
ProjectGraphNode
(projectInstance);
189 references to ProjectGraphNode
dotnet-watch (3)
Watch\DotNetWatcher.cs (1)
38
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)
2201
Dictionary<
ProjectGraphNode
, BuildResult>? resultsPerNode = null;
2207
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = projectGraph.GetTargetLists(submission.BuildRequestData.TargetNames);
2214
foreach (
ProjectGraphNode
entryPointNode in projectGraph.EntryPointNodes)
2234
new ReadOnlyDictionary<
ProjectGraphNode
, BuildResult>(resultsPerNode ?? new Dictionary<
ProjectGraphNode
, BuildResult>())));
2236
static void DumpGraph(ProjectGraph graph, IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>>? targetList = null)
2249
private Dictionary<
ProjectGraphNode
, BuildResult> BuildGraph(
2251
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode,
2262
var blockedNodes = new HashSet<
ProjectGraphNode
>(projectGraph.ProjectNodes);
2263
var finishedNodes = new HashSet<
ProjectGraphNode
>(projectGraph.ProjectNodes.Count);
2264
var buildingNodes = new Dictionary<BuildSubmissionBase,
ProjectGraphNode
>();
2265
var resultsPerNode = new Dictionary<
ProjectGraphNode
, BuildResult>(projectGraph.ProjectNodes.Count);
2284
foreach (
var
node in unblockedNodes)
2321
ProjectGraphNode
finishedNode = buildingNodes[finishedBuildSubmission];
Graph\GraphBuilder.cs (47)
34
public IReadOnlyCollection<
ProjectGraphNode
> ProjectNodes { get; private set; }
36
public IReadOnlyCollection<
ProjectGraphNode
> RootNodes { get; private set; }
38
public IReadOnlyCollection<
ProjectGraphNode
> EntryPointNodes { get; private set; }
112
private static IReadOnlyCollection<
ProjectGraphNode
> GetGraphRoots(IReadOnlyCollection<
ProjectGraphNode
> entryPointNodes)
114
var graphRoots = new List<
ProjectGraphNode
>(entryPointNodes.Count);
116
foreach (
var
entryPointNode in entryPointNodes)
145
Dictionary<
ProjectGraphNode
, HashSet<
ProjectGraphNode
>> transitiveReferenceCache = new(allParsedProjects.Count);
149
var
currentNode = parsedProject.Value.GraphNode;
164
foreach (
var
transitiveProjectReference in GetTransitiveProjectReferencesExcludingSelf(allParsedProjects[referenceInfo.ReferenceConfiguration]))
180
HashSet<
ProjectGraphNode
> GetTransitiveProjectReferencesExcludingSelf(ParsedProject parsedProject)
182
if (transitiveReferenceCache.TryGetValue(parsedProject.GraphNode, out HashSet<
ProjectGraphNode
> transitiveReferences))
199
foreach (
ProjectGraphNode
transitiveReference in GetTransitiveProjectReferencesExcludingSelf(reference))
211
var projectsByPath = new Dictionary<string, List<
ProjectGraphNode
>>();
217
if (projectsByPath.TryGetValue(projectPath, out List<
ProjectGraphNode
> value))
223
projectsByPath[projectPath] = new List<
ProjectGraphNode
> { project.Value.GraphNode };
236
ErrorUtilities.VerifyThrow(projectsByPath.TryGetValue(referencedProjectPath, out List<
ProjectGraphNode
> projectToReturn), "nodes should include solution projects");
240
foreach (
var
referencingNode in referencingNodes)
242
foreach (
var
referencedNode in referencedNodes)
449
IReadOnlyCollection<
ProjectGraphNode
> entryPointNodes,
453
var nodeStates = new Dictionary<
ProjectGraphNode
, NodeVisitationState>();
455
foreach (
var
entryPointNode in entryPointNodes)
472
ProjectGraphNode
node,
473
IDictionary<
ProjectGraphNode
, NodeVisitationState> nodeState)
477
foreach (
var
referenceNode in node.ProjectReferences)
583
var
graphNode = new ProjectGraphNode(projectInstance);
616
private List<ProjectInterpretation.ReferenceInfo> ParseReferences(
ProjectGraphNode
parsedProject)
694
private ConcurrentDictionary<(
ProjectGraphNode
,
ProjectGraphNode
), ProjectItemInstance> ReferenceItems =
695
new ConcurrentDictionary<(
ProjectGraphNode
,
ProjectGraphNode
), ProjectItemInstance>();
699
public ProjectItemInstance this[(
ProjectGraphNode
node,
ProjectGraphNode
reference) key]
708
public void AddOrUpdateEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance edge)
713
addValueFactory: static ((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance referenceItem) => referenceItem,
714
updateValueFactory: static ((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance existingItem, ProjectItemInstance newItem) =>
733
static string GetEffectiveTargets(
ProjectGraphNode
reference, string targetsMetadata)
746
public void RemoveEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key)
751
internal bool HasEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key) => ReferenceItems.ContainsKey(key);
773
public
ProjectGraphNode
GraphNode { get; }
776
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)
60
private readonly Lazy<IReadOnlyCollection<
ProjectGraphNode
>> _projectNodesTopologicallySorted;
92
public IReadOnlyCollection<
ProjectGraphNode
> EntryPointNodes { get; }
97
public IReadOnlyCollection<
ProjectGraphNode
> ProjectNodes { get; }
103
public IReadOnlyCollection<
ProjectGraphNode
> ProjectNodesTopologicallySorted => _projectNodesTopologicallySorted.Value;
105
public IReadOnlyCollection<
ProjectGraphNode
> GraphRoots { get; }
449
_projectNodesTopologicallySorted = new Lazy<IReadOnlyCollection<
ProjectGraphNode
>>(() => TopologicalSort(GraphRoots, ProjectNodes));
491
internal string ToDot(IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = null)
498
Func<
ProjectGraphNode
, string> nodeIdProvider,
499
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = null)
503
var nodeIds = new ConcurrentDictionary<
ProjectGraphNode
, string>();
513
foreach (
var
node in ProjectNodes)
528
foreach (
var
reference in node.ProjectReferences)
540
string GetNodeId(
ProjectGraphNode
node)
545
string GetTargetListString(
ProjectGraphNode
node)
559
private static IReadOnlyCollection<
ProjectGraphNode
> TopologicalSort(
560
IReadOnlyCollection<
ProjectGraphNode
> graphRoots,
561
IReadOnlyCollection<
ProjectGraphNode
> graphNodes)
563
var toposort = new List<
ProjectGraphNode
>(graphNodes.Count);
564
var partialRoots = new Queue<
ProjectGraphNode
>(graphNodes.Count);
567
foreach (
var
root in graphRoots)
574
var
partialRoot = partialRoots.Dequeue();
578
foreach (
var
reference in partialRoot.ProjectReferences)
609
public IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> GetTargetLists(ICollection<string> entryProjectTargets)
622
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
637
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
665
ProjectGraphNode
node = GetNodeForProject(project);
683
ProjectGraphNode
node = GetNodeForProject(project);
691
ProjectGraphNode
GetNodeForProject(ProjectInSolution project) => EntryPointNodes.First(node => string.Equals(node.ProjectInstance.FullPath, project.AbsolutePath));
697
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
711
var
node = buildRequest.Node;
726
foreach (
var
referenceNode in node.ProjectReferences)
752
var entriesToUpdate = new List<KeyValuePair<
ProjectGraphNode
, ImmutableList<string>>>();
774
entriesToUpdate.Add(new KeyValuePair<
ProjectGraphNode
, ImmutableList<string>>(pair.Key, targetList));
866
public ProjectGraphBuildRequest(
ProjectGraphNode
node, ImmutableList<string> targets)
872
public
ProjectGraphNode
Node { get; }
Graph\ProjectGraphNode.cs (9)
20
private readonly HashSet<
ProjectGraphNode
> _projectReferences = new HashSet<
ProjectGraphNode
>();
21
private readonly HashSet<
ProjectGraphNode
> _referencingProjects = new HashSet<
ProjectGraphNode
>();
37
public IReadOnlyCollection<
ProjectGraphNode
> ProjectReferences => _projectReferences;
42
public IReadOnlyCollection<
ProjectGraphNode
> ReferencingProjects => _referencingProjects;
57
internal void AddProjectReference(
ProjectGraphNode
reference, ProjectItemInstance projectReferenceItem, GraphBuilder.GraphEdges edges)
65
internal void RemoveReference(
ProjectGraphNode
reference, GraphBuilder.GraphEdges edges)
75
foreach (
var
reference in _projectReferences)
Graph\ProjectInterpretation.cs (6)
77
public IEnumerable<ReferenceInfo> GetReferences(
ProjectGraphNode
projectGraphNode, ProjectCollection projectCollection, ProjectGraph.ProjectInstanceFactoryFunc projectInstanceFactory)
250
ProjectGraphNode
outerBuild = node.Value.GraphNode;
254
foreach (
ProjectGraphNode
innerBuild in outerBuild.ProjectReferences)
256
foreach (
ProjectGraphNode
outerBuildReferencingProject in outerBuild.ReferencingProjects)
525
public ImmutableList<string> GetApplicableTargetsForReference(
ProjectGraphNode
projectGraphNode)
546
public bool RequiresTransitiveProjectReferences(
ProjectGraphNode
projectGraphNode)
Microsoft.DotNet.HotReload.Watch (67)
AppModels\BlazorWebAssemblyAppModel.cs (2)
15
internal sealed class BlazorWebAssemblyAppModel(DotNetWatchContext context,
ProjectGraphNode
clientProject)
18
public override
ProjectGraphNode
LaunchingProject => clientProject;
AppModels\BlazorWebAssemblyHostedAppModel.cs (3)
17
internal sealed class BlazorWebAssemblyHostedAppModel(DotNetWatchContext context,
ProjectGraphNode
clientProject,
ProjectGraphNode
serverProject)
20
public override
ProjectGraphNode
LaunchingProject => serverProject;
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 (4)
24
public abstract
ProjectGraphNode
LaunchingProject { get; }
39
protected WebAssemblyHotReloadClient CreateWebAssemblyClient(ILogger clientLogger, ILogger agentLogger, BrowserRefreshServer browserRefreshServer,
ProjectGraphNode
clientProject)
50
public BrowserRefreshServer? TryCreateRefreshServer(
ProjectGraphNode
projectNode)
68
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 (1)
22
ProjectGraphNode
projectNode,
Browser\BrowserRefreshServerFactory.cs (2)
42
public async ValueTask<BrowserRefreshServer?> GetOrCreateBrowserRefreshServerAsync(
ProjectGraphNode
projectNode, WebApplicationAppModel appModel, CancellationToken cancellationToken)
74
public bool TryGetRefreshServer(
ProjectGraphNode
projectNode, [NotNullWhen(true)] out BrowserRefreshServer? server)
Build\EvaluationResult.cs (1)
152
static bool HasParentWithTargetFramework(
ProjectGraphNode
node)
Build\FilePathExclusions.cs (1)
21
foreach (
var
projectNode in projectGraph.ProjectNodes)
Build\LoadedProjectGraph.cs (6)
14
private readonly IReadOnlyDictionary<string, IReadOnlyList<
ProjectGraphNode
>> _innerBuildNodes =
17
elementSelector: static g => (IReadOnlyList<
ProjectGraphNode
>)[.. g]);
33
public IReadOnlyList<
ProjectGraphNode
> GetProjectNodes(string projectPath)
44
public
ProjectGraphNode
? TryGetProjectNode(string projectPath, string? targetFramework)
63
ProjectGraphNode
? candidate = null;
64
foreach (
var
node in projectNodes)
Build\ProjectGraphUtilities.cs (31)
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)
61
public static string GetAssemblyName(this
ProjectGraphNode
projectNode)
67
public static IEnumerable<string> GetCapabilities(this
ProjectGraphNode
projectNode)
70
public static bool IsAutoRestartEnabled(this
ProjectGraphNode
projectNode)
73
public static bool AreDefaultItemsEnabled(this
ProjectGraphNode
projectNode)
76
public static IReadOnlyList<string> GetDefaultItemExcludes(this
ProjectGraphNode
projectNode)
79
public static IReadOnlyList<string> GetStringListPropertyValue(this
ProjectGraphNode
projectNode, string propertyName)
85
public static bool GetBooleanPropertyValue(this
ProjectGraphNode
projectNode, string propertyName, bool defaultValue = false)
97
public static IEnumerable<
ProjectGraphNode
> GetAncestorsAndSelf(this
ProjectGraphNode
project)
103
public static IEnumerable<
ProjectGraphNode
> GetAncestorsAndSelf(this IEnumerable<
ProjectGraphNode
> projects)
109
public static IEnumerable<
ProjectGraphNode
> GetDescendantsAndSelf(this
ProjectGraphNode
project)
115
public static IEnumerable<
ProjectGraphNode
> GetDescendantsAndSelf(this IEnumerable<
ProjectGraphNode
> projects)
118
private static IEnumerable<
ProjectGraphNode
> GetTransitiveProjects(IEnumerable<
ProjectGraphNode
> projects, Func<
ProjectGraphNode
, IEnumerable<
ProjectGraphNode
>> getEdges)
120
var visited = new HashSet<
ProjectGraphNode
>();
121
var queue = new Queue<
ProjectGraphNode
>();
122
foreach (
var
project in projects)
129
var
project = queue.Dequeue();
137
foreach (
var
referencingProject in getEdges(project))
HotReload\CompilationHandler.cs (4)
123
ProjectGraphNode
projectNode,
702
foreach (
var
containingProjectNode in evaluationResult.ProjectGraph.GetProjectNodes(containingProjectPath))
714
foreach (
var
referencingProjectNode in containingProjectNode.GetAncestorsAndSelf())
937
foreach (
var
ancestor in containingProjectNodes[0].GetAncestorsAndSelf())
HotReload\HotReloadDotNetWatcher.cs (1)
1183
var
projectNode = projectGraph.TryGetProjectNode(rootProject.FullPath, targetFramework);
Process\ProjectLauncher.cs (1)
39
var
projectNode = projectGraph.TryGetProjectNode(projectOptions.Representation.ProjectGraphPath, projectOptions.TargetFramework);
Process\RunningProject.cs (2)
14
ProjectGraphNode
projectNode,
24
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)
1308
foreach (
ProjectGraphNode
projectGraphItem in projectGraph.ProjectNodes)