From f2f289401ce0c4c92d5ebe61b7a90ca557e32862 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Wed, 17 Oct 2018 13:46:24 -0700 Subject: [PATCH] Rename ProjectBuildManager methods and fields involved in batch building for clarity --- .../MSBuild/Build/ProjectBuildManager.cs | 46 ++++++++++--------- .../MSBuild/MSBuildProjectLoader.Worker.cs | 4 +- .../MSBuildTest/MSBuildWorkspaceTests.cs | 4 +- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/Workspaces/Core/MSBuild/MSBuild/Build/ProjectBuildManager.cs b/src/Workspaces/Core/MSBuild/MSBuild/Build/ProjectBuildManager.cs index 88a0081e060..e9203d18b8f 100644 --- a/src/Workspaces/Core/MSBuild/MSBuild/Build/ProjectBuildManager.cs +++ b/src/Workspaces/Core/MSBuild/MSBuild/Build/ProjectBuildManager.cs @@ -44,13 +44,13 @@ internal class ProjectBuildManager private readonly ImmutableDictionary _additionalGlobalProperties; - private MSB.Evaluation.ProjectCollection _projectCollection; - private MSBuildDiagnosticLogger _logger; - private bool _started; + private MSB.Evaluation.ProjectCollection _batchBuildProjectCollection; + private MSBuildDiagnosticLogger _batchBuildLogger; + private bool _batchBuildStarted; ~ProjectBuildManager() { - if (_started) + if (_batchBuildStarted) { new InvalidOperationException("ProjectBuilderManager.Stop() not called."); } @@ -104,9 +104,9 @@ public ProjectBuildManager(ImmutableDictionary additionalGlobalP public Task<(MSB.Evaluation.Project project, DiagnosticLog log)> LoadProjectAsync( string path, CancellationToken cancellationToken) { - if (_started) + if (_batchBuildStarted) { - return LoadProjectAsync(path, _projectCollection, cancellationToken); + return LoadProjectAsync(path, _batchBuildProjectCollection, cancellationToken); } else { @@ -126,7 +126,7 @@ public ProjectBuildManager(ImmutableDictionary additionalGlobalP public async Task TryGetOutputFilePathAsync( string path, CancellationToken cancellationToken) { - Debug.Assert(_started); + Debug.Assert(_batchBuildStarted); // This tries to get the project output path and retrieving the evaluated $(TargetPath) property. @@ -134,35 +134,37 @@ public ProjectBuildManager(ImmutableDictionary additionalGlobalP return project?.GetPropertyValue(PropertyNames.TargetPath); } - public void Start(IDictionary globalProperties = null) + public bool BatchBuildStarted => _batchBuildStarted; + + public void StartBatchBuild(IDictionary globalProperties = null) { - if (_started) + if (_batchBuildStarted) { throw new InvalidOperationException(); } globalProperties = globalProperties ?? ImmutableDictionary.Empty; var allProperties = s_defaultGlobalProperties.AddRange(globalProperties); - _projectCollection = new MSB.Evaluation.ProjectCollection(allProperties); + _batchBuildProjectCollection = new MSB.Evaluation.ProjectCollection(allProperties); - _logger = new MSBuildDiagnosticLogger() + _batchBuildLogger = new MSBuildDiagnosticLogger() { Verbosity = MSB.Framework.LoggerVerbosity.Normal }; - var buildParameters = new MSB.Execution.BuildParameters(_projectCollection) + var buildParameters = new MSB.Execution.BuildParameters(_batchBuildProjectCollection) { - Loggers = new MSB.Framework.ILogger[] { _logger } + Loggers = new MSB.Framework.ILogger[] { _batchBuildLogger } }; MSB.Execution.BuildManager.DefaultBuildManager.BeginBuild(buildParameters); - _started = true; + _batchBuildStarted = true; } - public void Stop() + public void EndBatchBuild() { - if (!_started) + if (!_batchBuildStarted) { throw new InvalidOperationException(); } @@ -170,16 +172,16 @@ public void Stop() MSB.Execution.BuildManager.DefaultBuildManager.EndBuild(); // unload project so collection will release global strings - _projectCollection.UnloadAllProjects(); - _projectCollection = null; - _logger = null; - _started = false; + _batchBuildProjectCollection.UnloadAllProjects(); + _batchBuildProjectCollection = null; + _batchBuildLogger = null; + _batchBuildStarted = false; } public Task BuildProjectAsync( MSB.Evaluation.Project project, DiagnosticLog log, CancellationToken cancellationToken) { - Debug.Assert(_started); + Debug.Assert(_batchBuildStarted); var targets = new[] { TargetNames.Compile, TargetNames.CoreCompile }; @@ -203,7 +205,7 @@ public void Stop() } } - _logger.SetProjectAndLog(projectInstance.FullPath, log); + _batchBuildLogger.SetProjectAndLog(projectInstance.FullPath, log); var buildRequestData = new MSB.Execution.BuildRequestData(projectInstance, targets); diff --git a/src/Workspaces/Core/MSBuild/MSBuild/MSBuildProjectLoader.Worker.cs b/src/Workspaces/Core/MSBuild/MSBuild/MSBuildProjectLoader.Worker.cs index c63401f776c..4ecbb64d3a4 100644 --- a/src/Workspaces/Core/MSBuild/MSBuild/MSBuildProjectLoader.Worker.cs +++ b/src/Workspaces/Core/MSBuild/MSBuild/MSBuildProjectLoader.Worker.cs @@ -130,7 +130,7 @@ public async Task> LoadAsync(CancellationToken cance var results = ImmutableArray.CreateBuilder(); var processedPaths = new HashSet(PathUtilities.Comparer); - _buildManager.Start(_globalProperties); + _buildManager.StartBatchBuild(_globalProperties); try { foreach (var projectPath in _requestedProjectPaths) @@ -171,7 +171,7 @@ public async Task> LoadAsync(CancellationToken cance } finally { - _buildManager.Stop(); + _buildManager.EndBatchBuild(); } } diff --git a/src/Workspaces/MSBuildTest/MSBuildWorkspaceTests.cs b/src/Workspaces/MSBuildTest/MSBuildWorkspaceTests.cs index 2e9d5a314fe..0fecbde3919 100644 --- a/src/Workspaces/MSBuildTest/MSBuildWorkspaceTests.cs +++ b/src/Workspaces/MSBuildTest/MSBuildWorkspaceTests.cs @@ -3518,11 +3518,11 @@ public async Task TestOpenProject_CommandLineArgsHaveNoErrors() var projectFilePath = GetSolutionFileName(@"CSharpProject\CSharpProject.csproj"); var buildManager = new ProjectBuildManager(ImmutableDictionary.Empty); - buildManager.Start(); + buildManager.StartBatchBuild(); var projectFile = await loader.LoadProjectFileAsync(projectFilePath, buildManager, CancellationToken.None); var projectFileInfo = (await projectFile.GetProjectFileInfosAsync(CancellationToken.None)).Single(); - buildManager.Stop(); + buildManager.EndBatchBuild(); var commandLineParser = workspace.Services .GetLanguageServices(loader.Language) -- GitLab