Remove RemoteDocumentContext now that it's essentially useless - #84330
Merged
davidwengier merged 12 commits intoJun 30, 2026
Conversation
It was only ever constructed from calling GetURI anyway
Contributor
There was a problem hiding this comment.
Pull request overview
This change removes the RemoteDocumentContext wrapper from the Razor remote services layer by moving the host DocumentUri onto RemoteDocumentSnapshot and updating service APIs/callers to operate directly on RemoteDocumentSnapshot (and, for workspace-edit mapping, on Solution).
Changes:
- Add
RemoteDocumentSnapshot.Uriand update remote services/resolvers to useRemoteDocumentSnapshotinstead ofRemoteDocumentContext. - Change
IRazorEditService.MapWorkspaceEditAsyncto take aSolutionand adjust callers/tests accordingly. - Delete
RemoteDocumentContextand simplify/remove pass-through members that duplicated snapshot caching.
Reviewed changes
Copilot reviewed 76 out of 76 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/CodeActions/HtmlCodeActionResolverTest.cs | Update test to pass RemoteDocumentSnapshot and new MapWorkspaceEditAsync(Solution, …) shape |
| src/Razor/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.UnitTests/CodeActions/HtmlCodeActionProviderTest.cs | Update test mocks for MapWorkspaceEditAsync(Solution, …) |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/WrapWithTag/RemoteWrapWithTagService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/UriPresentation/RemoteUriPresentationService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TypeHierarchy/RemoteTypeHierarchyService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/SpellCheckService.cs | Replace context-based access with snapshot-generated output/text access |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/RemoteSpellCheckService.cs | Update remote service delegate signature to snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/ISpellCheckService.cs | Update interface to accept RemoteDocumentSnapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/ICSharpSpellCheckRangeProvider.cs | Update interface to accept RemoteDocumentSnapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SpellCheck/CSharpSpellCheckRangeProvider.cs | Update implementation to accept snapshot directly |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SignatureHelp/RemoteSignatureHelpService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteSemanticTokensService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RazorSemanticTokensInfoService.cs | Switch token computation/logging to snapshot and Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/IRazorSemanticTokenInfoService.cs | Update interface to accept RemoteDocumentSnapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SelectionRanges/RemoteSelectionRangeService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/RenameService.cs | Switch service API surface from context to snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/RemoteRenameService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/IRenameService.cs | Update interface to accept RemoteDocumentSnapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RemoveAndSortUsings/RemoteRemoveAndSortUsingsService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorDocumentServiceBase.cs | Change base helper to create/flow RemoteDocumentSnapshot instead of context |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentSnapshotExtensions.cs | Update to use ProjectSnapshot property naming |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentSnapshot.cs | Add Uri to snapshot; remove redundant pass-through/caching members |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentContext.cs | Deleted obsolete wrapper type |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/NestedFiles/RemoteAddNestedFileService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/LinkedEditingRange/RemoteLinkedEditingRangeService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/InlineCompletion/RemoteInlineCompletionService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/InlayHints/RemoteInlayHintService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/HtmlDocuments/RemoteHtmlDocumentService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/RemoteHoverService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToImplementation/RemoteGoToImplementationService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToDefinition/RemoteGoToDefinitionService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToDefinition/DefinitionService.cs | Update to use ProjectSnapshot property naming |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RazorFormattingService.cs | Switch formatting service API to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/IRazorFormattingService.cs | Update interface to accept RemoteDocumentSnapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FoldingRanges/RemoteFoldingRangeService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FindAllReferences/RemoteFindAllReferencesService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentSymbols/RemoteDocumentSymbolService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/RazorEditService_WorkspaceEdit.cs | Change workspace-edit mapping API to accept Solution |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/IRazorEditService.cs | Update interface signature for workspace-edit mapping |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentHighlight/RemoteDocumentHighlightService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Diagnostics/RemoteDiagnosticsService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Diagnostics/RazorDiagnosticHelper.cs | Update to use ProjectSnapshot property naming |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DevTools/RemoteDevToolsService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Debugging/RemoteDebugInfoService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Debugging/RemoteDataTipRangeService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RemoteCompletionService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/CSharpCompletionItemFormatter.cs | Switch formatter to use snapshot (Uri, text/output) instead of context |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeLens/RemoteCodeLensService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RoslynCodeActionHelpers.cs | Switch helper API from context to snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RemoteCodeActionsService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/WrapAttributesCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/SortAndConsolidateUsingsCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/SimplifyTagToSelfClosingCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/SimplifyFullyQualifiedComponentCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/RemoveUnnecessaryDirectivesCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/PromoteUsingCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/IRoslynCodeActionHelpers.cs | Update interface signature to accept snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/IRazorCodeActionResolver.cs | Update interface signature to accept snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/GenerateEventHandlerCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/ExtractToCssCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/ExtractToComponentCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/ExtractToCodeBehindCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/CreateComponentCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/ComponentAccessibilityCodeActionProvider.cs | Update to use ProjectSnapshot property naming |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Razor/AddUsingsCodeActionResolver.cs | Switch resolver signature to accept snapshot and use snapshot.Uri |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/ICodeActionResolveService.cs | Update interface signature to accept snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Html/IHtmlCodeActionResolver.cs | Update interface signature to accept snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Html/HtmlCodeActionResolver.cs | Update resolver signature to accept snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/Html/HtmlCodeActionHelpers.cs | Pass Solution into MapWorkspaceEditAsync |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/CSharp/ICSharpCodeActionResolver.cs | Update interface signature to accept snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/CSharp/CSharpCodeActionResolver.cs | Update resolver signature to accept snapshot |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/CodeActionResolveService.cs | Switch resolve pipeline from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CallHierarchy/RemoteCallHierarchyService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/AutoInsert/RemoteAutoInsertService.cs | Switch service plumbing from context to snapshot APIs |
| src/Razor/src/Razor/benchmarks/Microsoft.AspNetCore.Razor.Microbenchmarks/Formatting/DocumentFormattingBenchmark.cs | Update benchmark setup to store snapshot instead of context |
Member
Author
|
Oops. Looks like my last minute rebase might have dropped a commit. |
ToddGrun
reviewed
Jun 30, 2026
| /// Apply the edit to the specified document, get Roslyn to simplify it, and return the simplified edit | ||
| /// </summary> | ||
| /// <param name="documentContext">The Razor document context for the edit</param> | ||
| /// <param name="documentSnapshot">The Razor document context for the edit</param> |
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow up to the previous document cleanup PR,
RemoteDocumentContextis just aDocumentUriand aRemoteDocumentSnapshot, and a bunch of methods that call through toRemoteDocumentSnapshotand cache results (whichRemoteDocumentSnapshotalso does), but with different names.This PR moves the Uri property over to
RemoteDocumentSnapshot, moves all calls to anything inRemoteDocumentContextonto theSnapshotproperty, and then finally removesRemoteDocumentContextentirely.This was all just abstractions to enable the old language server and cohosting to exist at the same time, and have code spread across layers, so its all pretty mechanical cleanup. Commit-at-a-time review will tell the story in pieces, but not sure it's strictly necessary. Only a couple of manual commits at the end to do some obvious cleanup.
As before, if the feature branch merges before this, this can just be retargeted at main, it's not strictly "sonic".