提交 440676da 编写于 作者: M Manish Vasani

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.
上级 23885cd0
......@@ -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;
}
/// <summary>
......@@ -432,6 +429,7 @@ private void SetSeverityHandler(object sender, EventArgs args)
var componentModel = (IComponentModel)_serviceProvider.GetService(typeof(SComponentModel));
var waitIndicator = componentModel.GetService<IWaitIndicator>();
var editHandlerService = componentModel.GetService<ICodeActionEditHandlerService>();
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<CodeActionOperation>(new ApplyChangesOperation(newSolution));
_editHandlerService.Apply(
editHandlerService.Apply(
_workspace,
fromDocument: null,
operations: operations,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册