Skip to content

Initialize feature flags in OOP early #12079

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions eng/Version.Details.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,27 @@ This file should be imported by eng/Versions.props
<Project>
<PropertyGroup>
<!-- dotnet/roslyn dependencies -->
<MicrosoftCodeAnalysisAnalyzersPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisAnalyzersPackageVersion>
<MicrosoftCodeAnalysisCommonPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisCommonPackageVersion>
<MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisCSharpPackageVersion>
<MicrosoftCodeAnalysisCSharpEditorFeaturesPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisCSharpEditorFeaturesPackageVersion>
<MicrosoftCodeAnalysisCSharpFeaturesPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisCSharpFeaturesPackageVersion>
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
<MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
<MicrosoftCodeAnalysisEditorFeaturesCommonPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisEditorFeaturesCommonPackageVersion>
<MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
<MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
<MicrosoftCodeAnalysisExternalAccessRazorEditorFeaturesPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisExternalAccessRazorEditorFeaturesPackageVersion>
<MicrosoftCodeAnalysisExternalAccessRazorFeaturesPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisExternalAccessRazorFeaturesPackageVersion>
<MicrosoftCodeAnalysisLanguageServerProtocolPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisLanguageServerProtocolPackageVersion>
<MicrosoftCodeAnalysisRemoteServiceHubPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisRemoteServiceHubPackageVersion>
<MicrosoftCodeAnalysisTestUtilitiesPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisTestUtilitiesPackageVersion>
<MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion>
<MicrosoftCodeAnalysisWorkspacesCommonPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisWorkspacesCommonPackageVersion>
<MicrosoftCodeAnalysisWorkspacesMSBuildPackageVersion>5.0.0-2.25380.11</MicrosoftCodeAnalysisWorkspacesMSBuildPackageVersion>
<MicrosoftCommonLanguageServerProtocolFrameworkPackageVersion>5.0.0-2.25380.11</MicrosoftCommonLanguageServerProtocolFrameworkPackageVersion>
<MicrosoftNetCompilersToolsetPackageVersion>5.0.0-2.25380.11</MicrosoftNetCompilersToolsetPackageVersion>
<MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25380.11</MicrosoftVisualStudioLanguageServicesPackageVersion>
<MicrosoftCodeAnalysisAnalyzersPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisAnalyzersPackageVersion>
<MicrosoftCodeAnalysisCommonPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisCommonPackageVersion>
<MicrosoftCodeAnalysisCSharpPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisCSharpPackageVersion>
<MicrosoftCodeAnalysisCSharpEditorFeaturesPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisCSharpEditorFeaturesPackageVersion>
<MicrosoftCodeAnalysisCSharpFeaturesPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisCSharpFeaturesPackageVersion>
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
<MicrosoftCodeAnalysisEditorFeaturesPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisEditorFeaturesPackageVersion>
<MicrosoftCodeAnalysisEditorFeaturesCommonPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisEditorFeaturesCommonPackageVersion>
<MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
<MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisExternalAccessFSharpPackageVersion>
<MicrosoftCodeAnalysisExternalAccessRazorEditorFeaturesPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisExternalAccessRazorEditorFeaturesPackageVersion>
<MicrosoftCodeAnalysisExternalAccessRazorFeaturesPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisExternalAccessRazorFeaturesPackageVersion>
<MicrosoftCodeAnalysisLanguageServerProtocolPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisLanguageServerProtocolPackageVersion>
<MicrosoftCodeAnalysisRemoteServiceHubPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisRemoteServiceHubPackageVersion>
<MicrosoftCodeAnalysisTestUtilitiesPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisTestUtilitiesPackageVersion>
<MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion>
<MicrosoftCodeAnalysisWorkspacesCommonPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisWorkspacesCommonPackageVersion>
<MicrosoftCodeAnalysisWorkspacesMSBuildPackageVersion>5.0.0-2.25406.1</MicrosoftCodeAnalysisWorkspacesMSBuildPackageVersion>
<MicrosoftCommonLanguageServerProtocolFrameworkPackageVersion>5.0.0-2.25406.1</MicrosoftCommonLanguageServerProtocolFrameworkPackageVersion>
<MicrosoftNetCompilersToolsetPackageVersion>5.0.0-2.25406.1</MicrosoftNetCompilersToolsetPackageVersion>
<MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25406.1</MicrosoftVisualStudioLanguageServicesPackageVersion>
<!-- dotnet/arcade dependencies -->
<MicrosoftDotNetArcadeSdkPackageVersion>9.0.0-beta.25255.5</MicrosoftDotNetArcadeSdkPackageVersion>
<!-- dotnet/aspnetcore dependencies -->
Expand Down
84 changes: 42 additions & 42 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,89 +2,89 @@
<Dependencies>
<Source Uri="https://github.com/dotnet/dotnet" Mapping="razor" Sha="8b29a1682219da555ee27e4fdda55dc3884b316f" BarId="277635" />
<ProductDependencies>
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CommonLanguageServerProtocol.Framework" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CommonLanguageServerProtocol.Framework" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.Common" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.Common" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.CSharp" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.CSharp.EditorFeatures" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.CSharp.EditorFeatures" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.CSharp.Features" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.CSharp.Features" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.EditorFeatures" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Common" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Common" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.Remote.ServiceHub" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.Remote.ServiceHub" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.Workspaces.Common" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.Workspaces.Common" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.VisualStudio.LanguageServices" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.Test.Utilities" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.Test.Utilities" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.Razor.Features" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.Razor.Features" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.Razor.EditorFeatures" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.Razor.EditorFeatures" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.LanguageServer.Protocol" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.LanguageServer.Protocol" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.ExternalAccess.FSharp" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
<Dependency Name="Microsoft.CodeAnalysis.Analyzers" Version="5.0.0-2.25380.11">
<Dependency Name="Microsoft.CodeAnalysis.Analyzers" Version="5.0.0-2.25406.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>512fe5197056a877a86dff3054d8bd0028af13ed</Sha>
<Sha>5759a992418f0fd3e206cc6f369b6f33e873dfca</Sha>
</Dependency>
</ProductDependencies>
<ToolsetDependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,48 +5,73 @@
using System.Collections.Generic;
using System.Collections.Immutable;
using System.ComponentModel.Composition;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost;
using Microsoft.CodeAnalysis.Razor.Logging;
using Microsoft.CodeAnalysis.Razor.Protocol;
using Microsoft.CodeAnalysis.Razor.Remote;
using Microsoft.CodeAnalysis.Razor.Workspaces;
using Microsoft.VisualStudio.Threading;

namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost;

[Export(typeof(ICohostStartupService))]
[Export(typeof(AbstractRazorCohostLifecycleService))]
[method: ImportingConstructor]
internal sealed class CohostStartupService(
[ImportMany] IEnumerable<Lazy<IRazorCohostStartupService>> lazyStartupServices,
ILoggerFactory loggerFactory) : ICohostStartupService
IRemoteServiceInvoker remoteServiceInvoker,
LanguageServerFeatureOptions featureOptions,
ILoggerFactory loggerFactory) : AbstractRazorCohostLifecycleService
{
private readonly ImmutableArray<Lazy<IRazorCohostStartupService>> _lazyStartupServices = [.. lazyStartupServices];
private readonly ILogger _logger = loggerFactory.GetOrCreateLogger<CohostStartupService>();
private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker;
private readonly LanguageServerFeatureOptions _featureOptions = featureOptions;

public async Task StartupAsync(string clientCapabilitiesString, RazorCohostRequestContext requestContext, CancellationToken cancellationToken)
public override Task LspServerIntializedAsync(CancellationToken cancellationToken)
{
var clientCapabilities = JsonSerializer.Deserialize<VSInternalClientCapabilities>(clientCapabilitiesString, JsonHelpers.JsonSerializerOptions) ?? new();
// If cohosting is on, we have to intialize it early so we can un-suppress the source generator. This can be removed
// when the suppression system is removed once cohosting is fully enabled.
// Without this operations that might affect Razor files won't work until a Razor file is opened in the editor.
if (_featureOptions.UseRazorCohostServer)
{
return _remoteServiceInvoker.InitializeAsync().AsTask();
}

return Task.CompletedTask;
}

public override async Task RazorActivatedAsync(ClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext, CancellationToken cancellationToken)
{
// Normally loggers are fields, but this service gets created early so it's better to avoid the work in case Razor
// never gets activated.
var logger = loggerFactory.GetOrCreateLogger<CohostStartupService>();

var capabilities = clientCapabilities.ToVSInternalClientCapabilities();
var providers = _lazyStartupServices.SelectAndOrderByAsArray(p => p.Value, p => p.Order);

foreach (var provider in providers)
{
if (cancellationToken.IsCancellationRequested)
{
_logger.LogInformation($"Razor extension startup cancelled.");
logger.LogInformation($"Razor extension startup cancelled.");
return;
}

try
{
await provider.StartupAsync(clientCapabilities, requestContext, cancellationToken).ConfigureAwait(false);
await provider.StartupAsync(capabilities, requestContext, cancellationToken).ConfigureAwait(false);
}
catch (Exception ex) when (ex is not OperationCanceledException)
{
_logger.LogError(ex, $"Error initializing Razor startup service '{provider.GetType().Name}'");
logger.LogError(ex, $"Error initializing Razor startup service '{provider.GetType().Name}'");
}
}

_logger.LogInformation($"Razor extension startup finished.");
logger.LogInformation($"Razor extension startup finished.");
}

public override void Dispose()
{
_remoteServiceInvoker.UninitializeLspAsync().Forget();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ internal abstract class AbstractClientCapabilitiesService : IClientCapabilitiesS

public VSInternalClientCapabilities ClientCapabilities => _clientCapabilities ?? throw new InvalidOperationException("Client capabilities requested before initialized.");

public void SetCapabilities(VSInternalClientCapabilities clientCapabilities)
public void SetCapabilities(VSInternalClientCapabilities? clientCapabilities)
{
_clientCapabilities = clientCapabilities;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,7 @@ internal interface IRemoteClientInitializationService : IRemoteJsonService
{
ValueTask InitializeAsync(RemoteClientInitializationOptions initializationOptions, CancellationToken cancellationToken);

ValueTask InitializeLSPAsync(RemoteClientLSPInitializationOptions lspInitializationOptions, CancellationToken cancellationToken);
ValueTask InitializeLspAsync(RemoteClientLSPInitializationOptions lspInitializationOptions, CancellationToken cancellationToken);

ValueTask UninitializeLspAsync(CancellationToken cancellationToken);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ namespace Microsoft.CodeAnalysis.Razor.Remote;

internal interface IRemoteServiceInvoker
{
ValueTask InitializeAsync();

ValueTask UninitializeLspAsync();

ValueTask<TResult?> TryInvokeAsync<TService, TResult>(
Solution solution,
Func<TService, RazorPinnedSolutionInfoWrapper, CancellationToken, ValueTask<TResult>> invocation,
Expand Down
Loading