1 instantiation of ProjectGraphNode
Microsoft.Build (1)
Graph\GraphBuilder.cs (1)
584
var graphNode = new
ProjectGraphNode
(projectInstance);
190 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)
2224
Dictionary<
ProjectGraphNode
, BuildResult>? resultsPerNode = null;
2230
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = projectGraph.GetTargetLists(submission.BuildRequestData.TargetNames);
2237
foreach (
ProjectGraphNode
entryPointNode in projectGraph.EntryPointNodes)
2255
new ReadOnlyDictionary<
ProjectGraphNode
, BuildResult>(resultsPerNode ?? new Dictionary<
ProjectGraphNode
, BuildResult>())));
2257
static void DumpGraph(ProjectGraph graph, IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>>? targetList = null)
2270
private Dictionary<
ProjectGraphNode
, BuildResult> BuildGraph(
2272
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode,
2283
var blockedNodes = new HashSet<
ProjectGraphNode
>(projectGraph.ProjectNodes);
2284
var finishedNodes = new HashSet<
ProjectGraphNode
>(projectGraph.ProjectNodes.Count);
2285
var buildingNodes = new Dictionary<BuildSubmissionBase,
ProjectGraphNode
>();
2286
var resultsPerNode = new Dictionary<
ProjectGraphNode
, BuildResult>(projectGraph.ProjectNodes.Count);
2305
foreach (
var
node in unblockedNodes)
2342
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; }
115
private static IReadOnlyCollection<
ProjectGraphNode
> GetGraphRoots(IReadOnlyCollection<
ProjectGraphNode
> entryPointNodes)
117
var graphRoots = new List<
ProjectGraphNode
>(entryPointNodes.Count);
119
foreach (
var
entryPointNode in entryPointNodes)
148
Dictionary<
ProjectGraphNode
, HashSet<
ProjectGraphNode
>> transitiveReferenceCache = new(allParsedProjects.Count);
152
var
currentNode = parsedProject.Value.GraphNode;
167
foreach (
var
transitiveProjectReference in GetTransitiveProjectReferencesExcludingSelf(allParsedProjects[referenceInfo.ReferenceConfiguration]))
183
HashSet<
ProjectGraphNode
> GetTransitiveProjectReferencesExcludingSelf(ParsedProject parsedProject)
185
if (transitiveReferenceCache.TryGetValue(parsedProject.GraphNode, out HashSet<
ProjectGraphNode
> transitiveReferences))
202
foreach (
ProjectGraphNode
transitiveReference in GetTransitiveProjectReferencesExcludingSelf(reference))
214
var projectsByPath = new Dictionary<string, List<
ProjectGraphNode
>>();
220
if (projectsByPath.TryGetValue(projectPath, out List<
ProjectGraphNode
> value))
226
projectsByPath[projectPath] = new List<
ProjectGraphNode
> { project.Value.GraphNode };
239
Assumed.True(projectsByPath.TryGetValue(referencedProjectPath, out List<
ProjectGraphNode
> projectToReturn), "nodes should include solution projects");
243
foreach (
var
referencingNode in referencingNodes)
245
foreach (
var
referencedNode in referencedNodes)
452
IReadOnlyCollection<
ProjectGraphNode
> entryPointNodes,
456
var nodeStates = new Dictionary<
ProjectGraphNode
, NodeVisitationState>();
458
foreach (
var
entryPointNode in entryPointNodes)
473
ProjectGraphNode
node,
474
IDictionary<
ProjectGraphNode
, NodeVisitationState> nodeState)
478
foreach (
var
referenceNode in node.ProjectReferences)
584
var
graphNode = new ProjectGraphNode(projectInstance);
617
private List<ProjectInterpretation.ReferenceInfo> ParseReferences(
ProjectGraphNode
parsedProject)
695
private ConcurrentDictionary<(
ProjectGraphNode
,
ProjectGraphNode
), ProjectItemInstance> ReferenceItems =
696
new ConcurrentDictionary<(
ProjectGraphNode
,
ProjectGraphNode
), ProjectItemInstance>();
700
public ProjectItemInstance this[(
ProjectGraphNode
node,
ProjectGraphNode
reference) key]
709
public void AddOrUpdateEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance edge)
714
addValueFactory: static ((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance referenceItem) => referenceItem,
715
updateValueFactory: static ((
ProjectGraphNode
node,
ProjectGraphNode
reference) key, ProjectItemInstance existingItem, ProjectItemInstance newItem) =>
734
static string GetEffectiveTargets(
ProjectGraphNode
reference, string targetsMetadata)
747
public void RemoveEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key)
752
internal bool HasEdge((
ProjectGraphNode
node,
ProjectGraphNode
reference) key) => ReferenceItems.ContainsKey(key);
774
public
ProjectGraphNode
GraphNode { get; }
777
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; }
478
_projectNodesTopologicallySorted = new Lazy<IReadOnlyCollection<
ProjectGraphNode
>>(() => TopologicalSort(GraphRoots, ProjectNodes));
520
internal string ToDot(IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = null)
527
Func<
ProjectGraphNode
, string> nodeIdProvider,
528
IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> targetsPerNode = null)
532
var nodeIds = new ConcurrentDictionary<
ProjectGraphNode
, string>();
542
foreach (
var
node in ProjectNodes)
557
foreach (
var
reference in node.ProjectReferences)
569
string GetNodeId(
ProjectGraphNode
node)
574
string GetTargetListString(
ProjectGraphNode
node)
588
private static IReadOnlyCollection<
ProjectGraphNode
> TopologicalSort(
589
IReadOnlyCollection<
ProjectGraphNode
> graphRoots,
590
IReadOnlyCollection<
ProjectGraphNode
> graphNodes)
592
var toposort = new List<
ProjectGraphNode
>(graphNodes.Count);
593
var partialRoots = new Queue<
ProjectGraphNode
>(graphNodes.Count);
596
foreach (
var
root in graphRoots)
603
var
partialRoot = partialRoots.Dequeue();
607
foreach (
var
reference in partialRoot.ProjectReferences)
638
public IReadOnlyDictionary<
ProjectGraphNode
, ImmutableList<string>> GetTargetLists(ICollection<string> entryProjectTargets)
651
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
666
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
694
ProjectGraphNode
node = GetNodeForProject(project);
712
ProjectGraphNode
node = GetNodeForProject(project);
720
ProjectGraphNode
GetNodeForProject(ProjectInSolution project) => EntryPointNodes.First(node => string.Equals(node.ProjectInstance.FullPath, project.AbsolutePath));
726
foreach (
ProjectGraphNode
entryPointNode in EntryPointNodes)
740
var
node = buildRequest.Node;
755
foreach (
var
referenceNode in node.ProjectReferences)
781
var entriesToUpdate = new List<KeyValuePair<
ProjectGraphNode
, ImmutableList<string>>>();
803
entriesToUpdate.Add(new KeyValuePair<
ProjectGraphNode
, ImmutableList<string>>(pair.Key, targetList));
999
public ProjectGraphBuildRequest(
ProjectGraphNode
node, string[] targets)
1005
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)
585
public string[] GetApplicableTargetsForReference(
ProjectGraphNode
projectGraphNode)
629
public bool RequiresTransitiveProjectReferences(
ProjectGraphNode
projectGraphNode)
Microsoft.DotNet.HotReload.Watch (68)
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)
28
public abstract
ProjectGraphNode
LaunchingProject { get; }
43
protected WebAssemblyHotReloadClient CreateWebAssemblyClient(ILogger clientLogger, ILogger agentLogger, BrowserRefreshServer browserRefreshServer,
ProjectGraphNode
clientProject)
54
public BrowserRefreshServer? TryCreateRefreshServer(
ProjectGraphNode
projectNode)
76
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 (2)
1084
var
projectNodeForDeviceCheck = projectGraph.TryGetProjectNode(rootProject.FullPath, targetFramework);
1190
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)