Skip to content
代码片段 群组 项目
提交 d3a4c9ec 编辑于 作者: Jason Malinowski's avatar Jason Malinowski
浏览文件

Make VisualStudioProjectTracker.WorkspaceServices an internal field

Other components should be able to access this too, especially since
the workspace itself isn't always there.
上级 28af1ec7
No related branches found
No related tags found
无相关合并请求
......@@ -38,8 +38,6 @@ internal sealed partial class VisualStudioProjectTracker : ForegroundThreadAffin
#region Mutable fields accessed only from foreground thread - don't need locking for access (all accessing methods must have AssertIsForeground).
private readonly List<WorkspaceHostState> _workspaceHosts;
private readonly HostWorkspaceServices _workspaceServices;
/// <summary>
/// Set to true while we're batching project loads. That is, between
/// <see cref="IVsSolutionLoadEvents.OnBeforeLoadProjectBatch" /> and
......@@ -113,6 +111,8 @@ internal ImmutableArray<AbstractProject> ImmutableProjects
}
}
internal HostWorkspaceServices WorkspaceServices { get; }
IReadOnlyList<IVisualStudioHostProject> IVisualStudioHostProjectContainer.GetProjects() => this.ImmutableProjects;
void IVisualStudioHostProjectContainer.NotifyNonDocumentOpenedForProject(IVisualStudioHostProject project)
......@@ -131,7 +131,7 @@ public VisualStudioProjectTracker(IServiceProvider serviceProvider, HostWorkspac
_serviceProvider = serviceProvider;
_workspaceHosts = new List<WorkspaceHostState>(capacity: 1);
_workspaceServices = workspaceServices;
WorkspaceServices = workspaceServices;
_vsSolution = (IVsSolution)serviceProvider.GetService(typeof(SVsSolution));
_runningDocumentTable = (IVsRunningDocumentTable4)serviceProvider.GetService(typeof(SVsRunningDocumentTable));
......@@ -653,7 +653,7 @@ private async Task PopulateWorkspaceFromDeferredProjectInfoAsync(
if (solutionConfig != null)
{
// Capture the context so that we come back on the UI thread, and do the actual project creation there.
var deferredProjectWorkspaceService = _workspaceServices.GetService<IDeferredProjectWorkspaceService>();
var deferredProjectWorkspaceService = WorkspaceServices.GetService<IDeferredProjectWorkspaceService>();
projectInfos = await deferredProjectWorkspaceService.GetDeferredProjectInfoForConfigurationAsync(
$"{solutionConfig.Name}|{solutionConfig.PlatformName}",
cancellationToken).ConfigureAwait(true);
......@@ -694,7 +694,7 @@ private void CreateDeferredProjects(IReadOnlyDictionary<string, DeferredProjectI
var targetPathsToProjectPaths = BuildTargetPathMap(projectInfos);
var solution7 = (IVsSolution7)_vsSolution;
var analyzerAssemblyLoader = _workspaceServices.GetRequiredService<IAnalyzerService>().GetLoader();
var analyzerAssemblyLoader = WorkspaceServices.GetRequiredService<IAnalyzerService>().GetLoader();
var componentModel = _serviceProvider.GetService(typeof(SComponentModel)) as IComponentModel;
var workspaceProjectContextFactory = componentModel.GetService<IWorkspaceProjectContextFactory>();
foreach (var (projectFilename, projectInfo) in projectInfos)
......@@ -820,7 +820,7 @@ private AbstractProject GetOrCreateProjectFromArgumentsAndReferences(
return null;
}
var commandLineParser = _workspaceServices.GetLanguageServices(languageName).GetService<ICommandLineParserService>();
var commandLineParser = WorkspaceServices.GetLanguageServices(languageName).GetService<ICommandLineParserService>();
var projectDirectory = PathUtilities.GetDirectoryName(projectFilename);
var commandLineArguments = commandLineParser.Parse(
projectInfo.CommandLineArguments,
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册