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..9259bc3ee8b54 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.CSharpImplementation => 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..88c3cdd54f1ec 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 @@ -5,7 +5,8 @@ namespace Microsoft.CodeAnalysis.Razor.Protocol.DevTools; internal enum GeneratedDocumentKind { - CSharp, + CSharpImplementation, + 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..d3421dc9811d5 100644 --- a/src/Razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/RazorContextMenu.vsct +++ b/src/Razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/RazorContextMenu.vsct @@ -12,8 +12,12 @@ + + + + @@ -22,6 +26,7 @@ + @@ -56,6 +61,14 @@ + + + + + + + + @@ -75,6 +88,20 @@ Razor Syntax Visualizer + + + + + Show Generated File + + + + + + + Show Tag Helpers + + @@ -88,43 +115,50 @@ - - + + - - - -