From c08fd0aefeea1628fe93c818ca4dde63fd6ac2e1 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 17 Oct 2017 02:47:44 -0700 Subject: Introduce WixToolsetServiceProvider Using a service provider allows all of WixToolset.Core's internal functionality to be abstracted behind interfaces in WixToolset.Extensibility. The service provide can also control what interfaces are singletons. --- src/WixToolset.Core/CommandLine/BuildCommand.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/WixToolset.Core/CommandLine/BuildCommand.cs') diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs index b3909451..4a1fc1ed 100644 --- a/src/WixToolset.Core/CommandLine/BuildCommand.cs +++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs @@ -9,11 +9,13 @@ namespace WixToolset.Core using WixToolset.Data; using WixToolset.Data.Rows; using WixToolset.Extensibility; + using WixToolset.Extensibility.Services; internal class BuildCommand : ICommandLineCommand { - public BuildCommand(ExtensionManager extensions, IEnumerable sources, IDictionary preprocessorVariables, IEnumerable locFiles, IEnumerable libraryFiles, string outputPath, OutputType outputType, string cabCachePath, IEnumerable cultures, bool bindFiles, IEnumerable bindPaths, string intermediateFolder, string contentsFile, string outputsFile, string builtOutputsFile, string wixProjectFile) + public BuildCommand(IServiceProvider serviceProvider, IExtensionManager extensions, IEnumerable sources, IDictionary preprocessorVariables, IEnumerable locFiles, IEnumerable libraryFiles, string outputPath, OutputType outputType, string cabCachePath, IEnumerable cultures, bool bindFiles, IEnumerable bindPaths, string intermediateFolder, string contentsFile, string outputsFile, string builtOutputsFile, string wixProjectFile) { + this.ServiceProvider = serviceProvider; this.ExtensionManager = extensions; this.LocFiles = locFiles; this.LibraryFiles = libraryFiles; @@ -34,7 +36,9 @@ namespace WixToolset.Core this.WixProjectFile = wixProjectFile; } - public ExtensionManager ExtensionManager { get; } + public IServiceProvider ServiceProvider { get; } + + public IExtensionManager ExtensionManager { get; } public IEnumerable LocFiles { get; } @@ -173,7 +177,7 @@ namespace WixToolset.Core intermediateFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); } - var context = new BindContext(); + var context = this.ServiceProvider.GetService(); context.Messaging = Messaging.Instance; context.ExtensionManager = this.ExtensionManager; context.BindPaths = this.BindPaths ?? Array.Empty(); -- cgit v1.2.3-55-g6feb