2 instantiations of ProjectId
Microsoft.CodeAnalysis.Workspaces (2)
2274 references to ProjectId
Analyzer.Utilities.UnitTests (4)
AnalyzerRunner (11)
GenerateDocumentationAndConfigFiles (1)
IdeCoreBenchmarks (8)
Microsoft.AspNetCore.Analyzer.Testing (5)
Microsoft.AspNetCore.Components.Analyzers.Tests (2)
Microsoft.AspNetCore.Components.SdkAnalyzers.Tests (2)
Microsoft.CodeAnalysis.Analyzers (4)
Microsoft.CodeAnalysis.Analyzers.UnitTests (2)
Microsoft.CodeAnalysis.BannedApiAnalyzers (1)
Microsoft.CodeAnalysis.BannedApiAnalyzers.UnitTests (1)
Microsoft.CodeAnalysis.CodeStyle.Fixes (2)
Microsoft.CodeAnalysis.CodeStyle.UnitTestUtilities (1)
Microsoft.CodeAnalysis.CSharp.CodeStyle.UnitTests (1)
Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests (42)
Microsoft.CodeAnalysis.CSharp.Features (1)
Microsoft.CodeAnalysis.CSharp.Features.UnitTests (5)
Microsoft.CodeAnalysis.CSharp.Workspaces.UnitTests (5)
Microsoft.CodeAnalysis.EditorFeatures (20)
Microsoft.CodeAnalysis.EditorFeatures.Test.Utilities (12)
Microsoft.CodeAnalysis.EditorFeatures.UnitTests (30)
Microsoft.CodeAnalysis.EditorFeatures2.UnitTests (5)
Diagnostics\DiagnosticProviderTests.vb (4)
327Private Shared Function GetProjectId(workspace As EditorTestWorkspace, projectName As String) As ProjectId
339Private Shared Function SourceError(id As String, message As String, docId As DocumentId, projId As ProjectId, mappedLine As Integer, originalLine As Integer, mappedColumn As Integer,
344Private Shared Function SourceWarning(id As String, message As String, docId As DocumentId, projId As ProjectId, mappedLine As Integer, originalLine As Integer, mappedColumn As Integer,
349Private Shared Function CreateDiagnostic(id As String, message As String, severity As DiagnosticSeverity, docId As DocumentId, projId As ProjectId, mappedLine As Integer, originalLine As Integer, mappedColumn As Integer,
Microsoft.CodeAnalysis.ExternalAccess.Copilot (2)
Microsoft.CodeAnalysis.ExternalAccess.Debugger (1)
Microsoft.CodeAnalysis.ExternalAccess.FSharp (8)
Microsoft.CodeAnalysis.ExternalAccess.OmniSharp (1)
Microsoft.CodeAnalysis.ExternalAccess.Razor.Features (7)
Microsoft.CodeAnalysis.Features (253)
AddImport\AddImportFixData.cs (6)
22ProjectId projectReferenceToAdd = null,
23ProjectId portableExecutableReferenceProjectId = null,
67public readonly ProjectId ProjectReferenceToAdd = projectReferenceToAdd;
79public readonly ProjectId PortableExecutableReferenceProjectId = portableExecutableReferenceProjectId;
113public static AddImportFixData CreateForProjectSymbol(ImmutableArray<TextChange> textChanges, string title, ImmutableArray<string> tags, CodeActionPriority priority, ProjectId projectReferenceToAdd)
121public static AddImportFixData CreateForMetadataSymbol(ImmutableArray<TextChange> textChanges, string title, ImmutableArray<string> tags, CodeActionPriority priority, ProjectId portableExecutableReferenceProjectId, string portableExecutableReferenceFilePathToAdd)
EditAndContinue\EmitSolutionUpdateResults.cs (38)
36public required ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> ProjectsToRestart { get; init; }
39public required ImmutableArray<ProjectId> ProjectsToRebuild { get; init; }
42public required ImmutableArray<ProjectId> ProjectsToRedeploy { get; init; }
81public static Data CreateFromInternalError(Solution solution, string errorMessage, ImmutableDictionary<ProjectId, RunningProjectOptions> runningProjects)
110ProjectsToRestart = ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>>.Empty,
137public required ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> ProjectsToRestart { get; init; }
144public required ImmutableArray<ProjectId> ProjectsToRebuild { get; init; }
150public required ImmutableArray<ProjectId> ProjectsToRedeploy { get; init; }
159ProjectsToRestart = ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>>.Empty,
202IReadOnlyCollection<ProjectId> addedUnbuiltProjects,
203ImmutableDictionary<ProjectId, RunningProjectOptions> runningProjects,
204out ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> projectsToRestart,
205out ImmutableArray<ProjectId> projectsToRebuild)
232using var _1 = ArrayBuilder<ProjectId>.GetInstance(out var traversalStack);
235using var _2 = PooledHashSet<ProjectId>.GetInstance(out var projectsToRestartBuilder);
236var projectsToRebuildBuilder = PooledDictionary<ProjectId, ArrayBuilder<ProjectId>>.GetInstance();
238using var _3 = ArrayBuilder<(ProjectId projectWithRudeEdits, ImmutableArray<ProjectId> impactedRunningProjects)>.GetInstance(out var impactedRunningProjectMap);
249foreach (var ancestor in GetAncestorsAndSelf(projectId))
271foreach (var projectId in addedUnbuiltProjects)
292using var _6 = PooledHashSet<ProjectId>.GetInstance(out var updatedProjects);
293using var _7 = ArrayBuilder<ProjectId>.GetInstance(out var updatedProjectsToRemove);
294using var _8 = PooledHashSet<ProjectId>.GetInstance(out var projectsThatCausedRebuild);
302foreach (var updatedProjectId in updatedProjects)
310foreach (var ancestor in GetAncestorsAndSelf(updatedProjectId))
324foreach (var ancestor in GetAncestorsAndSelf(updatedProjectId))
369IEnumerable<ProjectId> GetAncestorsAndSelf(ProjectId initialProject)
376var projectId = traversalStack.Pop();
379foreach (var referencingProjectId in graph.GetProjectsThatDirectlyDependOnThisProject(projectId))
424public ImmutableArray<(ProjectId projectId, ImmutableArray<Diagnostic> diagnostics)> GetTransientDiagnostics()
426using var _ = ArrayBuilder<(ProjectId projectId, ImmutableArray<Diagnostic> diagnostics)>.GetInstance(out var result);
EditAndContinue\SolutionUpdate.cs (13)
14ImmutableDictionary<ProjectId, Guid> staleProjects,
19ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> projectsToRestart,
20ImmutableArray<ProjectId> projectsToRebuild,
21ImmutableArray<ProjectId> projectsToRedeploy)
24public readonly ImmutableDictionary<ProjectId, Guid> StaleProjects = staleProjects;
31public readonly ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> ProjectsToRestart = projectsToRestart;
32public readonly ImmutableArray<ProjectId> ProjectsToRebuild = projectsToRebuild;
33public readonly ImmutableArray<ProjectId> ProjectsToRedeploy = projectsToRedeploy;
38ImmutableDictionary<ProjectId, Guid> staleProjects,
47projectsToRestart: ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>>.Empty,
ExternalAccess\UnitTesting\SolutionCrawler\UnitTestingWorkCoordinator.UnitTestingSemanticChangeProcessor.cs (11)
177var projectId = thisDocument.Id.ProjectId;
211var self = project.Id;
224foreach (var projectId in GetProjectsToAnalyze(solution, self))
300private static IEnumerable<ProjectId> GetProjectsToAnalyze(Solution solution, ProjectId projectId)
323private static readonly Func<int, ProjectId, string> s_enqueueLogger = (t, i) => string.Format("[{0}] {1}", t, i.ToString());
331private readonly Dictionary<ProjectId, UnitTestingData> _pendingWork = [];
361public void Enqueue(ProjectId projectId, bool needDependencyTracking = false)
419foreach (var projectId in GetProjectsToAnalyze(solution, data.ProjectId))
439private readonly struct UnitTestingData(ProjectId projectId, bool needDependencyTracking, IAsyncToken asyncToken)
442public readonly ProjectId ProjectId = projectId;
FindUsages\DefinitionItemFactory.cs (4)
123var metadataLocations = GetMetadataLocations(definition, solution, out var originatingProjectId);
148internal static ImmutableDictionary<string, string> WithMetadataSymbolProperties(this ImmutableDictionary<string, string> properties, ISymbol symbol, ProjectId originatingProjectId)
154internal static AssemblyLocation GetMetadataLocation(IAssemblySymbol assembly, Solution solution, out ProjectId originatingProjectId)
164internal static ImmutableArray<AssemblyLocation> GetMetadataLocations(ISymbol definition, Solution solution, out ProjectId? originatingProjectId)
NavigateTo\IRemoteNavigateToSearchService.cs (2)
21ValueTask SearchProjectsAsync(Checksum solutionChecksum, ImmutableArray<ProjectId> projectIds, ImmutableArray<DocumentId> priorityDocumentIds, string searchPattern, ImmutableArray<string> kinds, RemoteServiceCallbackId callbackId, CancellationToken cancellationToken);
23ValueTask SearchGeneratedDocumentsAsync(Checksum solutionChecksum, ImmutableArray<ProjectId> projectIds, string searchPattern, ImmutableArray<string> kinds, RemoteServiceCallbackId callbackId, CancellationToken cancellationToken);
PdbSourceDocument\PdbSourceDocumentMetadataAsSourceFileProvider.cs (8)
52private readonly Dictionary<string, ProjectId> _assemblyToProjectMap = [];
59private readonly HashSet<ProjectId> _sourceLinkEnabledProjects = [];
209if (!_assemblyToProjectMap.TryGetValue(assemblyName, out var projectId))
310var projectId = ProjectId.CreateNewId();
326SourceFileInfo?[] sourceFileInfos, Encoding encoding, ProjectId projectId, Workspace sourceWorkspace, Project sourceProject)
402foreach (var projectId in _assemblyToProjectMap.Values)
433internal record struct SourceDocumentInfo(DocumentId DocumentId, Encoding Encoding, SourceHashAlgorithm ChecksumAlgorithm, ProjectId SourceProjectId, Workspace SourceWorkspace, DocumentInfo DocumentInfo);
Microsoft.CodeAnalysis.Features.Test.Utilities (18)
EditAndContinue\EditAndContinueWorkspaceTestBase.cs (8)
45private protected readonly Dictionary<ProjectId, CompilationOutputs> _mockCompilationOutputs = [];
244internal static IEnumerable<string> InspectDiagnostics(ImmutableArray<(ProjectId project, ImmutableArray<Diagnostic> diagnostics)> diagnostics)
280ProjectId projectId,
305ProjectId projectId,
331ProjectId projectId,
362ProjectId projectId,
428internal Guid EmitLibrary(ProjectId projectId, Compilation compilation, DebugInformationFormat pdbFormat = DebugInformationFormat.PortablePdb)
493internal static DocumentInfo CreateDesignTimeOnlyDocument(ProjectId projectId, string name = "design-time-only.cs", string path = "design-time-only.cs")
EditAndContinue\Extensions.cs (8)
57public static Project AddTestProject(this Solution solution, string projectName, out ProjectId id)
60public static Project AddTestProject(this Solution solution, string projectName, string language, out ProjectId id)
61=> AddTestProject(solution, projectName, language, TargetFramework.NetLatest, id = ProjectId.CreateNewId(debugName: projectName));
63public static Project AddTestProject(this Solution solution, string projectName, string language, TargetFramework targetFramework, out ProjectId id)
70public static Project AddTestProject(this Solution solution, string projectName, string language = LanguageNames.CSharp, TargetFramework targetFramework = TargetFramework.NetLatest, ProjectId? id = null)
72id ??= ProjectId.CreateNewId(debugName: projectName);
87public static Document AddTestDocument(this Solution solution, ProjectId projectId, string source, string path, out DocumentId id)
106public static ProjectInfo CreateProjectInfo(string projectName, ProjectId id, string language = LanguageNames.CSharp)
Microsoft.CodeAnalysis.Features.UnitTests (149)
EditAndContinue\EditAndContinueWorkspaceServiceTests.cs (53)
70var projectPId = ProjectId.CreateNewId("P");
279AddTestProject("test", out var projectId).
366AddTestProject("test", language, out var projectId).
459AddTestProject("test", language, out var projectId).
538AddTestProject("test", LanguageNames.VisualBasic, out var projectId).
606AddTestProject("A", out var projectId).
666AddTestProject("test", out var projectId).
712AddTestProject("test", out var projectId).
761AddTestProject("test", out var projectId).
794AddTestProject("test", out var projectId).
833var projectId = document1.Project.Id;
922AddTestProject("test", language, out var projectId).
1021var projectId = document1.Project.Id;
1275AddTestProject("test", out var projectId).
1306AddTestProject("test", out var projectId).
1517var projectId = ProjectId.CreateNewId();
1749var projectId = project.Id;
1943var projectId = document.Project.Id;
2143var projectAId = ProjectId.CreateNewId("A");
2144var projectBId = ProjectId.CreateNewId("B");
2145var projectCId = ProjectId.CreateNewId("C");
2248var projectId = project.Id;
2418var projectId = project.Id;
2475AddTestProject("A", out var projectId).
2498AddTestProject("A", out var projectAId).Solution.
2499AddTestProject("B", out var projectBId).Solution;
2532.AddTestProject("A", out var projectAId)
2541.AddTestProject("B", out var projectBId)
2545var runningProjects = ImmutableDictionary<ProjectId, RunningProjectOptions>.Empty
2573.AddTestProject("A", out var projectAId)
2575.AddTestProject("B", out var projectBId)
2586var runningProjects = ImmutableDictionary<ProjectId, RunningProjectOptions>.Empty
2618.AddTestProject("A", out var projectAId)
2621var projectBId = ProjectId.CreateNewId("B");
3518.AddTestProject("A", out var projectAId)
3530.AddTestProject("B", out var projectBId)
3599.AddTestProject("A", out var projectAId)
3609.AddTestProject("B", out var projectBId)
3655var runningProjects = ImmutableDictionary<ProjectId, RunningProjectOptions>.Empty
3750var projectId = document1.Project.Id;
4294var projectAId = documentA.Project.Id;
4295var projectBId = documentB.Project.Id;
4394var projectAId = documentA.Project.Id;
4395var projectBId = documentB.Project.Id;
5510var result1 = await encService.EmitSolutionUpdateAsync(sessionId, solution1, runningProjects: ImmutableDictionary<ProjectId, RunningProjectOptions>.Empty, s_noActiveSpans, CancellationToken.None);
5517var result2 = await encService.EmitSolutionUpdateAsync(sessionId, solution2, runningProjects: ImmutableDictionary<ProjectId, RunningProjectOptions>.Empty, s_noActiveSpans, CancellationToken.None);
5540await Assert.ThrowsAsync<ObjectDisposedException>(async () => await debuggingSession.EmitSolutionUpdateAsync(solution, runningProjects: ImmutableDictionary<ProjectId, RunningProjectOptions>.Empty, s_noActiveSpans, CancellationToken.None));
EditAndContinue\EmitSolutionUpdateResultsTests.cs (82)
32private static ManagedHotReloadUpdate CreateMockUpdate(ProjectId projectId)
47private static ImmutableArray<ManagedHotReloadUpdate> CreateValidUpdates(params IEnumerable<ProjectId> projectIds)
50private static ImmutableArray<ProjectDiagnostics> CreateProjectRudeEdits(IEnumerable<ProjectId> blocking, IEnumerable<ProjectId> noEffect)
56private static ImmutableDictionary<ProjectId, RunningProjectOptions> CreateRunningProjects(IEnumerable<(ProjectId id, bool noEffectRestarts)> projectIds)
59private static IEnumerable<string> Inspect(ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> projectsToRestart)
144ProjectsToRestart = ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>>.Empty,
166.AddTestProject("C", out var c).Solution
167.AddTestProject("D", out var d).Solution
168.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
169.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
190.AddTestProject("C", out var c).Solution
191.AddTestProject("D", out var d).Solution
192.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
193.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
216.AddTestProject("C", out var c).Solution
217.AddTestProject("D", out var d).Solution
218.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
219.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
247.AddTestProject("C", out var c).Solution
248.AddTestProject("D", out var d).Solution
249.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
250.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
274.AddTestProject("C", out var c).Solution
275.AddTestProject("D", out var d).Solution
276.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
277.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
308.AddTestProject("C", out var c).Solution
309.AddTestProject("D", out var d).Solution
310.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
311.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
336.AddTestProject("C", out var c).Solution
337.AddTestProject("D", out var d).Solution
338.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
339.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
360.AddTestProject("C", out var c).Solution
361.AddTestProject("D", out var d).Solution
362.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
363.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
391.AddTestProject("Q", out var q).Solution
392.AddTestProject("P0", out var p0).AddProjectReferences([new(q)]).Solution
393.AddTestProject("P1", out var p1).AddProjectReferences([new(q)]).Solution
394.AddTestProject("P2", out var p2).Solution
395.AddTestProject("R0", out var r0).AddProjectReferences([new(p0)]).Solution
396.AddTestProject("R1", out var r1).AddProjectReferences([new(p1), new(p0)]).Solution
397.AddTestProject("R2", out var r2).AddProjectReferences([new(p2), new(p0)]).Solution;
431.AddTestProject("C", out var c).Solution
432.AddTestProject("D", out var d).Solution
433.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
434.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
462.AddTestProject("C", out var c).Solution
463.AddTestProject("D", out var d).Solution
464.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
465.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
493.AddTestProject("C", out var c).Solution
494.AddTestProject("D", out var d).Solution
495.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
496.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
519.AddTestProject("C", out var c).Solution
520.AddTestProject("D", out var d).Solution
521.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
522.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution
523.AddTestProject("E", out var e).AddProjectReferences([new(b)]).Solution;
552.AddTestProject("C", out var c).Solution
553.AddTestProject("D", out var d).Solution
554.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
555.AddTestProject("B", out var b).AddProjectReferences([new(d)]).Solution;
577.AddTestProject("C", out var c).Solution
578.AddTestProject("D", out var d).Solution
579.AddTestProject("A", out var a).AddProjectReferences([new(c)]).Solution
580.AddTestProject("B", out var b).AddProjectReferences([new(c), new(d)]).Solution;
611.AddTestProject("P1", out var p1).Solution
612.AddTestProject("P2", out var p2).Solution
613.AddTestProject("P3", out var p3).Solution
614.AddTestProject("P4", out var p4).Solution
615.AddTestProject("R1", out var r1).AddProjectReferences([new(p1), new(p2)]).Solution
616.AddTestProject("R2", out var r2).AddProjectReferences([new(p2), new(p3)]).Solution
617.AddTestProject("R3", out var r3).AddProjectReferences([new(p3), new(p4)]).Solution
618.AddTestProject("R4", out var r4).AddProjectReferences([new(p4)]).Solution;
Microsoft.CodeAnalysis.LanguageServer (7)
Microsoft.CodeAnalysis.LanguageServer.Protocol (12)
Microsoft.CodeAnalysis.LanguageServer.Protocol.UnitTests (4)
Microsoft.CodeAnalysis.LanguageServer.UnitTests (1)
Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers (1)
Microsoft.CodeAnalysis.PublicApiAnalyzers.CodeFixes (5)
Microsoft.CodeAnalysis.Remote.ServiceHub (32)
Services\SourceGeneration\RemoteSourceGenerationService.cs (5)
33Checksum solutionChecksum, ProjectId projectId, bool withFrozenSourceGeneratedDocuments, CancellationToken cancellationToken)
53Checksum solutionChecksum, ProjectId projectId, ImmutableArray<DocumentId> documentIds, bool withFrozenSourceGeneratedDocuments, CancellationToken cancellationToken)
89ProjectId projectId,
139ProjectId projectId,
155ProjectId projectId,
Microsoft.CodeAnalysis.Remote.Workspaces (16)
BrokeredServiceConnection.cs (4)
197public override async ValueTask<bool> TryInvokeAsync(SolutionCompilationState compilationState, ProjectId projectId, Func<TService, Checksum, CancellationToken, ValueTask> invocation, CancellationToken cancellationToken)
213public override async ValueTask<Optional<TResult>> TryInvokeAsync<TResult>(SolutionCompilationState compilationState, ProjectId projectId, Func<TService, Checksum, CancellationToken, ValueTask<TResult>> invocation, CancellationToken cancellationToken)
268public override async ValueTask<bool> TryInvokeAsync(SolutionCompilationState compilationState, ProjectId projectId, Func<TService, Checksum, RemoteServiceCallbackId, CancellationToken, ValueTask> invocation, CancellationToken cancellationToken)
287public override async ValueTask<Optional<TResult>> TryInvokeAsync<TResult>(SolutionCompilationState compilationState, ProjectId projectId, Func<TService, Checksum, RemoteServiceCallbackId, CancellationToken, ValueTask<TResult>> invocation, CancellationToken cancellationToken)
Microsoft.CodeAnalysis.VisualBasic.Workspaces.UnitTests (1)
Microsoft.CodeAnalysis.Workspaces (710)
FindSymbols\IRemoteSymbolFinderService.cs (3)
36Checksum solutionChecksum, ProjectId projectId, string name, SearchKind searchKind, SymbolFilter criteria, CancellationToken cancellationToken);
42Checksum solutionChecksum, ProjectId projectId, string name, bool ignoreCase, SymbolFilter criteria, CancellationToken cancellationToken);
48Checksum solutionChecksum, ProjectId projectId, string pattern, SymbolFilter criteria, CancellationToken cancellationToken);
SourceGeneration\IRemoteSourceGenerationService.cs (5)
35Checksum solutionChecksum, ProjectId projectId, bool withFrozenSourceGeneratedDocuments, CancellationToken cancellationToken);
46Checksum solutionChecksum, ProjectId projectId, ImmutableArray<DocumentId> documentIds, bool withFrozenSourceGeneratedDocuments, CancellationToken cancellationToken);
52Checksum solutionChecksum, ProjectId projectId, ImmutableArray<Checksum> analyzerReferenceChecksums, string language, CancellationToken cancellationToken);
59Checksum solutionChecksum, ProjectId projectId, string analyzerReferenceFullPath, CancellationToken cancellationToken);
66Checksum solutionChecksum, ProjectId projectId, string analyzerReferenceFullPath, CancellationToken cancellationToken);
Workspace\ProjectSystem\ProjectSystemProjectFactory.cs (25)
61private ImmutableDictionary<ProjectId, string?> _projectToMaxSupportedLangVersionMap = ImmutableDictionary<ProjectId, string?>.Empty;
64private ImmutableDictionary<ProjectId, string> _projectToDependencyNodeTargetIdentifier = ImmutableDictionary<ProjectId, string>.Empty;
102var projectId = ProjectId.CreateNewId(projectSystemName);
191public string? TryGetDependencyNodeTargetIdentifier(ProjectId projectId)
198public string? TryGetMaxSupportedLanguageVersion(ProjectId projectId)
269public void ApplyChangeToWorkspace(ProjectId projectId, Func<CodeAnalysis.Solution, CodeAnalysis.Solution> solutionTransformation)
360private static ProjectUpdateState GetReferenceInformation(ProjectId projectId, ProjectUpdateState projectUpdateState, out ProjectReferenceInformation projectReference)
381internal void RemoveProjectFromTrackingMaps_NoLock(ProjectId projectId)
413ImmutableInterlocked.TryRemove<ProjectId, string?>(ref _projectToMaxSupportedLangVersionMap, projectId, out _);
473internal void SetMaxLanguageVersion(ProjectId projectId, string? maxLanguageVersion)
482internal void SetDependencyNodeTargetIdentifier(ProjectId projectId, string targetIdentifier)
492ProjectId projectId,
522foreach (var otherProjectId in projectsForOutputPath)
541/// <param name="projectIdToReference">The <see cref="ProjectId"/> of the project that could be referenced in place
548ProjectId projectIdToReference,
638/// <param name="projectId">The <see cref="ProjectId"/> of the project being referenced.</param>
645ProjectId projectId,
650foreach (var projectIdToRetarget in solutionChanges.Solution.ProjectIds)
707var projectIdToReference = ids.First();
737ProjectId referencingProject,
765ProjectId projectId,
872Func<Solution, ProjectId, ProjectUpdateState, TReference, TReference, (Solution newSolution, ProjectUpdateState newProjectUpdateState)> update,
Workspace\ProjectSystem\ProjectSystemProjectFactory.ProjectUpdateState.cs (13)
53ImmutableDictionary<string, ImmutableArray<ProjectId>> ProjectsByOutputPath,
54ImmutableDictionary<ProjectId, ProjectReferenceInformation> ProjectReferenceInfos,
61ImmutableDictionary<string, ImmutableArray<ProjectId>>.Empty.WithComparers(StringComparer.OrdinalIgnoreCase),
62ImmutableDictionary<ProjectId, ProjectReferenceInformation>.Empty, [], [], [], []);
64public ProjectUpdateState WithProjectReferenceInfo(ProjectId projectId, ProjectReferenceInformation projectReferenceInformation)
72public ProjectUpdateState WithProjectOutputPath(string projectOutputPath, ProjectId projectId)
79static ImmutableDictionary<string, ImmutableArray<ProjectId>> AddProject(string path, ProjectId projectId, ImmutableDictionary<string, ImmutableArray<ProjectId>> map)
92public ProjectUpdateState RemoveProjectOutputPath(string projectOutputPath, ProjectId projectId)
99static ImmutableDictionary<string, ImmutableArray<ProjectId>> RemoveProject(string path, ProjectId projectId, ImmutableDictionary<string, ImmutableArray<ProjectId>> map)
Workspace\Solution\ProjectDependencyGraph.cs (110)
35private readonly ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> _referencesMap;
45private ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? _lazyReverseReferencesMap;
48private ImmutableArray<ProjectId> _lazyTopologicallySortedProjects;
53private ImmutableArray<IEnumerable<ProjectId>> _lazyDependencySets;
56private ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> _transitiveReferencesMap;
57private ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> _reverseTransitiveReferencesMap;
60private static readonly ObjectPool<ImmutableHashSet<ProjectId>.Builder> s_reverseReferencesBuilderPool = new(static () => ImmutableHashSet.CreateBuilder<ProjectId>(), size: 256);
69ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>.Empty,
71ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>.Empty,
72ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>.Empty,
77ImmutableHashSet<ProjectId> projectIds,
78ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> referencesMap)
83transitiveReferencesMap: ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>.Empty,
84reverseTransitiveReferencesMap: ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>.Empty,
92ImmutableHashSet<ProjectId> projectIds,
93ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> referencesMap,
94ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? reverseReferencesMap,
95ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> transitiveReferencesMap,
96ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> reverseTransitiveReferencesMap,
97ImmutableArray<ProjectId> topologicallySortedProjects,
98ImmutableArray<IEnumerable<ProjectId>> dependencySets)
115internal ImmutableHashSet<ProjectId> ProjectIds { get; }
117private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> RemoveItemsWithEmptyValues(
118ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> map)
120ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>.Builder? builder = null;
135internal ProjectDependencyGraph WithProjectReferences(ProjectId projectId, IReadOnlyList<ProjectReference> projectReferences)
169public IImmutableSet<ProjectId> GetProjectsThatThisProjectDirectlyDependsOn(ProjectId projectId)
182public IImmutableSet<ProjectId> GetProjectsThatDirectlyDependOnThisProject(ProjectId projectId)
203private ImmutableHashSet<ProjectId> GetProjectsThatDirectlyDependOnThisProject_NoLock(ProjectId projectId)
214private ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeReverseReferencesMap()
216using var _1 = PooledDictionary<ProjectId, ImmutableHashSet<ProjectId>.Builder>.GetInstance(out var reverseReferencesMapBuilders);
219foreach (var referencedId in references)
232var reverseReferencesBuilder = ImmutableDictionary.CreateBuilder<ProjectId, ImmutableHashSet<ProjectId>>();
252internal ImmutableHashSet<ProjectId>? TryGetProjectsThatThisProjectTransitivelyDependsOn(ProjectId projectId)
266public IImmutableSet<ProjectId> GetProjectsThatThisProjectTransitivelyDependsOn(ProjectId projectId)
288private ImmutableHashSet<ProjectId> GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(ProjectId projectId)
292using var pooledObject = SharedPools.Default<HashSet<ProjectId>>().GetPooledObject();
302private void ComputeTransitiveReferences(ProjectId project, HashSet<ProjectId> result)
306foreach (var other in otherProjects)
318public IEnumerable<ProjectId> GetProjectsThatTransitivelyDependOnThisProject(ProjectId projectId)
340private ImmutableHashSet<ProjectId> GetProjectsThatTransitivelyDependOnThisProject_NoLock(ProjectId projectId)
344using var pooledObject = SharedPools.Default<HashSet<ProjectId>>().GetPooledObject();
355private void ComputeReverseTransitiveReferences(ProjectId project, HashSet<ProjectId> results)
358foreach (var other in otherProjects)
372public IEnumerable<ProjectId> GetTopologicallySortedProjects(CancellationToken cancellationToken = default)
389using var seenProjects = SharedPools.Default<HashSet<ProjectId>>().GetPooledObject();
390using var resultList = SharedPools.Default<List<ProjectId>>().GetPooledObject();
397IEnumerable<ProjectId> projectIds,
398HashSet<ProjectId> seenProjects,
399List<ProjectId> resultList,
402foreach (var projectId in projectIds)
424public IEnumerable<IEnumerable<ProjectId>> GetDependencySets(CancellationToken cancellationToken = default)
437private ImmutableArray<IEnumerable<ProjectId>> GetDependencySets_NoLock(CancellationToken cancellationToken)
441using var seenProjects = SharedPools.Default<HashSet<ProjectId>>().GetPooledObject();
442using var results = SharedPools.Default<List<IEnumerable<ProjectId>>>().GetPooledObject();
450private void ComputeDependencySets(HashSet<ProjectId> seenProjects, List<IEnumerable<ProjectId>> results, CancellationToken cancellationToken)
452foreach (var project in ProjectIds)
458using var dependencySet = SharedPools.Default<HashSet<ProjectId>>().GetPooledObject();
465using var topologicallySeenProjects = SharedPools.Default<HashSet<ProjectId>>().GetPooledObject();
466using var sortedProjects = SharedPools.Default<List<ProjectId>>().GetPooledObject();
473private void ComputedDependencySet(ProjectId project, HashSet<ProjectId> result)
480foreach (var other in otherProjects)
489ImmutableHashSet<ProjectId> projectIds,
490ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> referencesMap)
500foreach (var referencedProject in referencedProjects)
509ImmutableHashSet<ProjectId> projectIds,
510ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> forwardReferencesMap,
511ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? reverseReferencesMap)
521foreach (var referencedProject in referencedProjects)
531foreach (var referencingProject in referencingProjects)
549public ImmutableHashSet<ProjectId>? TryGetProjectsThatTransitivelyDependOnThisProject(ProjectId projectId)
564internal bool DoesProjectTransitivelyDependOnProject(ProjectId id, ProjectId potentialDependency)
Workspace\Solution\ProjectDependencyGraph_AddProjectReference.cs (30)
15internal ProjectDependencyGraph WithAdditionalProjectReferences(ProjectId projectId, IReadOnlyCollection<ProjectReference> projectReferences)
58private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewReferencesMapForAdditionalProjectReferences(
59ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingReferencesMap,
60ProjectId projectId,
61IReadOnlyList<ProjectId> referencedProjectIds)
78private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? ComputeNewReverseReferencesMapForAdditionalProjectReferences(
79ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? existingReverseReferencesMap,
80ProjectId projectId,
81IReadOnlyList<ProjectId> referencedProjectIds)
88foreach (var referencedProject in referencedProjectIds)
99private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewTransitiveReferencesMapForAdditionalProjectReferences(
100ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingTransitiveReferencesMap,
101ProjectId projectId,
102IReadOnlyList<ProjectId> referencedProjectIds)
108var newTransitiveReferences = new HashSet<ProjectId>(referencedProjectIds);
110foreach (var referencedProjectId in referencedProjectIds)
126foreach (var projectIdToUpdate in existingTransitiveReferencesMap.Keys)
155private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewReverseTransitiveReferencesMapForAdditionalProjectReferences(
156ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingReverseTransitiveReferencesMap,
157ProjectId projectId,
158IReadOnlyList<ProjectId> referencedProjectIds)
174foreach (var projectIdToUpdate in existingReverseTransitiveReferencesMap.Keys)
Workspace\Solution\ProjectDependencyGraph_RemoveAllProjectReferences.cs (24)
14internal ProjectDependencyGraph WithAllProjectReferencesRemoved(ProjectId projectId)
40private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewReferencesMapForRemovedAllProjectReferences(
41ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingForwardReferencesMap,
42ProjectId projectId)
58private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? ComputeNewReverseReferencesMapForRemovedAllProjectReferences(
59ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? existingReverseReferencesMap,
60ProjectId projectId,
61ImmutableHashSet<ProjectId> referencedProjectIds)
69foreach (var referencedProjectId in referencedProjectIds)
77private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewTransitiveReferencesMapForRemovedAllProjectReferences(
78ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingTransitiveReferencesMap,
79ProjectId projectId,
80ImmutableHashSet<ProjectId> referencedProjectIds)
104private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewReverseTransitiveReferencesMapForRemovedAllProjectReferences(
105ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingReverseTransitiveReferencesMap,
106ProjectId projectId)
Workspace\Solution\ProjectDependencyGraph_RemoveProject.cs (37)
14internal ProjectDependencyGraph WithProjectsRemoved(ArrayBuilder<ProjectId> removedProjectIds)
19foreach (var projectId in removedProjectIds)
55private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewReferencesMapForRemovedProject(
56ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingForwardReferencesMap,
57ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? existingReverseReferencesMap,
58ArrayBuilder<ProjectId> removedProjectIds)
65foreach (var removedProjectId in removedProjectIds)
71foreach (var id in referencingProjects)
82foreach (var removedProjectId in removedProjectIds)
88foreach (var removedProjectId in removedProjectIds)
99private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? ComputeNewReverseReferencesMapForRemovedProject(
100ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingForwardReferencesMap,
101ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? existingReverseReferencesMap,
102ArrayBuilder<ProjectId> removedProjectIds)
110foreach (var removedProjectId in removedProjectIds)
118foreach (var referencedProjectId in forwardReferences)
123foreach (var removedProjectId in removedProjectIds)
133private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewTransitiveReferencesMapForRemovedProject(
134ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingTransitiveReferencesMap,
135ArrayBuilder<ProjectId> removedProjectIds)
143foreach (var removedProjectId in removedProjectIds)
157foreach (var removedProjectId in removedProjectIds)
167private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewReverseTransitiveReferencesMapForRemovedProject(
168ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingReverseTransitiveReferencesMap,
169ArrayBuilder<ProjectId> removedProjectIds)
177foreach (var removedProjectId in removedProjectIds)
191foreach (var removedProjectId in removedProjectIds)
Workspace\Solution\ProjectDependencyGraph_RemoveProjectReference.cs (26)
14internal ProjectDependencyGraph WithProjectReferenceRemoved(ProjectId projectId, ProjectId referencedProjectId)
38private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewReferencesMapForRemovedProjectReference(
39ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingForwardReferencesMap,
40ProjectId projectId,
41ProjectId referencedProjectId)
55private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? ComputeNewReverseReferencesMapForRemovedProjectReference(
56ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>>? existingReverseReferencesMap,
57ProjectId projectId,
58ProjectId referencedProjectId)
68private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewTransitiveReferencesMapForRemovedProjectReference(
69ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingTransitiveReferencesMap,
70ProjectId projectId,
71ProjectId referencedProjectId)
95private static ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> ComputeNewReverseTransitiveReferencesMapForRemovedProjectReference(
96ImmutableDictionary<ProjectId, ImmutableHashSet<ProjectId>> existingReverseTransitiveReferencesMap,
97ProjectId projectId,
98ProjectId referencedProjectId)
Workspace\Solution\Solution.cs (52)
32private readonly Dictionary<ProjectId, Project> _projectIdToProjectMap = [];
85internal ProjectState? GetProjectState(ProjectId projectId) => this.SolutionState.GetProjectState(projectId);
120public IReadOnlyList<ProjectId> ProjectIds => this.SolutionState.ProjectIds;
124/// Ordered by <see cref="ProjectState.Id"/>'s <see cref="ProjectId.Id"/> value.
142public bool ContainsProject([NotNullWhen(returnValue: true)] ProjectId? projectId)
150public Project? GetProject(ProjectId? projectId)
163private static readonly Func<ProjectId, Solution, Project> s_createProjectFunction = CreateProject;
164private static Project CreateProject(ProjectId projectId, Solution solution)
179var projectId = SolutionCompilationState.GetProjectId(assemblySymbol);
184/// Given a <paramref name="symbol"/> returns the <see cref="ProjectId"/> of the <see cref="Project"/> it came
203internal ProjectId? GetOriginatingProjectId(ISymbol symbol)
241public DocumentId? GetDocumentId(SyntaxTree? syntaxTree, ProjectId? projectId)
326internal Document? GetDocument(SyntaxTree? syntaxTree, ProjectId? projectId)
359var id = ProjectId.CreateNewId(debugName: name);
366public Solution AddProject(ProjectId projectId, string name, string assemblyName, string language)
382public Solution RemoveProject(ProjectId projectId)
384using var _ = ArrayBuilder<ProjectId>.GetInstance(1, out var projectIds);
390internal Solution RemoveProjects(ArrayBuilder<ProjectId> projectIds)
397public Solution WithProjectAssemblyName(ProjectId projectId, string assemblyName)
412public Solution WithProjectOutputFilePath(ProjectId projectId, string? outputFilePath)
422public Solution WithProjectOutputRefFilePath(ProjectId projectId, string? outputRefFilePath)
432public Solution WithProjectCompilationOutputInfo(ProjectId projectId, in CompilationOutputInfo info)
442public Solution WithProjectDefaultNamespace(ProjectId projectId, string? defaultNamespace)
452internal Solution WithProjectChecksumAlgorithm(ProjectId projectId, SourceHashAlgorithm checksumAlgorithm)
462public Solution WithProjectName(ProjectId projectId, string name)
477public Solution WithProjectFilePath(ProjectId projectId, string? filePath)
488public Solution WithProjectCompilationOptions(ProjectId projectId, CompilationOptions options)
504public Solution WithProjectParseOptions(ProjectId projectId, ParseOptions options)
527internal Solution WithHasAllInformation(ProjectId projectId, bool hasAllInformation)
539internal Solution WithRunAnalyzers(ProjectId projectId, bool runAnalyzers)
550internal Solution WithHasSdkCodeStyleAnalyzers(ProjectId projectId, bool hasSdkCodeStyleAnalyzers)
566public Solution WithProjectDocumentsOrder(ProjectId projectId, ImmutableList<DocumentId> documentIds)
604public Solution AddProjectReference(ProjectId projectId, ProjectReference projectReference)
620public Solution AddProjectReferences(ProjectId projectId, IEnumerable<ProjectReference> projectReferences)
650public Solution RemoveProjectReference(ProjectId projectId, ProjectReference projectReference)
681public Solution WithProjectReferences(ProjectId projectId, IEnumerable<ProjectReference>? projectReferences)
702public Solution AddMetadataReference(ProjectId projectId, MetadataReference metadataReference)
717public Solution AddMetadataReferences(ProjectId projectId, IEnumerable<MetadataReference> metadataReferences)
744public Solution RemoveMetadataReference(ProjectId projectId, MetadataReference metadataReference)
766public Solution WithProjectMetadataReferences(ProjectId projectId, IEnumerable<MetadataReference> metadataReferences)
782public Solution AddAnalyzerReference(ProjectId projectId, AnalyzerReference analyzerReference)
797public Solution AddAnalyzerReferences(ProjectId projectId, IEnumerable<AnalyzerReference> analyzerReferences)
831public Solution RemoveAnalyzerReference(ProjectId projectId, AnalyzerReference analyzerReference)
860public Solution WithProjectAnalyzerReferences(ProjectId projectId, IEnumerable<AnalyzerReference> analyzerReferences)
1127internal ProjectState GetRequiredProjectState(ProjectId projectId)
1587internal DocumentId? GetFirstRelatedDocumentId(DocumentId documentId, ProjectId? relatedProjectIdHint)
1668internal Solution WithCachedSourceGeneratorState(ProjectId projectToUpdate, Project projectWithCachedGeneratorState)
1740private void CheckContainsProject(ProjectId projectId)
1852private void CheckCircularProjectReferences(ProjectId projectId, IReadOnlyCollection<ProjectReference> projectReferences)
1877private void CheckSubmissionProjectReferences(ProjectId projectId, IEnumerable<ProjectReference> projectReferences, bool ignoreExistingReferences)
1905internal SourceGeneratorExecutionVersion GetSourceGeneratorExecutionVersion(ProjectId projectId)
Workspace\Solution\SolutionCompilationState.cs (74)
32private static readonly ConditionalWeakTable<ISymbol, ProjectId> s_assemblyOrModuleSymbolToProjectMap = new();
47private ImmutableSegmentedDictionary<ProjectId, ICompilationTracker> _projectIdToTrackerMap;
62ImmutableSegmentedDictionary<ProjectId, ICompilationTracker> projectIdToTrackerMap,
94projectIdToTrackerMap: ImmutableSegmentedDictionary<ProjectId, ICompilationTracker>.Empty,
117ImmutableSegmentedDictionary<ProjectId, ICompilationTracker>? projectIdToTrackerMap = null,
181var projectId = newProjectState.Id;
208/// Creates a mapping of <see cref="ProjectId"/> to <see cref="ICompilationTracker"/>
214private ImmutableSegmentedDictionary<ProjectId, ICompilationTracker> CreateCompilationTrackerMap<TArg>(
215ProjectId changedProjectId,
217Action<ImmutableSegmentedDictionary<ProjectId, ICompilationTracker>.Builder, TArg> modifyNewTrackerInfo,
224static bool CanReuse(ProjectId id, (ProjectId changedProjectId, ProjectDependencyGraph dependencyGraph) arg)
236/// Creates a mapping of <see cref="ProjectId"/> to <see cref="ICompilationTracker"/>
242private ImmutableSegmentedDictionary<ProjectId, ICompilationTracker> CreateCompilationTrackerMap<TArg>(
243ImmutableArray<ProjectId> changedProjectIds,
245Action<ImmutableSegmentedDictionary<ProjectId, ICompilationTracker>.Builder, TArg> modifyNewTrackerInfo,
252static bool CanReuse(ProjectId id, (ImmutableArray<ProjectId> changedProjectIds, ProjectDependencyGraph dependencyGraph) arg)
257foreach (var changedProjectId in arg.changedProjectIds)
268/// Creates a mapping of <see cref="ProjectId"/> to <see cref="ICompilationTracker"/>
274private ImmutableSegmentedDictionary<ProjectId, ICompilationTracker> CreateCompilationTrackerMap<TArgCanReuse, TArgModifyNewTrackerInfo>(
275Func<ProjectId, TArgCanReuse, bool> canReuse,
277Action<ImmutableSegmentedDictionary<ProjectId, ICompilationTracker>.Builder, TArgModifyNewTrackerInfo> modifyNewTrackerInfo,
330using var _ = PooledHashSet<ProjectId>.GetInstance(out var dependentProjects);
359public SolutionCompilationState RemoveProjects(ArrayBuilder<ProjectId> projectIds)
368using var _ = PooledHashSet<ProjectId>.GetInstance(out var dependentProjects);
371foreach (var projectId in projectIds)
373foreach (var dependentProject in originalDependencyGraph.GetProjectsThatTransitivelyDependOnThisProject(projectId))
388foreach (var projectId in projectIds)
395foreach (var projectId in projectIds)
406ProjectId projectId, string assemblyName)
417public SolutionCompilationState WithProjectOutputFilePath(ProjectId projectId, string? outputFilePath)
427ProjectId projectId, string? outputRefFilePath)
437ProjectId projectId, in CompilationOutputInfo info)
447ProjectId projectId, string? defaultNamespace)
457ProjectId projectId, SourceHashAlgorithm checksumAlgorithm)
468ProjectId projectId, string name)
478ProjectId projectId, string? filePath)
488ProjectId projectId, CompilationOptions? options)
498ProjectId projectId, ParseOptions? options)
523ProjectId projectId, bool hasAllInformation)
533ProjectId projectId, bool runAnalyzers)
543ProjectId projectId, bool hasSdkCodeStyleAnalyzers)
553ProjectId projectId, ImmutableList<DocumentId> documentIds)
564var projectId = attributes.Id;
593var projectId = info.Id;
660ProjectId projectId, IReadOnlyCollection<ProjectReference> projectReferences)
669public SolutionCompilationState RemoveProjectReference(ProjectId projectId, ProjectReference projectReference)
679ProjectId projectId, IReadOnlyList<ProjectReference> projectReferences)
689ProjectId projectId, IReadOnlyCollection<MetadataReference> metadataReferences)
698public SolutionCompilationState RemoveMetadataReference(ProjectId projectId, MetadataReference metadataReference)
708ProjectId projectId, IReadOnlyList<MetadataReference> metadataReferences)
742ProjectId projectId, IReadOnlyList<AnalyzerReference> analyzerReferences)
841var projectId = g.Key;
868IEnumerable<(ProjectId projectId, ImmutableArray<TDocumentState> updatedDocumentState)> updatedDocumentStatesPerProject,
1142public static ProjectId? GetProjectId(IAssemblySymbol? assemblySymbol)
1147s_assemblyOrModuleSymbolToProjectMap.TryGetValue(assemblySymbol, out var id);
1151private bool TryGetCompilationTracker(ProjectId projectId, [NotNullWhen(returnValue: true)] out ICompilationTracker? tracker)
1154private static readonly Func<ProjectId, SolutionState, RegularCompilationTracker> s_createCompilationTrackerFunction = CreateCompilationTracker;
1156private static RegularCompilationTracker CreateCompilationTracker(ProjectId projectId, SolutionState solution)
1163private ICompilationTracker GetCompilationTracker(ProjectId projectId)
1173public Task<VersionStamp> GetDependentVersionAsync(ProjectId projectId, CancellationToken cancellationToken)
1176public Task<VersionStamp> GetDependentSemanticVersionAsync(ProjectId projectId, CancellationToken cancellationToken)
1179public bool TryGetCompilation(ProjectId projectId, [NotNullWhen(returnValue: true)] out Compilation? compilation)
1189/// Returns the compilation for the specified <see cref="ProjectId"/>. Can return <see langword="null"/> when the project
1195private Task<Compilation?> GetCompilationAsync(ProjectId projectId, CancellationToken cancellationToken)
1362foreach (var projectId in projectIdsToUnfreeze)
1560private (ImmutableArray<ProjectState> sortedProjectStates, ImmutableSegmentedDictionary<ProjectId, ICompilationTracker>) ComputeFrozenSnapshotMaps(CancellationToken cancellationToken)
1578var projectId = newSortedProjectStatesBuilder[i].Id;
1718using var _ = PooledDictionary<ProjectId, ArrayBuilder<DocumentState>>.GetInstance(out var missingDocumentStates);
1767var projectId = g.Key;
1797private SolutionCompilationState RemoveDocumentsFromSingleProject<T>(ProjectId projectId, ImmutableArray<DocumentId> documentIds)
1844/// <inheritdoc cref="Solution.WithCachedSourceGeneratorState(ProjectId, Project)"/>
1845public SolutionCompilationState WithCachedSourceGeneratorState(ProjectId projectToUpdate, Project projectWithCachedGeneratorState)
Workspace\Solution\SolutionState.cs (49)
78IReadOnlyList<ProjectId> projectIds,
124projectIds: SpecializedCollections.EmptyBoxedImmutableArray<ProjectId>(),
141/// Ordered by <see cref="ProjectState.Id"/>'s <see cref="ProjectId.Id"/> value.
164public IReadOnlyList<ProjectId> ProjectIds { get; }
186IReadOnlyList<ProjectId>? projectIds = null,
289public bool ContainsProject([NotNullWhen(returnValue: true)] ProjectId? projectId)
334public ProjectState? GetProjectState(ProjectId projectId)
341private static ProjectState? GetProjectState(ImmutableArray<ProjectState> sortedProjectStates, ProjectId projectId)
353private static int GetProjectStateIndex(ImmutableArray<ProjectState> sortedProjectStates, ProjectId projectId)
360public ProjectState GetRequiredProjectState(ProjectId projectId)
390var projectId = projectInfo.Id;
422using var _1 = ArrayBuilder<ProjectId>.GetInstance(ProjectIds.Count + projectStates.Count, out var newProjectIdsBuilder);
423using var _2 = PooledHashSet<ProjectId>.GetInstance(out var addedProjectIds);
446var projectId = projectState.Id;
475public SolutionState RemoveProjects(ArrayBuilder<ProjectId> projectIds)
482foreach (var projectId in projectIds)
488using var _ = PooledHashSet<ProjectId>.GetInstance(out var projectIdsSet);
496foreach (var projectId in projectIds)
550public StateChange WithProjectAssemblyName(ProjectId projectId, string assemblyName)
566public StateChange WithProjectOutputFilePath(ProjectId projectId, string? outputFilePath)
582public StateChange WithProjectOutputRefFilePath(ProjectId projectId, string? outputRefFilePath)
598public StateChange WithProjectCompilationOutputInfo(ProjectId projectId, in CompilationOutputInfo info)
614public StateChange WithProjectDefaultNamespace(ProjectId projectId, string? defaultNamespace)
630public StateChange WithProjectChecksumAlgorithm(ProjectId projectId, SourceHashAlgorithm checksumAlgorithm)
646public StateChange WithProjectName(ProjectId projectId, string name)
662public StateChange WithProjectFilePath(ProjectId projectId, string? filePath)
679public StateChange WithProjectCompilationOptions(ProjectId projectId, CompilationOptions? options)
696public StateChange WithProjectParseOptions(ProjectId projectId, ParseOptions? options)
713public StateChange WithHasAllInformation(ProjectId projectId, bool hasAllInformation)
731public StateChange WithRunAnalyzers(ProjectId projectId, bool runAnalyzers)
749internal StateChange WithHasSdkCodeStyleAnalyzers(ProjectId projectId, bool hasSdkCodeStyleAnalyzers)
767public StateChange AddProjectReferences(ProjectId projectId, IReadOnlyCollection<ProjectReference> projectReferences)
788public StateChange RemoveProjectReference(ProjectId projectId, ProjectReference projectReference)
828public StateChange WithProjectReferences(ProjectId projectId, IReadOnlyList<ProjectReference> projectReferences)
845public StateChange WithProjectDocumentsOrder(ProjectId projectId, ImmutableList<DocumentId> documentIds)
876public StateChange AddMetadataReferences(ProjectId projectId, IReadOnlyCollection<MetadataReference> metadataReferences)
894public StateChange RemoveMetadataReference(ProjectId projectId, MetadataReference metadataReference)
911public StateChange WithProjectMetadataReferences(ProjectId projectId, IReadOnlyList<MetadataReference> metadataReferences)
927public StateChange WithProjectAnalyzerReferences(ProjectId projectId, IReadOnlyList<AnalyzerReference> analyzerReferences)
1193var projectId = newProjectState.Id;
1227IReadOnlyList<ProjectId> projectIds,
1275public DocumentId? GetFirstRelatedDocumentId(DocumentId documentId, ProjectId? relatedProjectIdHint)
1383private void CheckNotContainsProject(ProjectId projectId)
1391internal void CheckContainsProject(ProjectId projectId)
1399internal bool ContainsProjectReference(ProjectId projectId, ProjectReference projectReference)
1402internal bool ContainsMetadataReference(ProjectId projectId, MetadataReference metadataReference)
1405internal bool ContainsAnalyzerReference(ProjectId projectId, AnalyzerReference analyzerReference)
1408internal bool ContainsTransitiveReference(ProjectId fromProjectId, ProjectId toProjectId)
Workspace\Workspace.cs (54)
97_updateSourceGeneratorsQueue = new AsyncBatchingWorkQueue<(ProjectId? projectId, bool forceRegeneration)>(
101EqualityComparer<(ProjectId? projectId, bool forceRegeneration)>.Default,
200/// <inheritdoc cref="SetCurrentSolution(Func{Solution, Solution}, Func{Solution, Solution, ValueTuple{WorkspaceChangeKind, ProjectId?, DocumentId?}}, Action{Solution, Solution}?, Action{Solution, Solution}?)"/>
204ProjectId? projectId = null,
232Func<Solution, Solution, (WorkspaceChangeKind changeKind, ProjectId? projectId, DocumentId? documentId)> changeKind,
252Func<Solution, Solution, (WorkspaceChangeKind changeKind, ProjectId? projectId, DocumentId? documentId)> changeKind,
331ProjectId? relatedProjectIdHint = null;
691protected virtual void ClearProjectData(ProjectId projectId)
854var projectId = reloadedProjectInfo.Id;
869protected internal virtual void OnProjectRemoved(ProjectId projectId)
892protected virtual void CheckProjectCanBeRemoved(ProjectId projectId)
899protected internal void OnAssemblyNameChanged(ProjectId projectId, string assemblyName)
905protected internal void OnOutputFilePathChanged(ProjectId projectId, string? outputFilePath)
911protected internal void OnOutputRefFilePathChanged(ProjectId projectId, string? outputFilePath)
921protected internal void OnProjectNameChanged(ProjectId projectId, string name, string? filePath)
927internal void OnDefaultNamespaceChanged(ProjectId projectId, string? defaultNamespace)
933protected internal void OnCompilationOptionsChanged(ProjectId projectId, CompilationOptions options)
939protected internal void OnParseOptionsChanged(ProjectId projectId, ParseOptions options)
945protected internal void OnProjectReferenceAdded(ProjectId projectId, ProjectReference projectReference)
962protected internal void OnProjectReferenceRemoved(ProjectId projectId, ProjectReference projectReference)
976protected internal void OnMetadataReferenceAdded(ProjectId projectId, MetadataReference metadataReference)
988protected internal void OnMetadataReferenceRemoved(ProjectId projectId, MetadataReference metadataReference)
1000protected internal void OnAnalyzerReferenceAdded(ProjectId projectId, AnalyzerReference analyzerReference)
1012protected internal void OnAnalyzerReferenceRemoved(ProjectId projectId, AnalyzerReference analyzerReference)
1056internal void OnHasAllInformationChanged(ProjectId projectId, bool hasAllInformation)
1062internal void OnRunAnalyzersChanged(ProjectId projectId, bool runAnalyzers)
1087foreach (var projectId in data.documentInfos.Select(i => i.Id.ProjectId).Distinct())
1478var outputAssemblyToProjectIdMap = new Dictionary<string, ProjectId>();
1493foreach (var pid in solution.ProjectIds)
1504if ((!RoslynString.IsNullOrEmpty(pemeta.Display) && outputAssemblyToProjectIdMap.TryGetValue(pemeta.Display, out var matchingProjectId)) ||
1540internal virtual bool CanAddProjectReference(ProjectId referencingProject, ProjectId referencedProject)
2100protected virtual void ApplyProjectRemoved(ProjectId projectId)
2111protected virtual void ApplyCompilationOptionsChanged(ProjectId projectId, CompilationOptions options)
2129protected virtual void ApplyParseOptionsChanged(ProjectId projectId, ParseOptions options)
2146protected virtual void ApplyProjectReferenceAdded(ProjectId projectId, ProjectReference projectReference)
2157protected virtual void ApplyProjectReferenceRemoved(ProjectId projectId, ProjectReference projectReference)
2168protected virtual void ApplyMetadataReferenceAdded(ProjectId projectId, MetadataReference metadataReference)
2179protected virtual void ApplyMetadataReferenceRemoved(ProjectId projectId, MetadataReference metadataReference)
2190protected virtual void ApplyAnalyzerReferenceAdded(ProjectId projectId, AnalyzerReference analyzerReference)
2201protected virtual void ApplyAnalyzerReferenceRemoved(ProjectId projectId, AnalyzerReference analyzerReference)
2359protected void CheckProjectIsInCurrentSolution(ProjectId projectId)
2362private static void CheckProjectIsInSolution(Solution solution, ProjectId projectId)
2375protected void CheckProjectIsNotInCurrentSolution(ProjectId projectId)
2378private static void CheckProjectIsNotInSolution(Solution solution, ProjectId projectId)
2391protected void CheckProjectHasProjectReference(ProjectId fromProjectId, ProjectReference projectReference)
2404protected void CheckProjectDoesNotHaveProjectReference(ProjectId fromProjectId, ProjectReference projectReference)
2417protected void CheckProjectDoesNotHaveTransitiveProjectReference(ProjectId fromProjectId, ProjectId toProjectId)
2431protected void CheckProjectHasMetadataReference(ProjectId projectId, MetadataReference metadataReference)
2442protected void CheckProjectDoesNotHaveMetadataReference(ProjectId projectId, MetadataReference metadataReference)
2453protected void CheckProjectHasAnalyzerReference(ProjectId projectId, AnalyzerReference analyzerReference)
2464protected void CheckProjectDoesNotHaveAnalyzerReference(ProjectId projectId, AnalyzerReference analyzerReference)
2590protected virtual string GetProjectName(ProjectId projectId)
Microsoft.CodeAnalysis.Workspaces.MSBuild (55)
MSBuild\MSBuildProjectLoader.Worker.cs (9)
40/// Map of <see cref="ProjectId"/>s, project paths, and output file paths.
64private readonly Dictionary<ProjectId, ProjectFileInfo> _projectIdToFileInfoMap;
65private readonly Dictionary<ProjectId, List<ProjectReference>> _projectIdToProjectReferencesMap;
225var idsAndFileInfos = new List<(ProjectId id, ProjectFileInfo fileInfo)>();
229var projectId = _projectMap.GetOrCreateProjectId(projectFileInfo);
241projectId = ProjectId.CreateNewId(debugName: projectFileInfo.FilePath);
267private Task<ProjectInfo> CreateProjectInfoAsync(ProjectFileInfo projectFileInfo, ProjectId projectId, bool addDiscriminator, CancellationToken cancellationToken)
429private ImmutableArray<DocumentInfo> CreateDocumentInfos(IReadOnlyList<DocumentFileInfo> documentFileInfos, ProjectId projectId, Encoding? encoding)
472private void CheckForDuplicateDocuments(ImmutableArray<DocumentInfo> documents, string? projectFilePath, ProjectId projectId)
MSBuild\MSBuildProjectLoader.Worker_ResolveReferences.cs (10)
187private async Task<ResolvedReferences> ResolveReferencesAsync(ProjectId id, ProjectFileInfo projectFileInfo, CommandLineArguments commandLineArgs, CancellationToken cancellationToken)
247var unknownProjectId = _projectMap.GetOrCreateProjectId(projectFileReference.Path);
268private async Task<bool> TryLoadAndAddReferenceAsync(ProjectId id, string projectReferencePath, ImmutableArray<string> aliases, ResolvedReferencesBuilder builder, CancellationToken cancellationToken)
370private ProjectReference CreateProjectReference(ProjectId from, ProjectId to, ImmutableArray<string> aliases)
377private bool ProjectReferenceExists(ProjectId to, ProjectId from)
381private static bool ProjectReferenceExists(ProjectId to, ProjectInfo from)
385ProjectId id,
392foreach (var projectReferenceId in projectReferenceIds)
MSBuild\ProjectMap.cs (29)
21/// A map of project path to <see cref="ProjectId"/>s. Note that there can be multiple <see cref="ProjectId"/>s per project path
24private readonly Dictionary<string, HashSet<ProjectId>> _projectPathToProjectIdsMap;
27/// A map of project path to <see cref="ProjectInfo"/>s. Note that there can be multiple <see cref="ProjectId"/>s per project path
33/// A map of <see cref="ProjectId"/> to the output file of the project (if any).
35private readonly Dictionary<ProjectId, string> _projectIdToOutputFilePathMap;
38/// A map of <see cref="ProjectId"/> to the output ref file of the project (if any).
40private readonly Dictionary<ProjectId, string> _projectIdToOutputRefFilePathMap;
44_projectPathToProjectIdsMap = new Dictionary<string, HashSet<ProjectId>>(PathUtilities.Comparer);
81private void Add(ProjectId projectId, string? projectPath, string? outputFilePath, string? outputRefFilePath)
122private ProjectId CreateProjectId(string? projectPath, string? outputFilePath, string? outputRefFilePath)
124var newProjectId = ProjectId.CreateNewId(debugName: projectPath);
129internal ProjectId GetOrCreateProjectId(string projectPath)
142internal ProjectId GetOrCreateProjectId(ProjectFileInfo projectFileInfo)
150if (TryFindOutputFileRefPathInProjectIdSet(outputRefFilePath, projectIds, out var projectId) ||
160private bool TryFindOutputFileRefPathInProjectIdSet(string? outputRefFilePath, HashSet<ProjectId> set, [NotNullWhen(true)] out ProjectId? result)
163private bool TryFindOutputFilePathInProjectIdSet(string? outputFilePath, HashSet<ProjectId> set, [NotNullWhen(true)] out ProjectId? result)
166private static bool TryFindPathInProjectIdSet(string? path, Func<ProjectId, string?> getPathById, HashSet<ProjectId> set, [NotNullWhen(true)] out ProjectId? result)
170foreach (var id in set)
186internal string? GetOutputRefFilePathById(ProjectId projectId)
191internal string? GetOutputFilePathById(ProjectId projectId)
196internal bool TryGetIdsByProjectPath(string projectPath, [NotNullWhen(true)] out HashSet<ProjectId>? ids)
199internal bool TryGetOutputFilePathById(ProjectId id, [NotNullWhen(true)] out string? outputFilePath)
202internal bool TryGetOutputRefFilePathById(ProjectId id, [NotNullWhen(true)] out string? outputRefFilePath)
Microsoft.CodeAnalysis.Workspaces.MSBuild.UnitTests (7)
Microsoft.CodeAnalysis.Workspaces.Test.Utilities (23)
Microsoft.CodeAnalysis.Workspaces.UnitTests (513)
FindReferencesTests.cs (19)
27private static Solution AddProjectWithMetadataReferences(Solution solution, string projectName, string languageName, string code, IEnumerable<MetadataReference> metadataReference, params ProjectId[] projectReferences)
30var pid = ProjectId.CreateNewId();
43private static Solution AddProjectWithMetadataReferences(Solution solution, string projectName, string languageName, string code, MetadataReference metadataReference, params ProjectId[] projectReferences)
46var pid = ProjectId.CreateNewId();
61var pid = ProjectId.CreateNewId();
71var pid = ProjectId.CreateNewId();
124var pid = ProjectId.CreateNewId();
175var prj1Id = ProjectId.CreateNewId();
216var prj1Id = ProjectId.CreateNewId();
282var prj1Id = ProjectId.CreateNewId();
412var projectIds = new HashSet<ProjectId>();
SolutionTests\ProjectInfoTests.cs (34)
23var pid = ProjectId.CreateNewId();
36var pid = ProjectId.CreateNewId();
51var projectReference = new ProjectReference(ProjectId.CreateNewId());
74var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(ProjectId.CreateNewId()), "doc");
76var info1 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", documents: [documentInfo]);
79var info2 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#");
82var info3 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", documents: []);
85var info4 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", documents: []);
93var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(ProjectId.CreateNewId()), "doc");
95var info1 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", additionalDocuments: [documentInfo]);
98var info2 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#");
101var info3 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", additionalDocuments: []);
104var info4 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", additionalDocuments: []);
112var projectReference = new ProjectReference(ProjectId.CreateNewId());
114var info1 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", projectReferences: [projectReference]);
117var info2 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#");
120var info3 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", projectReferences: []);
123var info4 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", projectReferences: []);
133var info1 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", metadataReferences: [metadataReference]);
136var info2 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#");
139var info3 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", metadataReferences: []);
142var info4 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", metadataReferences: []);
152var info1 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", analyzerReferences: [analyzerReference]);
155var info2 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#");
158var info3 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", analyzerReferences: []);
161var info4 = ProjectInfo.Create(ProjectId.CreateNewId(), version, "proj", "assembly", "C#", analyzerReferences: []);
168var projectInfo = ProjectInfo.Create(name: "Goo", filePath: @"C:\", id: ProjectId.CreateNewId(), version: VersionStamp.Default, assemblyName: "Bar", language: "C#");
175var projectInfo = ProjectInfo.Create(name: "Goo", id: ProjectId.CreateNewId(), version: VersionStamp.Default, assemblyName: "Bar", language: "C#");
182var projectId = ProjectId.CreateNewId();
184var instance = ProjectInfo.Create(name: "Name", id: ProjectId.CreateNewId(), version: VersionStamp.Default, assemblyName: "AssemblyName", language: "C#");
186SolutionTestHelpers.TestProperty(instance, (old, value) => old.WithId(value), opt => opt.Id, ProjectId.CreateNewId(), defaultThrows: true);
SolutionTests\SolutionTests.cs (338)
48private static readonly DocumentId s_unrelatedDocumentId = DocumentId.CreateNewId(ProjectId.CreateNewId());
52var projectId = ProjectId.CreateNewId();
70var projectId1 = ProjectId.CreateNewId();
71var projectId2 = ProjectId.CreateNewId();
271var projectId = documentId.ProjectId;
326var projectId = ProjectId.CreateNewId();
831var projectId1 = ProjectId.CreateNewId();
832var projectId2 = ProjectId.CreateNewId();
1073var projectId = ProjectId.CreateNewId();
1074var projectId2 = ProjectId.CreateNewId();
1293var projectId = ProjectId.CreateNewId();
1328var projectId = ProjectId.CreateNewId();
1363var projectId = ProjectId.CreateNewId();
1398var projectId = ProjectId.CreateNewId();
1433var projectId = ProjectId.CreateNewId();
1449Assert.Throws<InvalidOperationException>(() => solution.WithProjectAssemblyName(ProjectId.CreateNewId(), "x.dll"));
1455var projectId = ProjectId.CreateNewId();
1473Assert.Throws<InvalidOperationException>(() => solution.WithProjectOutputFilePath(ProjectId.CreateNewId(), "x.dll"));
1479var projectId = ProjectId.CreateNewId();
1510var projectId = ProjectId.CreateNewId();
1527Assert.Throws<InvalidOperationException>(() => solution.WithProjectOutputRefFilePath(ProjectId.CreateNewId(), "x.dll"));
1533var projectId = ProjectId.CreateNewId();
1550Assert.Throws<InvalidOperationException>(() => solution.WithProjectCompilationOutputInfo(ProjectId.CreateNewId(), info));
1556var projectId = ProjectId.CreateNewId();
1573Assert.Throws<InvalidOperationException>(() => solution.WithProjectDefaultNamespace(ProjectId.CreateNewId(), "x"));
1579var projectId = ProjectId.CreateNewId();
1596var projectId = ProjectId.CreateNewId();
1670var projectId = ProjectId.CreateNewId();
1686Assert.Throws<InvalidOperationException>(() => solution.WithProjectName(ProjectId.CreateNewId(), "x"));
1692var projectId = ProjectId.CreateNewId();
1709Assert.Throws<InvalidOperationException>(() => solution.WithProjectFilePath(ProjectId.CreateNewId(), "x"));
1715var projectId = ProjectId.CreateNewId();
1725Assert.Throws<InvalidOperationException>(() => solution.WithProjectCompilationOptions(ProjectId.CreateNewId(), options));
1731var projectId = ProjectId.CreateNewId();
1757var projectId = ProjectId.CreateNewId();
1774Assert.Throws<InvalidOperationException>(() => solution.WithProjectParseOptions(ProjectId.CreateNewId(), options));
1780var projectId = ProjectId.CreateNewId();
1818var projectId = ProjectId.CreateNewId();
1856var projectId = ProjectId.CreateNewId();
1875var projectId = ProjectId.CreateNewId();
1894var projectId = ProjectId.CreateNewId();
1915var projectId = solution.Projects.Single().Id;
1917var projectId2 = ProjectId.CreateNewId();
1936Assert.Throws<InvalidOperationException>(() => solution.WithProjectReferences(ProjectId.CreateNewId(), [projectRef]));
1948var projectId = solution.Projects.Single().Id;
1949var externalProjectRef = new ProjectReference(ProjectId.CreateNewId());
1964var projectId = solution.Projects.Single().Id;
1965var projectId2 = ProjectId.CreateNewId();
1966var projectId3 = ProjectId.CreateNewId();
1974var externalProjectRef = new ProjectReference(ProjectId.CreateNewId());
2006var projectId = solution.Projects.Single().Id;
2008var projectId2 = ProjectId.CreateNewId();
2011var externalProjectRef = new ProjectReference(ProjectId.CreateNewId());
2030Assert.Throws<ArgumentException>("projectReference", () => solution.RemoveProjectReference(projectId, new ProjectReference(ProjectId.CreateNewId())));
2033Assert.Throws<InvalidOperationException>(() => solution.RemoveProjectReference(ProjectId.CreateNewId(), projectRef2));
2042var projectId0 = ProjectId.CreateNewId();
2043var submissionId1 = ProjectId.CreateNewId();
2044var submissionId2 = ProjectId.CreateNewId();
2045var submissionId3 = ProjectId.CreateNewId();
2077var projectId = solution.Projects.Single().Id;
2087Assert.Throws<InvalidOperationException>(() => solution.WithProjectMetadataReferences(ProjectId.CreateNewId(), [metadataRef]));
2095var projectId = solution.Projects.Single().Id;
2120var projectId = solution.Projects.Single().Id;
2139Assert.Throws<InvalidOperationException>(() => solution.RemoveMetadataReference(ProjectId.CreateNewId(), metadataRef1));
2147var projectId = solution.Projects.Single().Id;
2157Assert.Throws<InvalidOperationException>(() => solution.WithProjectAnalyzerReferences(ProjectId.CreateNewId(), [analyzerRef]));
2165var projectId = solution.Projects.Single().Id;
2193var projectId = solution.Projects.Single().Id;
2212Assert.Throws<InvalidOperationException>(() => solution.RemoveAnalyzerReference(ProjectId.CreateNewId(), analyzerRef1));
2360var projectId = ProjectId.CreateNewId();
2379Assert.Throws<InvalidOperationException>(() => solution.AddDocument(documentId: DocumentId.CreateNewId(ProjectId.CreateNewId()), "name", loader));
2385var projectId = ProjectId.CreateNewId();
2410Assert.Throws<InvalidOperationException>(() => solution.AddDocument(documentId: DocumentId.CreateNewId(ProjectId.CreateNewId()), "name", "text"));
2416var projectId = ProjectId.CreateNewId();
2438Assert.Throws<InvalidOperationException>(() => solution.AddDocument(documentId: DocumentId.CreateNewId(ProjectId.CreateNewId()), "name", sourceText));
2467var projectId = ProjectId.CreateNewId();
2490Assert.Throws<InvalidOperationException>(() => solution.AddDocument(documentId: DocumentId.CreateNewId(ProjectId.CreateNewId()), "name", syntaxRoot: root));
2496var projectId = ProjectId.CreateNewId();
2530var projectId = ProjectId.CreateNewId();
2557var pid = ProjectId.CreateNewId();
2570var project1 = ProjectId.CreateNewId();
2582var project1 = ProjectId.CreateNewId();
2583var project2 = ProjectId.CreateNewId();
2592var pid = ProjectId.CreateNewId();
2617var pid2 = solution.Projects.Single().Id;
2636var projectId = ProjectId.CreateNewId();
2659var projectId1 = ProjectId.CreateNewId();
2660var projectId2 = ProjectId.CreateNewId();
2686var projectId1 = ProjectId.CreateNewId();
2687var projectId2 = ProjectId.CreateNewId();
2712var projectId = ProjectId.CreateNewId();
2732var projectId1 = ProjectId.CreateNewId();
2733var projectId2 = ProjectId.CreateNewId();
2754var projectId1 = ProjectId.CreateNewId();
2755var projectId2 = ProjectId.CreateNewId();
2773var projectId1 = ProjectId.CreateNewId();
2774var projectId2 = ProjectId.CreateNewId();
2792var projectId1 = ProjectId.CreateNewId();
2793var projectId2 = ProjectId.CreateNewId();
2827var pm1 = ProjectId.CreateNewId();
2828var pm2 = ProjectId.CreateNewId();
2845var pm1 = ProjectId.CreateNewId();
2846var pm2 = ProjectId.CreateNewId();
2953var projectIds = Enumerable.Range(0, 5).Select(i => ProjectId.CreateNewId()).ToArray();
2973var project1 = ProjectId.CreateNewId();
3011var project1 = ProjectId.CreateNewId();
3069var project1 = ProjectId.CreateNewId();
3088var pid = ProjectId.CreateNewId();
3107var pid = ProjectId.CreateNewId();
3108var pid2 = ProjectId.CreateNewId();
3133var pid = ProjectId.CreateNewId();
3134var pid2 = ProjectId.CreateNewId();
3163var pid = ProjectId.CreateNewId();
3185var projectId = ProjectId.CreateNewId();
3207var pid = ProjectId.CreateNewId();
3245var pid = ProjectId.CreateNewId();
3286var projectId = ProjectId.CreateNewId();
3326var pid = ProjectId.CreateNewId();
3350var pid = ProjectId.CreateNewId();
3370var pid = ProjectId.CreateNewId();
3393var pid = ProjectId.CreateNewId();
3417var pid = ProjectId.CreateNewId();
3437var pid = ProjectId.CreateNewId();
3458var pid = ProjectId.CreateNewId();
3480var pid = ProjectId.CreateNewId();
3500var pid = ProjectId.CreateNewId();
3520var pid = ProjectId.CreateNewId();
3539var pid = ProjectId.CreateNewId();
3570var pid = ProjectId.CreateNewId();
3601var pid = ProjectId.CreateNewId();
3627var pid = ProjectId.CreateNewId();
3654var pid = ProjectId.CreateNewId();
3680var pid = ProjectId.CreateNewId();
3747var pid = ProjectId.CreateNewId();
3762private static ObjectReference<Compilation> GetObservedCompilationAsync(Solution solution, ProjectId projectId)
3772var pid = ProjectId.CreateNewId();
3787private static ObjectReference<Compilation> GetObservedCompilation(Solution solution, ProjectId projectId)
3801var pid = ProjectId.CreateNewId();
3940var pid = ProjectId.CreateNewId();
3965var pid1 = ProjectId.CreateNewId("p1");
3966var pid2 = ProjectId.CreateNewId("p2");
3967var pid3 = ProjectId.CreateNewId("p3");
4059ProjectId.CreateNewId(),
4071ProjectId.CreateNewId(),
4091ProjectId.CreateNewId(),
4101ProjectId.CreateNewId(),
4264ProjectId.CreateNewId(),
4277ProjectId.CreateNewId(),
4613var pid = ProjectId.CreateNewId();
4674var pid = ProjectId.CreateNewId();
4702var projectId = ProjectId.CreateNewId();
4738var projectId = ProjectId.CreateNewId();
4779var projectId = ProjectId.CreateNewId();
4824var projectId = ProjectId.CreateNewId();
4855var projectId = ProjectId.CreateNewId();
4906var projectId = ProjectId.CreateNewId();
4926var projectId = ProjectId.CreateNewId();
4947var projectId = ProjectId.CreateNewId();
4965var projectId = ProjectId.CreateNewId();
4989var projectId1 = ProjectId.CreateNewId();
4990var projectId2 = ProjectId.CreateNewId();
5011var projectId1 = ProjectId.CreateNewId();
5012var projectId2 = ProjectId.CreateNewId();
5039var projectId1 = ProjectId.CreateNewId();
5040var projectId2 = ProjectId.CreateNewId();
5067var projectId1 = ProjectId.CreateNewId();
5068var projectId2 = ProjectId.CreateNewId();
5069var projectId3 = ProjectId.CreateNewId();
5096var projectId1 = ProjectId.CreateNewId();
5097var projectId2 = ProjectId.CreateNewId();
5098var projectId3 = ProjectId.CreateNewId();
5127var projectId1 = ProjectId.CreateNewId();
5128var projectId2 = ProjectId.CreateNewId();
5129var projectId3 = ProjectId.CreateNewId();
5165var projectId1 = ProjectId.CreateNewId();
5182var projectId1 = ProjectId.CreateNewId();
5183var projectId2 = ProjectId.CreateNewId();
5184var projectId3 = ProjectId.CreateNewId();
5206using var _2 = ArrayBuilder<ProjectId>.GetInstance(out var projectsToRemove);
5228var projectId1 = ProjectId.CreateNewId();
5229var projectId2 = ProjectId.CreateNewId();
5230var projectId3 = ProjectId.CreateNewId();
5250using var _2 = ArrayBuilder<ProjectId>.GetInstance(out var projectsToRemove);
5272var projectId1 = ProjectId.CreateNewId();
5273var projectId2 = ProjectId.CreateNewId();
5283using var _2 = ArrayBuilder<ProjectId>.GetInstance(out var projectsToRemove);
5296var csProjectId = ProjectId.CreateNewId();
5297var vbProjectId = ProjectId.CreateNewId();
5353ProjectId.CreateNewId(),
5367ProjectId.CreateNewId(),
5380ProjectId.CreateNewId(),
5394ProjectId.CreateNewId(),
5408ProjectId.CreateNewId(),
5418ProjectId.CreateNewId(),
5466var pid = ProjectId.CreateNewId();
5549var projectId = ProjectId.CreateNewId();
WorkspaceTests\WorkspaceTests.cs (8)
24var projectId = ws.AddProject("TestProject", LanguageNames.CSharp).Id;
37var projectId = ws.AddProject("TestProject", LanguageNames.CSharp).Id;
53var projectId = ws.AddProject("TestProject", LanguageNames.CSharp).Id;
71var projectId = ws.AddProject("TestProject", LanguageNames.CSharp).Id;
88var projectId = ws.AddProject("TestProject", LanguageNames.CSharp).Id;
104var projectId = ws.AddProject("TestProject", LanguageNames.CSharp).Id;
129var info = ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Create(), name, name, language);
147public Document AddDocument(ProjectId projectId, string name, SourceText text)
Microsoft.Interop.ComInterfaceGenerator (1)
Microsoft.Interop.LibraryImportGenerator (1)
Microsoft.ML.CodeAnalyzer.Tests (1)
Microsoft.VisualStudio.LanguageServices (182)
Library\ObjectBrowser\AbstractListItemFactory.cs (25)
69protected MemberListItem CreateFullyQualifiedMemberListItem(ISymbol memberSymbol, ProjectId projectId, bool hidden)
78protected MemberListItem CreateInheritedMemberListItem(ISymbol memberSymbol, ProjectId projectId, bool hidden)
81protected MemberListItem CreateSimpleMemberListItem(ISymbol memberSymbol, ProjectId projectId, bool hidden)
84private MemberListItem CreateMemberListItem(ISymbol memberSymbol, ProjectId projectId, bool hidden, bool isInherited)
98protected TypeListItem CreateSimpleTypeListItem(INamedTypeSymbol namedTypeSymbol, ProjectId projectId, bool hidden)
111protected TypeListItem CreateFullyQualifiedTypeListItem(INamedTypeSymbol namedTypeSymbol, ProjectId projectId, bool hidden)
124protected NamespaceListItem CreateNamespaceListItem(INamespaceSymbol namespaceSymbol, ProjectId projectId)
170ProjectId projectId,
171Func<TSymbol, ProjectId, bool, ObjectListItem> listItemCreator)
184ProjectId projectId,
185Func<TSymbol, ProjectId, bool, ObjectListItem> listItemCreator,
205private ImmutableArray<ObjectListItem> GetBaseTypeListItems(INamedTypeSymbol namedTypeSymbol, Compilation compilation, ProjectId projectId)
293ProjectId projectId,
405public void CollectNamespaceListItems(IAssemblySymbol assemblySymbol, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
456private sealed class AssemblySymbolComparer : IEqualityComparer<(ProjectId, IAssemblySymbol)>
458public bool Equals((ProjectId, IAssemblySymbol) x, (ProjectId, IAssemblySymbol) y)
461public int GetHashCode((ProjectId, IAssemblySymbol) obj)
465public async Task<ImmutableHashSet<(ProjectId, IAssemblySymbol)>> GetAssemblySetAsync(
470foreach (var projectId in solution.ProjectIds)
507public async Task<ImmutableHashSet<(ProjectId, IAssemblySymbol)>> GetAssemblySetAsync(Project project, bool lookInReferences, CancellationToken cancellationToken)
597foreach (var projectId in projectIds)
690ProjectId projectId,
743public void CollectTypeListItems(IAssemblySymbol assemblySymbol, Compilation compilation, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
775public void CollectMemberListItems(IAssemblySymbol assemblySymbol, Compilation compilation, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
Library\ObjectBrowser\AbstractObjectBrowserLibraryManager_ListItems.cs (5)
14internal void CollectMemberListItems(IAssemblySymbol assemblySymbol, Compilation compilation, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
17internal void CollectNamespaceListItems(IAssemblySymbol assemblySymbol, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
20internal void CollectTypeListItems(IAssemblySymbol assemblySymbol, Compilation compilation, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
23internal Task<ImmutableHashSet<(ProjectId, IAssemblySymbol)>> GetAssemblySetAsync(Solution solution, string languageName, CancellationToken cancellationToken)
26internal Task<ImmutableHashSet<(ProjectId, IAssemblySymbol)>> GetAssemblySetAsync(Project project, bool lookInReferences, CancellationToken cancellationToken)
Packaging\PackageInstallerServiceFactory.cs (14)
80private readonly AsyncBatchingWorkQueue<(bool solutionChanged, ProjectId? changedProject)> _workQueue;
82private readonly ConcurrentDictionary<ProjectId, ProjectState> _projectToInstalledPackageAndVersion = [];
131_workQueue = new AsyncBatchingWorkQueue<(bool solutionChanged, ProjectId? changedProject)>(
134equalityComparer: EqualityComparer<(bool solutionChanged, ProjectId? changedProject)>.Default,
198bool IPackageInstallerService.IsEnabled(ProjectId projectId)
275var projectId = documentId.ProjectId;
429ProjectId? changedProject = null;
457ImmutableSegmentedList<(bool solutionChanged, ProjectId? changedProject)> workQueue, CancellationToken cancellationToken)
472ImmutableSegmentedList<(bool solutionChanged, ProjectId? changedProject)> workQueue, CancellationToken cancellationToken)
479using var _ = PooledHashSet<ProjectId>.GetInstance(out var projectsToProcess);
521ImmutableSegmentedList<(bool solutionChanged, ProjectId? changedProject)> workQueue, Solution solution, HashSet<ProjectId> projectsToProcess)
542ProjectId projectId,
605public bool IsInstalled(ProjectId projectId, string packageName)
ProjectSystem\VisualStudioWorkspaceImpl.cs (33)
82private ImmutableDictionary<ProjectId, IVsHierarchy?> _projectToHierarchyMap = ImmutableDictionary<ProjectId, IVsHierarchy?>.Empty;
83private ImmutableDictionary<ProjectId, Guid> _projectToGuidMap = ImmutableDictionary<ProjectId, Guid>.Empty;
87/// <see cref="TryGetRuleSetPathForProject(ProjectId)"/> and any other use is extremely suspicious, since direct use of this is out of
91private ImmutableDictionary<ProjectId, Func<string?>> _projectToRuleSetFilePath = ImmutableDictionary<ProjectId, Func<string?>>.Empty;
222internal override string? TryGetRuleSetPathForProject(ProjectId projectId)
312internal bool IsCPSProject(ProjectId projectId)
324internal bool IsPrimaryProject(ProjectId projectId)
385private bool TryGetProjectData(ProjectId projectId, [NotNullWhen(returnValue: true)] out IVsHierarchy? hierarchy, [NotNullWhen(returnValue: true)] out EnvDTE.Project? project)
394internal void GetProjectData(ProjectId projectId, out IVsHierarchy hierarchy, out EnvDTE.Project project)
402internal EnvDTE.Project? TryGetDTEProject(ProjectId projectId)
405internal bool TryAddReferenceToProject(ProjectId projectId, string assemblyName)
428protected override void ApplyCompilationOptionsChanged(ProjectId projectId, CompilationOptions options)
446protected override void ApplyParseOptionsChanged(ProjectId projectId, ParseOptions options)
463protected override void ApplyAnalyzerReferenceAdded(ProjectId projectId, AnalyzerReference analyzerReference)
485protected override void ApplyAnalyzerReferenceRemoved(ProjectId projectId, AnalyzerReference analyzerReference)
518ProjectId projectId, MetadataReference metadataReference)
544ProjectId projectId, MetadataReference metadataReference)
592var projectId = changesForFile.Value.First().ProjectId;
601async Task<MultiDictionary<string, (TextChange TextChange, ProjectId ProjectId)>> GetMappedTextChangesAsync(SolutionChanges solutionChanges, CancellationToken cancellationToken)
603var filePathToMappedTextChanges = new MultiDictionary<string, (TextChange TextChange, ProjectId ProjectId)>();
660ProjectId projectId, ProjectReference projectReference)
700ProjectId projectId, ProjectReference projectReference)
1061internal void OpenDocumentFromPath(string? filePath, ProjectId projectId, bool activate = true)
1082private bool TryGetFrame(string? filePath, ProjectId projectId, [NotNullWhen(returnValue: true)] out IVsWindowFrame? frame)
1345public override IVsHierarchy? GetHierarchy(ProjectId projectId)
1351internal override Guid GetProjectGuid(ProjectId projectId)
1357internal string? TryGetDependencyNodeTargetIdentifier(ProjectId projectId)
1434internal bool TryGetHierarchy(ProjectId projectId, [NotNullWhen(returnValue: true)] out IVsHierarchy? hierarchy)
1486internal override bool CanAddProjectReference(ProjectId referencingProject, ProjectId referencedProject)
TaskList\ExternalErrorDiagnosticUpdateSource.cs (11)
127public bool IsSupportedDiagnosticId(ProjectId projectId, string id)
130public void ClearErrors(ProjectId projectId)
160public void AddNewErrors(ProjectId projectId, Guid projectHierarchyGuid, ImmutableArray<DiagnosticData> diagnostics)
173private async Task ClearPreviousAsync(ProjectId? projectId, CancellationToken cancellationToken)
187private async ValueTask ProcessDiagnosticsReportAsync(ProjectId projectId, Guid projectHierarchyGuid, ImmutableArray<DiagnosticData> diagnostics, InProgressState state, CancellationToken cancellationToken)
216private static Microsoft.VisualStudio.RpcContracts.DiagnosticManagement.Diagnostic? CreateDiagnostic(ProjectId projectId, Guid projectHierarchyGuid, DiagnosticData diagnostic, Solution solution)
339private readonly Dictionary<ProjectId, ImmutableHashSet<string>> _allDiagnosticIdMap = [];
349public bool IsSupportedDiagnosticId(ProjectId projectId, string id)
353ProjectId projectId,
354Dictionary<ProjectId, ImmutableHashSet<string>> diagnosticIdMap,
374private ImmutableHashSet<string> GetOrCreateSupportedDiagnosticIds(ProjectId projectId)
Microsoft.VisualStudio.LanguageServices.CSharp (1)
Microsoft.VisualStudio.LanguageServices.CSharp.UnitTests (7)
Microsoft.VisualStudio.LanguageServices.LiveShare (12)
Microsoft.VisualStudio.LanguageServices.UnitTests (3)
Microsoft.VisualStudio.LanguageServices.VisualBasic (1)
Microsoft.VisualStudio.LanguageServices.Xaml (1)
Roslyn.Diagnostics.Analyzers (1)
Roslyn.Diagnostics.Analyzers.UnitTests (1)
Roslyn.VisualStudio.Next.UnitTests (66)
Services\SolutionServiceTests.cs (9)
87ProjectId.CreateNewId(), VersionStamp.Create(), "test", "test.dll", LanguageNames.CSharp,
116ProjectId.CreateNewId(), VersionStamp.Create(), "test", "test.dll", LanguageNames.CSharp,
217foreach (var projectId in solution.ProjectIds)
252var projectId = solution.ProjectIds.Single();
298var existingProjectId = s.ProjectIds.First();
322var projectId = workspace.CurrentSolution.ProjectIds.First();
353var projectId = workspace.CurrentSolution.ProjectIds.First();
386var projectId = workspace.CurrentSolution.ProjectIds.First();
915project1 = project1.AddProjectReference(new ProjectReference(ProjectId.CreateNewId()));
Test.Utilities (2)
Text.Analyzers (1)
Text.Analyzers.UnitTests (2)