From 440676daec143b646f1702b38ab355b01b5761cc Mon Sep 17 00:00:00 2001 From: Manish Vasani Date: Wed, 30 Oct 2019 16:04:40 -0700 Subject: [PATCH] Don't MEF import core Roslyn language service type in SolutionExplorerShim My recent [change](https://github.com/dotnet/roslyn/pull/37795/commits/03c9021af53e648c74a496a1a5e53a2dc616540c#diff-f7b9587085c9a364f8b4727f4599ebc5R76) caused an RPS regression where creating a new C++ project, which leads to us loading the Roslyn SolutionExplorerShim, now also loads Roslyn language service and all underlying Roslyn assemblies. This change avoids MEF importing the Roslyn type in AnalyzerCommandHandler constructor and instead gets it lazily. In future, we should add an analyzer to prevent SolutionExplorerShim from MEF importing any core Roslyn services. --- .../Core/SolutionExplorerShim/AnalyzersCommandHandler.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/VisualStudio/Core/SolutionExplorerShim/AnalyzersCommandHandler.cs b/src/VisualStudio/Core/SolutionExplorerShim/AnalyzersCommandHandler.cs index bcbfbd2c94f..b29c03299b8 100644 --- a/src/VisualStudio/Core/SolutionExplorerShim/AnalyzersCommandHandler.cs +++ b/src/VisualStudio/Core/SolutionExplorerShim/AnalyzersCommandHandler.cs @@ -35,7 +35,6 @@ internal class AnalyzersCommandHandler : IAnalyzersCommandHandler, IVsUpdateSolu private readonly AnalyzerItemsTracker _tracker; private readonly AnalyzerReferenceManager _analyzerReferenceManager; private readonly IServiceProvider _serviceProvider; - private readonly ICodeActionEditHandlerService _editHandlerService; private ContextMenuController _analyzerFolderContextMenuController; private ContextMenuController _analyzerContextMenuController; @@ -72,13 +71,11 @@ internal class AnalyzersCommandHandler : IAnalyzersCommandHandler, IVsUpdateSolu public AnalyzersCommandHandler( AnalyzerItemsTracker tracker, AnalyzerReferenceManager analyzerReferenceManager, - [Import(typeof(SVsServiceProvider))]IServiceProvider serviceProvider, - ICodeActionEditHandlerService editHandlerService) + [Import(typeof(SVsServiceProvider))]IServiceProvider serviceProvider) { _tracker = tracker; _analyzerReferenceManager = analyzerReferenceManager; _serviceProvider = serviceProvider; - _editHandlerService = editHandlerService; } /// @@ -432,6 +429,7 @@ private void SetSeverityHandler(object sender, EventArgs args) var componentModel = (IComponentModel)_serviceProvider.GetService(typeof(SComponentModel)); var waitIndicator = componentModel.GetService(); + var editHandlerService = componentModel.GetService(); try { @@ -450,7 +448,7 @@ private void SetSeverityHandler(object sender, EventArgs args) { var newSolution = selectedDiagnostic.GetSolutionWithUpdatedAnalyzerConfigSeverityAsync(selectedAction.Value, project, waitContext.CancellationToken).WaitAndGetResult(waitContext.CancellationToken); var operations = ImmutableArray.Create(new ApplyChangesOperation(newSolution)); - _editHandlerService.Apply( + editHandlerService.Apply( _workspace, fromDocument: null, operations: operations, -- GitLab