提交 f2f28940 编写于 作者: D Dustin Campbell

Rename ProjectBuildManager methods and fields involved in batch building for clarity

上级 f23243fb
......@@ -44,13 +44,13 @@ internal class ProjectBuildManager
private readonly ImmutableDictionary<string, string> _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<string, string> 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<string, string> additionalGlobalP
public async Task<string> 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<string, string> additionalGlobalP
return project?.GetPropertyValue(PropertyNames.TargetPath);
}
public void Start(IDictionary<string, string> globalProperties = null)
public bool BatchBuildStarted => _batchBuildStarted;
public void StartBatchBuild(IDictionary<string, string> globalProperties = null)
{
if (_started)
if (_batchBuildStarted)
{
throw new InvalidOperationException();
}
globalProperties = globalProperties ?? ImmutableDictionary<string, string>.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<MSB.Execution.ProjectInstance> 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);
......
......@@ -130,7 +130,7 @@ public async Task<ImmutableArray<ProjectInfo>> LoadAsync(CancellationToken cance
var results = ImmutableArray.CreateBuilder<ProjectInfo>();
var processedPaths = new HashSet<string>(PathUtilities.Comparer);
_buildManager.Start(_globalProperties);
_buildManager.StartBatchBuild(_globalProperties);
try
{
foreach (var projectPath in _requestedProjectPaths)
......@@ -171,7 +171,7 @@ public async Task<ImmutableArray<ProjectInfo>> LoadAsync(CancellationToken cance
}
finally
{
_buildManager.Stop();
_buildManager.EndBatchBuild();
}
}
......
......@@ -3518,11 +3518,11 @@ public async Task TestOpenProject_CommandLineArgsHaveNoErrors()
var projectFilePath = GetSolutionFileName(@"CSharpProject\CSharpProject.csproj");
var buildManager = new ProjectBuildManager(ImmutableDictionary<string, string>.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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册