From 68349faaeded3835970e5b2c7d6c440ee36b1d74 Mon Sep 17 00:00:00 2001 From: David Wengier Date: Wed, 17 Jun 2026 16:41:39 +1000 Subject: [PATCH 1/4] Make dev tools split generated documents aware Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...CohostGeneratedDocumentContentsEndpoint.cs | 8 +++- .../DevTools/GeneratedDocumentKind.cs | 1 + .../Remote/IRemoteDevToolsService.cs | 2 +- .../DevTools/RemoteDevToolsService.cs | 7 +++- .../RazorContextMenu.vsct | 8 ++++ .../SyntaxVisualizerControl.xaml.cs | 16 ++++++++ .../SyntaxVisualizerToolWindow.cs | 7 ++++ .../xlf/RazorContextMenu.vsct.cs.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.de.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.es.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.fr.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.it.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.ja.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.ko.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.pl.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.pt-BR.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.ru.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.tr.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.zh-Hans.xlf | 5 +++ .../xlf/RazorContextMenu.vsct.zh-Hant.xlf | 5 +++ ...stGeneratedDocumentContentsEndpointTest.cs | 40 +++++++++++++++++-- 21 files changed, 145 insertions(+), 9 deletions(-) diff --git a/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/GeneratedDocumentContents/CohostGeneratedDocumentContentsEndpoint.cs b/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/GeneratedDocumentContents/CohostGeneratedDocumentContentsEndpoint.cs index df0415c7f017f..8e9dfc8f9665a 100644 --- a/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/GeneratedDocumentContents/CohostGeneratedDocumentContentsEndpoint.cs +++ b/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.CohostingShared/GeneratedDocumentContents/CohostGeneratedDocumentContentsEndpoint.cs @@ -36,9 +36,13 @@ internal sealed class CohostGeneratedDocumentContentsEndpoint( { var response = request.Kind switch { - GeneratedDocumentKind.CSharp => await _remoteServiceInvoker.TryInvokeAsync( + GeneratedDocumentKind.CSharp => await _remoteServiceInvoker.TryInvokeAsync( razorDocument.Project.Solution, - (service, solutionInfo, cancellationToken) => service.GetCSharpDocumentTextAsync(solutionInfo, razorDocument.Id, cancellationToken), + (service, solutionInfo, cancellationToken) => service.GetCSharpDocumentTextAsync(solutionInfo, razorDocument.Id, declarationDocument: false, cancellationToken), + cancellationToken).ConfigureAwait(false), + GeneratedDocumentKind.CSharpDeclaration => await _remoteServiceInvoker.TryInvokeAsync( + razorDocument.Project.Solution, + (service, solutionInfo, cancellationToken) => service.GetCSharpDocumentTextAsync(solutionInfo, razorDocument.Id, declarationDocument: true, cancellationToken), cancellationToken).ConfigureAwait(false), GeneratedDocumentKind.Html => await _remoteServiceInvoker.TryInvokeAsync( razorDocument.Project.Solution, diff --git a/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DevTools/GeneratedDocumentKind.cs b/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DevTools/GeneratedDocumentKind.cs index f1d7dbc0fd36b..17550b031d5a8 100644 --- a/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DevTools/GeneratedDocumentKind.cs +++ b/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DevTools/GeneratedDocumentKind.cs @@ -6,6 +6,7 @@ namespace Microsoft.CodeAnalysis.Razor.Protocol.DevTools; internal enum GeneratedDocumentKind { CSharp, + CSharpDeclaration, Html, Formatting } diff --git a/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDevToolsService.cs b/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDevToolsService.cs index b2ccb72bdb7b8..77206e778e4f2 100644 --- a/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDevToolsService.cs +++ b/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDevToolsService.cs @@ -9,7 +9,7 @@ namespace Microsoft.CodeAnalysis.Razor.Remote; internal interface IRemoteDevToolsService { - ValueTask GetCSharpDocumentTextAsync(RazorSolutionWrapper solutionInfo, DocumentId razorDocumentId, CancellationToken cancellationToken); + ValueTask GetCSharpDocumentTextAsync(RazorSolutionWrapper solutionInfo, DocumentId razorDocumentId, bool declarationDocument, CancellationToken cancellationToken); ValueTask GetHtmlDocumentTextAsync(RazorSolutionWrapper solutionInfo, DocumentId razorDocumentId, CancellationToken cancellationToken); diff --git a/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DevTools/RemoteDevToolsService.cs b/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DevTools/RemoteDevToolsService.cs index 723c5145438c4..cb8f05fe87765 100644 --- a/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DevTools/RemoteDevToolsService.cs +++ b/src/Razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DevTools/RemoteDevToolsService.cs @@ -28,9 +28,10 @@ protected override IRemoteDevToolsService CreateService(in ServiceArgs args) WriteIndented = true }; - public ValueTask GetCSharpDocumentTextAsync( + public ValueTask GetCSharpDocumentTextAsync( RazorSolutionWrapper solutionInfo, DocumentId razorDocumentId, + bool declarationDocument, CancellationToken cancellationToken) => RunServiceAsync( solutionInfo, @@ -38,7 +39,9 @@ public ValueTask GetCSharpDocumentTextAsync( async context => { var codeDocument = await context.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); - return codeDocument.GetCSharpSourceText().ToString(); + var csharpDocument = codeDocument.GetCSharpDocument(declarationDocument); + + return csharpDocument?.Text.ToString(); }, cancellationToken); diff --git a/src/Razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/RazorContextMenu.vsct b/src/Razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/RazorContextMenu.vsct index 961edb8f340eb..dcefaa9194e0c 100644 --- a/src/Razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/RazorContextMenu.vsct +++ b/src/Razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/RazorContextMenu.vsct @@ -22,6 +22,7 @@ + @@ -95,6 +96,13 @@ + + - - - - - - -