aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-04-02 20:45:40 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-04-02 21:34:24 +1000
commit177784c9a6d93eeb3c195e6d62b97eb4c1dde32b (patch)
tree1ad322fa26816a32279f5433ec500cbdf5934f86 /src
parent302b501f9ed2ae840ce598b30792d0fc1b538572 (diff)
downloadwix-177784c9a6d93eeb3c195e6d62b97eb4c1dde32b.tar.gz
wix-177784c9a6d93eeb3c195e6d62b97eb4c1dde32b.tar.bz2
wix-177784c9a6d93eeb3c195e6d62b97eb4c1dde32b.zip
Use IWixToolsetServiceProvider and IWixToolsetCoreServiceProvider to expose the more convenient methods from WixToolsetServiceProvider without requiring casting or extension methods.
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs2
-rw-r--r--src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs2
-rw-r--r--src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs2
-rw-r--r--src/WixToolset.Core.TestPackage/WixRunner.cs4
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs2
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs4
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs4
-rw-r--r--src/WixToolset.Core.WindowsInstaller/UnbindContext.cs10
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Unbinder.cs8
-rw-r--r--src/WixToolset.Core/BindContext.cs5
-rw-r--r--src/WixToolset.Core/Binder.cs4
-rw-r--r--src/WixToolset.Core/CommandLine/BuildCommand.cs8
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLine.cs4
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLineArguments.cs8
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLineContext.cs6
-rw-r--r--src/WixToolset.Core/CommandLine/CompileCommand.cs6
-rw-r--r--src/WixToolset.Core/CommandLine/DecompileCommand.cs4
-rw-r--r--src/WixToolset.Core/CompileContext.cs7
-rw-r--r--src/WixToolset.Core/Compiler.cs4
-rw-r--r--src/WixToolset.Core/DecompileContext.cs5
-rw-r--r--src/WixToolset.Core/Decompiler.cs4
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs2
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs6
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs4
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs6
-rw-r--r--src/WixToolset.Core/IncribeContext.cs6
-rw-r--r--src/WixToolset.Core/LayoutContext.cs7
-rw-r--r--src/WixToolset.Core/LayoutCreator.cs4
-rw-r--r--src/WixToolset.Core/Librarian.cs4
-rw-r--r--src/WixToolset.Core/LibraryContext.cs4
-rw-r--r--src/WixToolset.Core/LinkContext.cs7
-rw-r--r--src/WixToolset.Core/Linker.cs4
-rw-r--r--src/WixToolset.Core/LocalizationParser.cs2
-rw-r--r--src/WixToolset.Core/PreprocessContext.cs5
-rw-r--r--src/WixToolset.Core/Preprocessor.cs6
-rw-r--r--src/WixToolset.Core/ResolveContext.cs4
-rw-r--r--src/WixToolset.Core/Resolver.cs4
-rw-r--r--src/WixToolset.Core/VariableResolver.cs4
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProvider.cs24
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs4
40 files changed, 119 insertions, 91 deletions
diff --git a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
index 2cb5ed64..c9917073 100644
--- a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
+++ b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
@@ -44,7 +44,7 @@ namespace WixToolset.Core.Burn
44 this.BackendExtensions = backedExtensions; 44 this.BackendExtensions = backedExtensions;
45 } 45 }
46 46
47 private IServiceProvider ServiceProvider { get; } 47 private IWixToolsetServiceProvider ServiceProvider { get; }
48 48
49 private IMessaging Messaging { get; } 49 private IMessaging Messaging { get; }
50 50
diff --git a/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs b/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
index 7e65a9cf..d800a19a 100644
--- a/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
+++ b/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
@@ -23,7 +23,7 @@ namespace WixToolset.Core.Burn.Bundles
23 { 23 {
24 private const string PropertySqlFormat = "SELECT `Value` FROM `Property` WHERE `Property` = '{0}'"; 24 private const string PropertySqlFormat = "SELECT `Value` FROM `Property` WHERE `Property` = '{0}'";
25 25
26 public ProcessMsiPackageCommand(IServiceProvider serviceProvider, IEnumerable<IBurnBackendExtension> backendExtensions, IntermediateSection section, PackageFacade facade, Dictionary<string, WixBundlePayloadTuple> payloadTuples) 26 public ProcessMsiPackageCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable<IBurnBackendExtension> backendExtensions, IntermediateSection section, PackageFacade facade, Dictionary<string, WixBundlePayloadTuple> payloadTuples)
27 { 27 {
28 this.Messaging = serviceProvider.GetService<IMessaging>(); 28 this.Messaging = serviceProvider.GetService<IMessaging>();
29 this.BackendHelper = serviceProvider.GetService<IBackendHelper>(); 29 this.BackendHelper = serviceProvider.GetService<IBackendHelper>();
diff --git a/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs b/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
index 17251143..99e361aa 100644
--- a/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
+++ b/src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
@@ -19,7 +19,7 @@ namespace WixToolset.Core.Burn.Bundles
19 { 19 {
20 private static readonly Version EmptyVersion = new Version(0, 0, 0, 0); 20 private static readonly Version EmptyVersion = new Version(0, 0, 0, 0);
21 21
22 public ProcessPayloadsCommand(IServiceProvider serviceProvider, IBackendHelper backendHelper, IEnumerable<WixBundlePayloadTuple> payloads, PackagingType defaultPackaging, string layoutDirectory) 22 public ProcessPayloadsCommand(IWixToolsetServiceProvider serviceProvider, IBackendHelper backendHelper, IEnumerable<WixBundlePayloadTuple> payloads, PackagingType defaultPackaging, string layoutDirectory)
23 { 23 {
24 this.Messaging = serviceProvider.GetService<IMessaging>(); 24 this.Messaging = serviceProvider.GetService<IMessaging>();
25 25
diff --git a/src/WixToolset.Core.TestPackage/WixRunner.cs b/src/WixToolset.Core.TestPackage/WixRunner.cs
index d2202328..39c4d2f7 100644
--- a/src/WixToolset.Core.TestPackage/WixRunner.cs
+++ b/src/WixToolset.Core.TestPackage/WixRunner.cs
@@ -23,7 +23,7 @@ namespace WixToolset.Core.TestPackage
23 return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() }; 23 return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() };
24 } 24 }
25 25
26 public static int Execute(string[] args, IServiceProvider serviceProvider, out List<Message> messages) 26 public static int Execute(string[] args, IWixToolsetServiceProvider serviceProvider, out List<Message> messages)
27 { 27 {
28 var listener = new TestMessageListener(); 28 var listener = new TestMessageListener();
29 29
@@ -42,7 +42,7 @@ namespace WixToolset.Core.TestPackage
42 return command?.Execute() ?? 1; 42 return command?.Execute() ?? 1;
43 } 43 }
44 44
45 private static IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions) 45 private static IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, string[] extensions)
46 { 46 {
47 var extensionManager = serviceProvider.GetService<IExtensionManager>(); 47 var extensionManager = serviceProvider.GetService<IExtensionManager>();
48 48
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
index 6878aed5..2ced48ea 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs
@@ -54,7 +54,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
54 this.BackendExtensions = backendExtension; 54 this.BackendExtensions = backendExtension;
55 } 55 }
56 56
57 public IServiceProvider ServiceProvider { get; } 57 public IWixToolsetServiceProvider ServiceProvider { get; }
58 58
59 private IMessaging Messaging { get; } 59 private IMessaging Messaging { get; }
60 60
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs
index 79b1c619..189c5f01 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs
@@ -15,7 +15,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
15 15
16 public class CabinetResolver 16 public class CabinetResolver
17 { 17 {
18 public CabinetResolver(IServiceProvider serviceProvider, string cabCachePath, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions) 18 public CabinetResolver(IWixToolsetServiceProvider serviceProvider, string cabCachePath, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions)
19 { 19 {
20 this.ServiceProvider = serviceProvider; 20 this.ServiceProvider = serviceProvider;
21 21
@@ -24,7 +24,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
24 this.BackendExtensions = backendExtensions; 24 this.BackendExtensions = backendExtensions;
25 } 25 }
26 26
27 private IServiceProvider ServiceProvider { get; } 27 private IWixToolsetServiceProvider ServiceProvider { get; }
28 28
29 private string CabCachePath { get; } 29 private string CabCachePath { get; }
30 30
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
index 50dc7e3f..2536eeac 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
@@ -33,7 +33,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
33 33
34 private Dictionary<string, string> lastCabinetAddedToMediaTable; // Key is First Cabinet Name, Value is Last Cabinet Added in the Split Sequence 34 private Dictionary<string, string> lastCabinetAddedToMediaTable; // Key is First Cabinet Name, Value is Last Cabinet Added in the Split Sequence
35 35
36 public CreateCabinetsCommand(IServiceProvider serviceProvider, IBackendHelper backendHelper) 36 public CreateCabinetsCommand(IWixToolsetServiceProvider serviceProvider, IBackendHelper backendHelper)
37 { 37 {
38 this.fileTransfers = new List<IFileTransfer>(); 38 this.fileTransfers = new List<IFileTransfer>();
39 39
@@ -46,7 +46,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
46 this.BackendHelper = backendHelper; 46 this.BackendHelper = backendHelper;
47 } 47 }
48 48
49 public IServiceProvider ServiceProvider { get; } 49 public IWixToolsetServiceProvider ServiceProvider { get; }
50 50
51 public IBackendHelper BackendHelper { get; } 51 public IBackendHelper BackendHelper { get; }
52 52
diff --git a/src/WixToolset.Core.WindowsInstaller/UnbindContext.cs b/src/WixToolset.Core.WindowsInstaller/UnbindContext.cs
index 2bc4516d..f60a0e1a 100644
--- a/src/WixToolset.Core.WindowsInstaller/UnbindContext.cs
+++ b/src/WixToolset.Core.WindowsInstaller/UnbindContext.cs
@@ -1,13 +1,19 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System; 5 using System;
6 using WixToolset.Extensibility.Data; 6 using WixToolset.Extensibility.Data;
7 using WixToolset.Extensibility.Services;
7 8
8 internal class UnbindContext : IUnbindContext 9 internal class UnbindContext : IUnbindContext
9 { 10 {
10 public IServiceProvider ServiceProvider { get; } 11 internal UnbindContext(IWixToolsetServiceProvider serviceProvider)
12 {
13 this.ServiceProvider = serviceProvider;
14 }
15
16 public IWixToolsetServiceProvider ServiceProvider { get; }
11 17
12 public string ExportBasePath { get; set; } 18 public string ExportBasePath { get; set; }
13 19
diff --git a/src/WixToolset.Core.WindowsInstaller/Unbinder.cs b/src/WixToolset.Core.WindowsInstaller/Unbinder.cs
index e8c109d2..2ca0b557 100644
--- a/src/WixToolset.Core.WindowsInstaller/Unbinder.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Unbinder.cs
@@ -2,11 +2,11 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System.Collections; 5 using System.Collections.Generic;
6 using System.IO; 6 using System.IO;
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using System.Collections.Generic; 9 using WixToolset.Extensibility.Services;
10 10
11 /// <summary> 11 /// <summary>
12 /// Unbinder core of the WiX toolset. 12 /// Unbinder core of the WiX toolset.
@@ -21,6 +21,8 @@ namespace WixToolset.Core
21 /// <value>Set to true if the input msi is part of an admin image.</value> 21 /// <value>Set to true if the input msi is part of an admin image.</value>
22 public bool IsAdminImage { get; set; } 22 public bool IsAdminImage { get; set; }
23 23
24 public IWixToolsetServiceProvider ServiceProvider { get; }
25
24 /// <summary> 26 /// <summary>
25 /// Gets or sets the option to suppress demodularizing values. 27 /// Gets or sets the option to suppress demodularizing values.
26 /// </summary> 28 /// </summary>
@@ -64,7 +66,7 @@ namespace WixToolset.Core
64 // if we don't have the temporary files object yet, get one 66 // if we don't have the temporary files object yet, get one
65 Directory.CreateDirectory(this.TempFilesLocation); // ensure the base path is there 67 Directory.CreateDirectory(this.TempFilesLocation); // ensure the base path is there
66 68
67 var context = new UnbindContext(); 69 var context = new UnbindContext(this.ServiceProvider);
68 context.InputFilePath = file; 70 context.InputFilePath = file;
69 context.ExportBasePath = exportBasePath; 71 context.ExportBasePath = exportBasePath;
70 context.IntermediateFolder = this.TempFilesLocation; 72 context.IntermediateFolder = this.TempFilesLocation;
diff --git a/src/WixToolset.Core/BindContext.cs b/src/WixToolset.Core/BindContext.cs
index 67ce744a..1c456a9f 100644
--- a/src/WixToolset.Core/BindContext.cs
+++ b/src/WixToolset.Core/BindContext.cs
@@ -7,15 +7,16 @@ namespace WixToolset.Core
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services;
10 11
11 internal class BindContext : IBindContext 12 internal class BindContext : IBindContext
12 { 13 {
13 internal BindContext(IServiceProvider serviceProvider) 14 internal BindContext(IWixToolsetServiceProvider serviceProvider)
14 { 15 {
15 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
16 } 17 }
17 18
18 public IServiceProvider ServiceProvider { get; } 19 public IWixToolsetServiceProvider ServiceProvider { get; }
19 20
20 public IEnumerable<BindPath> BindPaths { get; set; } 21 public IEnumerable<BindPath> BindPaths { get; set; }
21 22
diff --git a/src/WixToolset.Core/Binder.cs b/src/WixToolset.Core/Binder.cs
index fcf5a669..e6dd538b 100644
--- a/src/WixToolset.Core/Binder.cs
+++ b/src/WixToolset.Core/Binder.cs
@@ -17,12 +17,12 @@ namespace WixToolset.Core
17 /// </summary> 17 /// </summary>
18 internal class Binder : IBinder 18 internal class Binder : IBinder
19 { 19 {
20 internal Binder(IServiceProvider serviceProvider) 20 internal Binder(IWixToolsetServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 } 23 }
24 24
25 public IServiceProvider ServiceProvider { get; } 25 public IWixToolsetServiceProvider ServiceProvider { get; }
26 26
27 public IBindResult Bind(IBindContext context) 27 public IBindResult Bind(IBindContext context)
28 { 28 {
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs
index 718b3015..a59637fe 100644
--- a/src/WixToolset.Core/CommandLine/BuildCommand.cs
+++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs
@@ -16,7 +16,7 @@ namespace WixToolset.Core.CommandLine
16 { 16 {
17 private readonly CommandLine commandLine; 17 private readonly CommandLine commandLine;
18 18
19 public BuildCommand(IServiceProvider serviceProvider) 19 public BuildCommand(IWixToolsetServiceProvider serviceProvider)
20 { 20 {
21 this.ServiceProvider = serviceProvider; 21 this.ServiceProvider = serviceProvider;
22 this.Messaging = serviceProvider.GetService<IMessaging>(); 22 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -28,7 +28,7 @@ namespace WixToolset.Core.CommandLine
28 28
29 public bool StopParsing => this.commandLine.ShowHelp; 29 public bool StopParsing => this.commandLine.ShowHelp;
30 30
31 private IServiceProvider ServiceProvider { get; } 31 private IWixToolsetServiceProvider ServiceProvider { get; }
32 32
33 private IMessaging Messaging { get; } 33 private IMessaging Messaging { get; }
34 34
@@ -462,13 +462,13 @@ namespace WixToolset.Core.CommandLine
462 462
463 public string BuiltOutputsFile { get; private set; } 463 public string BuiltOutputsFile { get; private set; }
464 464
465 public CommandLine(IServiceProvider serviceProvider, IMessaging messaging) 465 public CommandLine(IWixToolsetServiceProvider serviceProvider, IMessaging messaging)
466 { 466 {
467 this.ServiceProvider = serviceProvider; 467 this.ServiceProvider = serviceProvider;
468 this.Messaging = messaging; 468 this.Messaging = messaging;
469 } 469 }
470 470
471 private IServiceProvider ServiceProvider { get; } 471 private IWixToolsetServiceProvider ServiceProvider { get; }
472 472
473 private IMessaging Messaging { get; } 473 private IMessaging Messaging { get; }
474 474
diff --git a/src/WixToolset.Core/CommandLine/CommandLine.cs b/src/WixToolset.Core/CommandLine/CommandLine.cs
index 8e359e14..683d1f5a 100644
--- a/src/WixToolset.Core/CommandLine/CommandLine.cs
+++ b/src/WixToolset.Core/CommandLine/CommandLine.cs
@@ -23,14 +23,14 @@ namespace WixToolset.Core.CommandLine
23 { 23 {
24 private static readonly char[] BindPathSplit = { '=' }; 24 private static readonly char[] BindPathSplit = { '=' };
25 25
26 public CommandLine(IServiceProvider serviceProvider) 26 public CommandLine(IWixToolsetServiceProvider serviceProvider)
27 { 27 {
28 this.ServiceProvider = serviceProvider; 28 this.ServiceProvider = serviceProvider;
29 29
30 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 30 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
31 } 31 }
32 32
33 private IServiceProvider ServiceProvider { get; } 33 private IWixToolsetServiceProvider ServiceProvider { get; }
34 34
35 private IMessaging Messaging { get; set; } 35 private IMessaging Messaging { get; set; }
36 36
diff --git a/src/WixToolset.Core/CommandLine/CommandLineArguments.cs b/src/WixToolset.Core/CommandLine/CommandLineArguments.cs
index 5fa547b4..3f412611 100644
--- a/src/WixToolset.Core/CommandLine/CommandLineArguments.cs
+++ b/src/WixToolset.Core/CommandLine/CommandLineArguments.cs
@@ -1,4 +1,4 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Core.CommandLine 3namespace WixToolset.Core.CommandLine
4{ 4{
@@ -20,9 +20,9 @@ namespace WixToolset.Core.CommandLine
20 20
21 public string ErrorArgument { get; set; } 21 public string ErrorArgument { get; set; }
22 22
23 private IServiceProvider ServiceProvider { get; } 23 private IWixToolsetServiceProvider ServiceProvider { get; }
24 24
25 public CommandLineArguments(IServiceProvider serviceProvider) 25 public CommandLineArguments(IWixToolsetServiceProvider serviceProvider)
26 { 26 {
27 this.ServiceProvider = serviceProvider; 27 this.ServiceProvider = serviceProvider;
28 } 28 }
@@ -43,7 +43,7 @@ namespace WixToolset.Core.CommandLine
43 43
44 public ICommandLineParser Parse() 44 public ICommandLineParser Parse()
45 { 45 {
46 var messaging = (IMessaging)this.ServiceProvider.GetService(typeof(IMessaging)); 46 var messaging = this.ServiceProvider.GetService<IMessaging>();
47 47
48 return new CommandLineParser(messaging, this.Arguments, this.ErrorArgument); 48 return new CommandLineParser(messaging, this.Arguments, this.ErrorArgument);
49 } 49 }
diff --git a/src/WixToolset.Core/CommandLine/CommandLineContext.cs b/src/WixToolset.Core/CommandLine/CommandLineContext.cs
index ea0cf3d4..6bf05590 100644
--- a/src/WixToolset.Core/CommandLine/CommandLineContext.cs
+++ b/src/WixToolset.Core/CommandLine/CommandLineContext.cs
@@ -1,4 +1,4 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Core.CommandLine 3namespace WixToolset.Core.CommandLine
4{ 4{
@@ -8,12 +8,12 @@ namespace WixToolset.Core.CommandLine
8 8
9 internal class CommandLineContext : ICommandLineContext 9 internal class CommandLineContext : ICommandLineContext
10 { 10 {
11 public CommandLineContext(IServiceProvider serviceProvider) 11 public CommandLineContext(IWixToolsetServiceProvider serviceProvider)
12 { 12 {
13 this.ServiceProvider = serviceProvider; 13 this.ServiceProvider = serviceProvider;
14 } 14 }
15 15
16 public IServiceProvider ServiceProvider { get; } 16 public IWixToolsetServiceProvider ServiceProvider { get; }
17 17
18 public IExtensionManager ExtensionManager { get; set; } 18 public IExtensionManager ExtensionManager { get; set; }
19 19
diff --git a/src/WixToolset.Core/CommandLine/CompileCommand.cs b/src/WixToolset.Core/CommandLine/CompileCommand.cs
index 0a354a8f..67756947 100644
--- a/src/WixToolset.Core/CommandLine/CompileCommand.cs
+++ b/src/WixToolset.Core/CommandLine/CompileCommand.cs
@@ -12,14 +12,14 @@ namespace WixToolset.Core.CommandLine
12 12
13 internal class CompileCommand : ICommandLineCommand 13 internal class CompileCommand : ICommandLineCommand
14 { 14 {
15 public CompileCommand(IServiceProvider serviceProvider) 15 public CompileCommand(IWixToolsetServiceProvider serviceProvider)
16 { 16 {
17 this.ServiceProvider = serviceProvider; 17 this.ServiceProvider = serviceProvider;
18 this.Messaging = serviceProvider.GetService<IMessaging>(); 18 this.Messaging = serviceProvider.GetService<IMessaging>();
19 this.ExtensionManager = serviceProvider.GetService<IExtensionManager>(); 19 this.ExtensionManager = serviceProvider.GetService<IExtensionManager>();
20 } 20 }
21 21
22 public CompileCommand(IServiceProvider serviceProvider, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables, Platform platform) 22 public CompileCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable<SourceFile> sources, IDictionary<string, string> preprocessorVariables, Platform platform)
23 { 23 {
24 this.ServiceProvider = serviceProvider; 24 this.ServiceProvider = serviceProvider;
25 this.Messaging = serviceProvider.GetService<IMessaging>(); 25 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -29,7 +29,7 @@ namespace WixToolset.Core.CommandLine
29 this.Platform = platform; 29 this.Platform = platform;
30 } 30 }
31 31
32 private IServiceProvider ServiceProvider { get; } 32 private IWixToolsetServiceProvider ServiceProvider { get; }
33 33
34 public IMessaging Messaging { get; } 34 public IMessaging Messaging { get; }
35 35
diff --git a/src/WixToolset.Core/CommandLine/DecompileCommand.cs b/src/WixToolset.Core/CommandLine/DecompileCommand.cs
index fbba3d9f..0e21a4f4 100644
--- a/src/WixToolset.Core/CommandLine/DecompileCommand.cs
+++ b/src/WixToolset.Core/CommandLine/DecompileCommand.cs
@@ -14,7 +14,7 @@ namespace WixToolset.Core.CommandLine
14 { 14 {
15 private readonly CommandLine commandLine; 15 private readonly CommandLine commandLine;
16 16
17 public DecompileCommand(IServiceProvider serviceProvider) 17 public DecompileCommand(IWixToolsetServiceProvider serviceProvider)
18 { 18 {
19 this.ServiceProvider = serviceProvider; 19 this.ServiceProvider = serviceProvider;
20 this.Messaging = serviceProvider.GetService<IMessaging>(); 20 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -25,7 +25,7 @@ namespace WixToolset.Core.CommandLine
25 25
26 public bool StopParsing => this.commandLine.ShowHelp; 26 public bool StopParsing => this.commandLine.ShowHelp;
27 27
28 private IServiceProvider ServiceProvider { get; } 28 private IWixToolsetServiceProvider ServiceProvider { get; }
29 29
30 public IMessaging Messaging { get; } 30 public IMessaging Messaging { get; }
31 31
diff --git a/src/WixToolset.Core/CompileContext.cs b/src/WixToolset.Core/CompileContext.cs
index c7a0905e..f92a131d 100644
--- a/src/WixToolset.Core/CompileContext.cs
+++ b/src/WixToolset.Core/CompileContext.cs
@@ -1,4 +1,4 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
@@ -8,15 +8,16 @@ namespace WixToolset.Core
8 using WixToolset.Data; 8 using WixToolset.Data;
9 using WixToolset.Extensibility; 9 using WixToolset.Extensibility;
10 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
11 using WixToolset.Extensibility.Services;
11 12
12 internal class CompileContext : ICompileContext 13 internal class CompileContext : ICompileContext
13 { 14 {
14 internal CompileContext(IServiceProvider serviceProvider) 15 internal CompileContext(IWixToolsetServiceProvider serviceProvider)
15 { 16 {
16 this.ServiceProvider = serviceProvider; 17 this.ServiceProvider = serviceProvider;
17 } 18 }
18 19
19 public IServiceProvider ServiceProvider { get; } 20 public IWixToolsetServiceProvider ServiceProvider { get; }
20 21
21 public string CompilationId { get; set; } 22 public string CompilationId { get; set; }
22 23
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs
index 7638c11e..0eb0b1d3 100644
--- a/src/WixToolset.Core/Compiler.cs
+++ b/src/WixToolset.Core/Compiler.cs
@@ -56,14 +56,14 @@ namespace WixToolset.Core
56 Icon, 56 Icon,
57 } 57 }
58 58
59 internal Compiler(IServiceProvider serviceProvider) 59 internal Compiler(IWixToolsetServiceProvider serviceProvider)
60 { 60 {
61 this.ServiceProvider = serviceProvider; 61 this.ServiceProvider = serviceProvider;
62 62
63 this.Messaging = serviceProvider.GetService<IMessaging>(); 63 this.Messaging = serviceProvider.GetService<IMessaging>();
64 } 64 }
65 65
66 private IServiceProvider ServiceProvider { get; } 66 private IWixToolsetServiceProvider ServiceProvider { get; }
67 67
68 public IMessaging Messaging { get; } 68 public IMessaging Messaging { get; }
69 69
diff --git a/src/WixToolset.Core/DecompileContext.cs b/src/WixToolset.Core/DecompileContext.cs
index c6902117..fb59cd08 100644
--- a/src/WixToolset.Core/DecompileContext.cs
+++ b/src/WixToolset.Core/DecompileContext.cs
@@ -7,15 +7,16 @@ namespace WixToolset.Core
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services;
10 11
11 internal class DecompileContext : IDecompileContext 12 internal class DecompileContext : IDecompileContext
12 { 13 {
13 internal DecompileContext(IServiceProvider serviceProvider) 14 internal DecompileContext(IWixToolsetServiceProvider serviceProvider)
14 { 15 {
15 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
16 } 17 }
17 18
18 public IServiceProvider ServiceProvider { get; } 19 public IWixToolsetServiceProvider ServiceProvider { get; }
19 20
20 public string DecompilePath { get; set; } 21 public string DecompilePath { get; set; }
21 22
diff --git a/src/WixToolset.Core/Decompiler.cs b/src/WixToolset.Core/Decompiler.cs
index 859f582b..e146362f 100644
--- a/src/WixToolset.Core/Decompiler.cs
+++ b/src/WixToolset.Core/Decompiler.cs
@@ -12,12 +12,12 @@ namespace WixToolset.Core
12 /// </summary> 12 /// </summary>
13 internal class Decompiler : IDecompiler 13 internal class Decompiler : IDecompiler
14 { 14 {
15 internal Decompiler(IServiceProvider serviceProvider) 15 internal Decompiler(IWixToolsetServiceProvider serviceProvider)
16 { 16 {
17 this.ServiceProvider = serviceProvider; 17 this.ServiceProvider = serviceProvider;
18 } 18 }
19 19
20 public IServiceProvider ServiceProvider { get; } 20 public IWixToolsetServiceProvider ServiceProvider { get; }
21 21
22 public IDecompileResult Decompile(IDecompileContext context) 22 public IDecompileResult Decompile(IDecompileContext context)
23 { 23 {
diff --git a/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs b/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs
index 0bdecf7a..e4b6e959 100644
--- a/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/BackendHelper.cs
@@ -12,7 +12,7 @@ namespace WixToolset.Core.ExtensibilityServices
12 { 12 {
13 private static readonly string[] ReservedFileNames = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" }; 13 private static readonly string[] ReservedFileNames = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" };
14 14
15 public BackendHelper(IServiceProvider serviceProvider) 15 public BackendHelper(IWixToolsetServiceProvider serviceProvider)
16 { 16 {
17 this.Messaging = serviceProvider.GetService<IMessaging>(); 17 this.Messaging = serviceProvider.GetService<IMessaging>();
18 } 18 }
diff --git a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
index ed529dbb..f7c5e309 100644
--- a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
@@ -33,14 +33,14 @@ namespace WixToolset.Core.ExtensibilityServices
33 33
34 private static readonly Regex PutGuidHere = new Regex(@"PUT\-GUID\-(?:\d+\-)?HERE", RegexOptions.Singleline); 34 private static readonly Regex PutGuidHere = new Regex(@"PUT\-GUID\-(?:\d+\-)?HERE", RegexOptions.Singleline);
35 35
36 public ParseHelper(IServiceProvider serviceProvider) 36 public ParseHelper(IWixToolsetServiceProvider serviceProvider)
37 { 37 {
38 this.ServiceProvider = serviceProvider; 38 this.ServiceProvider = serviceProvider;
39 39
40 this.Messaging = serviceProvider.GetService<IMessaging>(); 40 this.Messaging = serviceProvider.GetService<IMessaging>();
41 } 41 }
42 42
43 private IServiceProvider ServiceProvider { get; } 43 private IWixToolsetServiceProvider ServiceProvider { get; }
44 44
45 private IMessaging Messaging { get; } 45 private IMessaging Messaging { get; }
46 46
@@ -976,7 +976,7 @@ namespace WixToolset.Core.ExtensibilityServices
976 976
977 private void CreateTupleDefinitionCreator() 977 private void CreateTupleDefinitionCreator()
978 { 978 {
979 this.Creator = (ITupleDefinitionCreator)this.ServiceProvider.GetService(typeof(ITupleDefinitionCreator)); 979 this.Creator = this.ServiceProvider.GetService<ITupleDefinitionCreator>();
980 } 980 }
981 981
982 private static IntermediateTuple CreateTuple(IntermediateSection section, SourceLineNumber sourceLineNumbers, IntermediateTupleDefinition tupleDefinition, Identifier identifier) 982 private static IntermediateTuple CreateTuple(IntermediateSection section, SourceLineNumber sourceLineNumbers, IntermediateTupleDefinition tupleDefinition, Identifier identifier)
diff --git a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
index 215c7bc4..bdf11879 100644
--- a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
@@ -17,14 +17,14 @@ namespace WixToolset.Core.ExtensibilityServices
17 private static readonly char[] VariableSplitter = new char[] { '.' }; 17 private static readonly char[] VariableSplitter = new char[] { '.' };
18 private static readonly char[] ArgumentSplitter = new char[] { ',' }; 18 private static readonly char[] ArgumentSplitter = new char[] { ',' };
19 19
20 public PreprocessHelper(IServiceProvider serviceProvider) 20 public PreprocessHelper(IWixToolsetServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 23
24 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 24 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
25 } 25 }
26 26
27 private IServiceProvider ServiceProvider { get; } 27 private IWixToolsetServiceProvider ServiceProvider { get; }
28 28
29 private IMessaging Messaging { get; } 29 private IMessaging Messaging { get; }
30 30
diff --git a/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs b/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs
index aeeeebe7..7ef72afc 100644
--- a/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs
@@ -10,12 +10,12 @@ namespace WixToolset.Core.ExtensibilityServices
10 10
11 internal class TupleDefinitionCreator : ITupleDefinitionCreator 11 internal class TupleDefinitionCreator : ITupleDefinitionCreator
12 { 12 {
13 public TupleDefinitionCreator(IServiceProvider serviceProvider) 13 public TupleDefinitionCreator(IWixToolsetServiceProvider serviceProvider)
14 { 14 {
15 this.ServiceProvider = serviceProvider; 15 this.ServiceProvider = serviceProvider;
16 } 16 }
17 17
18 private IServiceProvider ServiceProvider { get; } 18 private IWixToolsetServiceProvider ServiceProvider { get; }
19 19
20 private IEnumerable<IExtensionData> ExtensionData { get; set; } 20 private IEnumerable<IExtensionData> ExtensionData { get; set; }
21 21
@@ -62,7 +62,7 @@ namespace WixToolset.Core.ExtensibilityServices
62 62
63 private void LoadExtensionData() 63 private void LoadExtensionData()
64 { 64 {
65 var extensionManager = (IExtensionManager)this.ServiceProvider.GetService(typeof(IExtensionManager)); 65 var extensionManager = this.ServiceProvider.GetService<IExtensionManager>();
66 66
67 this.ExtensionData = extensionManager.GetServices<IExtensionData>(); 67 this.ExtensionData = extensionManager.GetServices<IExtensionData>();
68 } 68 }
diff --git a/src/WixToolset.Core/IncribeContext.cs b/src/WixToolset.Core/IncribeContext.cs
index 9a002d68..8db4daef 100644
--- a/src/WixToolset.Core/IncribeContext.cs
+++ b/src/WixToolset.Core/IncribeContext.cs
@@ -1,4 +1,4 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
@@ -8,12 +8,12 @@ namespace WixToolset.Core
8 8
9 internal class InscribeContext : IInscribeContext 9 internal class InscribeContext : IInscribeContext
10 { 10 {
11 public InscribeContext(IServiceProvider serviceProvider) 11 public InscribeContext(IWixToolsetServiceProvider serviceProvider)
12 { 12 {
13 this.ServiceProvider = serviceProvider; 13 this.ServiceProvider = serviceProvider;
14 } 14 }
15 15
16 public IServiceProvider ServiceProvider { get; } 16 public IWixToolsetServiceProvider ServiceProvider { get; }
17 17
18 public string IntermediateFolder { get; set; } 18 public string IntermediateFolder { get; set; }
19 19
diff --git a/src/WixToolset.Core/LayoutContext.cs b/src/WixToolset.Core/LayoutContext.cs
index b8a8635d..385aa610 100644
--- a/src/WixToolset.Core/LayoutContext.cs
+++ b/src/WixToolset.Core/LayoutContext.cs
@@ -1,4 +1,4 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
@@ -6,15 +6,16 @@ namespace WixToolset.Core
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using WixToolset.Extensibility; 7 using WixToolset.Extensibility;
8 using WixToolset.Extensibility.Data; 8 using WixToolset.Extensibility.Data;
9 using WixToolset.Extensibility.Services;
9 10
10 internal class LayoutContext : ILayoutContext 11 internal class LayoutContext : ILayoutContext
11 { 12 {
12 internal LayoutContext(IServiceProvider serviceProvider) 13 internal LayoutContext(IWixToolsetServiceProvider serviceProvider)
13 { 14 {
14 this.ServiceProvider = serviceProvider; 15 this.ServiceProvider = serviceProvider;
15 } 16 }
16 17
17 public IServiceProvider ServiceProvider { get; } 18 public IWixToolsetServiceProvider ServiceProvider { get; }
18 19
19 public IEnumerable<ILayoutExtension> Extensions { get; set; } 20 public IEnumerable<ILayoutExtension> Extensions { get; set; }
20 21
diff --git a/src/WixToolset.Core/LayoutCreator.cs b/src/WixToolset.Core/LayoutCreator.cs
index 684465d2..16fdd70f 100644
--- a/src/WixToolset.Core/LayoutCreator.cs
+++ b/src/WixToolset.Core/LayoutCreator.cs
@@ -16,14 +16,14 @@ namespace WixToolset.Core
16 /// </summary> 16 /// </summary>
17 internal class LayoutCreator : ILayoutCreator 17 internal class LayoutCreator : ILayoutCreator
18 { 18 {
19 internal LayoutCreator(IServiceProvider serviceProvider) 19 internal LayoutCreator(IWixToolsetServiceProvider serviceProvider)
20 { 20 {
21 this.ServiceProvider = serviceProvider; 21 this.ServiceProvider = serviceProvider;
22 22
23 this.Messaging = serviceProvider.GetService<IMessaging>(); 23 this.Messaging = serviceProvider.GetService<IMessaging>();
24 } 24 }
25 25
26 private IServiceProvider ServiceProvider { get; } 26 private IWixToolsetServiceProvider ServiceProvider { get; }
27 27
28 private IMessaging Messaging { get; } 28 private IMessaging Messaging { get; }
29 29
diff --git a/src/WixToolset.Core/Librarian.cs b/src/WixToolset.Core/Librarian.cs
index d862c326..0c519b88 100644
--- a/src/WixToolset.Core/Librarian.cs
+++ b/src/WixToolset.Core/Librarian.cs
@@ -16,14 +16,14 @@ namespace WixToolset.Core
16 /// </summary> 16 /// </summary>
17 internal class Librarian : ILibrarian 17 internal class Librarian : ILibrarian
18 { 18 {
19 internal Librarian(IServiceProvider serviceProvider) 19 internal Librarian(IWixToolsetServiceProvider serviceProvider)
20 { 20 {
21 this.ServiceProvider = serviceProvider; 21 this.ServiceProvider = serviceProvider;
22 22
23 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 23 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
24 } 24 }
25 25
26 private IServiceProvider ServiceProvider { get; } 26 private IWixToolsetServiceProvider ServiceProvider { get; }
27 27
28 private IMessaging Messaging { get; } 28 private IMessaging Messaging { get; }
29 29
diff --git a/src/WixToolset.Core/LibraryContext.cs b/src/WixToolset.Core/LibraryContext.cs
index 5dd17dc8..4df19702 100644
--- a/src/WixToolset.Core/LibraryContext.cs
+++ b/src/WixToolset.Core/LibraryContext.cs
@@ -11,12 +11,12 @@ namespace WixToolset.Core
11 11
12 internal class LibraryContext : ILibraryContext 12 internal class LibraryContext : ILibraryContext
13 { 13 {
14 internal LibraryContext(IServiceProvider serviceProvider) 14 internal LibraryContext(IWixToolsetServiceProvider serviceProvider)
15 { 15 {
16 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
17 } 17 }
18 18
19 public IServiceProvider ServiceProvider { get; } 19 public IWixToolsetServiceProvider ServiceProvider { get; }
20 20
21 public IMessaging Messaging { get; set; } 21 public IMessaging Messaging { get; set; }
22 22
diff --git a/src/WixToolset.Core/LinkContext.cs b/src/WixToolset.Core/LinkContext.cs
index f45a3411..64dd2320 100644
--- a/src/WixToolset.Core/LinkContext.cs
+++ b/src/WixToolset.Core/LinkContext.cs
@@ -1,4 +1,4 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
@@ -7,15 +7,16 @@ namespace WixToolset.Core
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services;
10 11
11 internal class LinkContext : ILinkContext 12 internal class LinkContext : ILinkContext
12 { 13 {
13 internal LinkContext(IServiceProvider serviceProvider) 14 internal LinkContext(IWixToolsetServiceProvider serviceProvider)
14 { 15 {
15 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
16 } 17 }
17 18
18 public IServiceProvider ServiceProvider { get; } 19 public IWixToolsetServiceProvider ServiceProvider { get; }
19 20
20 public IEnumerable<ILinkerExtension> Extensions { get; set; } 21 public IEnumerable<ILinkerExtension> Extensions { get; set; }
21 22
diff --git a/src/WixToolset.Core/Linker.cs b/src/WixToolset.Core/Linker.cs
index f05aabd1..bc4f5774 100644
--- a/src/WixToolset.Core/Linker.cs
+++ b/src/WixToolset.Core/Linker.cs
@@ -27,14 +27,14 @@ namespace WixToolset.Core
27 /// <summary> 27 /// <summary>
28 /// Creates a linker. 28 /// Creates a linker.
29 /// </summary> 29 /// </summary>
30 internal Linker(IServiceProvider serviceProvider) 30 internal Linker(IWixToolsetServiceProvider serviceProvider)
31 { 31 {
32 this.ServiceProvider = serviceProvider; 32 this.ServiceProvider = serviceProvider;
33 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 33 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
34 this.sectionIdOnRows = true; // TODO: what is the correct value for this? 34 this.sectionIdOnRows = true; // TODO: what is the correct value for this?
35 } 35 }
36 36
37 private IServiceProvider ServiceProvider { get; } 37 private IWixToolsetServiceProvider ServiceProvider { get; }
38 38
39 private IMessaging Messaging { get; } 39 private IMessaging Messaging { get; }
40 40
diff --git a/src/WixToolset.Core/LocalizationParser.cs b/src/WixToolset.Core/LocalizationParser.cs
index a3272fc8..3b66b707 100644
--- a/src/WixToolset.Core/LocalizationParser.cs
+++ b/src/WixToolset.Core/LocalizationParser.cs
@@ -15,7 +15,7 @@ namespace WixToolset.Core
15 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl"; 15 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl";
16 private const string XmlElementName = "WixLocalization"; 16 private const string XmlElementName = "WixLocalization";
17 17
18 internal LocalizationParser(IServiceProvider serviceProvider) 18 internal LocalizationParser(IWixToolsetServiceProvider serviceProvider)
19 { 19 {
20 this.Messaging = serviceProvider.GetService<IMessaging>(); 20 this.Messaging = serviceProvider.GetService<IMessaging>();
21 } 21 }
diff --git a/src/WixToolset.Core/PreprocessContext.cs b/src/WixToolset.Core/PreprocessContext.cs
index 749bf213..15529d24 100644
--- a/src/WixToolset.Core/PreprocessContext.cs
+++ b/src/WixToolset.Core/PreprocessContext.cs
@@ -7,15 +7,16 @@ namespace WixToolset.Core
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services;
10 11
11 internal class PreprocessContext : IPreprocessContext 12 internal class PreprocessContext : IPreprocessContext
12 { 13 {
13 internal PreprocessContext(IServiceProvider serviceProvider) 14 internal PreprocessContext(IWixToolsetServiceProvider serviceProvider)
14 { 15 {
15 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
16 } 17 }
17 18
18 public IServiceProvider ServiceProvider { get; } 19 public IWixToolsetServiceProvider ServiceProvider { get; }
19 20
20 public IEnumerable<IPreprocessorExtension> Extensions { get; set; } 21 public IEnumerable<IPreprocessorExtension> Extensions { get; set; }
21 22
diff --git a/src/WixToolset.Core/Preprocessor.cs b/src/WixToolset.Core/Preprocessor.cs
index d897446c..c6cd3801 100644
--- a/src/WixToolset.Core/Preprocessor.cs
+++ b/src/WixToolset.Core/Preprocessor.cs
@@ -37,14 +37,14 @@ namespace WixToolset.Core
37 XmlResolver = null, 37 XmlResolver = null,
38 }; 38 };
39 39
40 internal Preprocessor(IServiceProvider serviceProvider) 40 internal Preprocessor(IWixToolsetServiceProvider serviceProvider)
41 { 41 {
42 this.ServiceProvider = serviceProvider; 42 this.ServiceProvider = serviceProvider;
43 43
44 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 44 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
45 } 45 }
46 46
47 private IServiceProvider ServiceProvider { get; } 47 private IWixToolsetServiceProvider ServiceProvider { get; }
48 48
49 private IMessaging Messaging { get; } 49 private IMessaging Messaging { get; }
50 50
@@ -1469,7 +1469,7 @@ namespace WixToolset.Core
1469 1469
1470 private class ProcessingState 1470 private class ProcessingState
1471 { 1471 {
1472 public ProcessingState(IServiceProvider serviceProvider, IPreprocessContext context) 1472 public ProcessingState(IWixToolsetServiceProvider serviceProvider, IPreprocessContext context)
1473 { 1473 {
1474 var path = Path.GetFullPath(context.SourcePath); 1474 var path = Path.GetFullPath(context.SourcePath);
1475 1475
diff --git a/src/WixToolset.Core/ResolveContext.cs b/src/WixToolset.Core/ResolveContext.cs
index 1694d6e5..34da34d1 100644
--- a/src/WixToolset.Core/ResolveContext.cs
+++ b/src/WixToolset.Core/ResolveContext.cs
@@ -11,12 +11,12 @@ namespace WixToolset.Core
11 11
12 internal class ResolveContext : IResolveContext 12 internal class ResolveContext : IResolveContext
13 { 13 {
14 internal ResolveContext(IServiceProvider serviceProvider) 14 internal ResolveContext(IWixToolsetServiceProvider serviceProvider)
15 { 15 {
16 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
17 } 17 }
18 18
19 public IServiceProvider ServiceProvider { get; } 19 public IWixToolsetServiceProvider ServiceProvider { get; }
20 20
21 public IEnumerable<IBindPath> BindPaths { get; set; } 21 public IEnumerable<IBindPath> BindPaths { get; set; }
22 22
diff --git a/src/WixToolset.Core/Resolver.cs b/src/WixToolset.Core/Resolver.cs
index d4a03d82..1342444f 100644
--- a/src/WixToolset.Core/Resolver.cs
+++ b/src/WixToolset.Core/Resolver.cs
@@ -17,7 +17,7 @@ namespace WixToolset.Core
17 /// </summary> 17 /// </summary>
18 internal class Resolver : IResolver 18 internal class Resolver : IResolver
19 { 19 {
20 internal Resolver(IServiceProvider serviceProvider) 20 internal Resolver(IWixToolsetServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 23
@@ -26,7 +26,7 @@ namespace WixToolset.Core
26 this.VariableResolver = serviceProvider.GetService<IVariableResolver>(); 26 this.VariableResolver = serviceProvider.GetService<IVariableResolver>();
27 } 27 }
28 28
29 private IServiceProvider ServiceProvider { get; } 29 private IWixToolsetServiceProvider ServiceProvider { get; }
30 30
31 private IMessaging Messaging { get; } 31 private IMessaging Messaging { get; }
32 32
diff --git a/src/WixToolset.Core/VariableResolver.cs b/src/WixToolset.Core/VariableResolver.cs
index 8cddfaa5..88067673 100644
--- a/src/WixToolset.Core/VariableResolver.cs
+++ b/src/WixToolset.Core/VariableResolver.cs
@@ -21,7 +21,7 @@ namespace WixToolset.Core
21 /// <summary> 21 /// <summary>
22 /// Instantiate a new VariableResolver. 22 /// Instantiate a new VariableResolver.
23 /// </summary> 23 /// </summary>
24 internal VariableResolver(IServiceProvider serviceProvider) 24 internal VariableResolver(IWixToolsetServiceProvider serviceProvider)
25 { 25 {
26 this.ServiceProvider = serviceProvider; 26 this.ServiceProvider = serviceProvider;
27 this.Messaging = serviceProvider.GetService<IMessaging>(); 27 this.Messaging = serviceProvider.GetService<IMessaging>();
@@ -31,7 +31,7 @@ namespace WixToolset.Core
31 this.localizedControls = new Dictionary<string, LocalizedControl>(); 31 this.localizedControls = new Dictionary<string, LocalizedControl>();
32 } 32 }
33 33
34 private IServiceProvider ServiceProvider { get; } 34 private IWixToolsetServiceProvider ServiceProvider { get; }
35 35
36 private IMessaging Messaging { get; } 36 private IMessaging Messaging { get; }
37 37
diff --git a/src/WixToolset.Core/WixToolsetServiceProvider.cs b/src/WixToolset.Core/WixToolsetServiceProvider.cs
index c7d6ff1d..68def7a8 100644
--- a/src/WixToolset.Core/WixToolsetServiceProvider.cs
+++ b/src/WixToolset.Core/WixToolsetServiceProvider.cs
@@ -10,11 +10,11 @@ namespace WixToolset.Core
10 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
11 using WixToolset.Extensibility.Services; 11 using WixToolset.Extensibility.Services;
12 12
13 public sealed class WixToolsetServiceProvider : IServiceProvider 13 public sealed class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider
14 { 14 {
15 public WixToolsetServiceProvider() 15 public WixToolsetServiceProvider()
16 { 16 {
17 this.CreationFunctions = new Dictionary<Type, Func<IServiceProvider, Dictionary<Type, object>, object>>(); 17 this.CreationFunctions = new Dictionary<Type, Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, object>>();
18 this.Singletons = new Dictionary<Type, object>(); 18 this.Singletons = new Dictionary<Type, object>();
19 19
20 // Singletons. 20 // Singletons.
@@ -67,7 +67,7 @@ namespace WixToolset.Core
67 this.AddService<IVariableResolver>((provider, singletons) => new VariableResolver(provider)); 67 this.AddService<IVariableResolver>((provider, singletons) => new VariableResolver(provider));
68 } 68 }
69 69
70 private Dictionary<Type, Func<IServiceProvider, Dictionary<Type, object>, object>> CreationFunctions { get; } 70 private Dictionary<Type, Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, object>> CreationFunctions { get; }
71 71
72 private Dictionary<Type, object> Singletons { get; } 72 private Dictionary<Type, object> Singletons { get; }
73 73
@@ -96,17 +96,31 @@ namespace WixToolset.Core
96 return service != null; 96 return service != null;
97 } 97 }
98 98
99 public bool TryGetService<T>(out T service)
100 where T : class
101 {
102 var success = this.TryGetService(typeof(T), out var untypedService);
103 service = (T)untypedService;
104 return success;
105 }
106
99 public object GetService(Type serviceType) 107 public object GetService(Type serviceType)
100 { 108 {
101 return this.TryGetService(serviceType, out var service) ? service : throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType)); 109 return this.TryGetService(serviceType, out var service) ? service : throw new ArgumentException($"Unknown service type: {serviceType.Name}", nameof(serviceType));
102 } 110 }
103 111
104 public void AddService(Type serviceType, Func<IServiceProvider, Dictionary<Type, object>, object> creationFunction) 112 public T GetService<T>()
113 where T : class
114 {
115 return (T)this.GetService(typeof(T));
116 }
117
118 public void AddService(Type serviceType, Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, object> creationFunction)
105 { 119 {
106 this.CreationFunctions[serviceType] = creationFunction; 120 this.CreationFunctions[serviceType] = creationFunction;
107 } 121 }
108 122
109 public void AddService<T>(Func<IServiceProvider, Dictionary<Type, object>, T> creationFunction) 123 public void AddService<T>(Func<IWixToolsetCoreServiceProvider, Dictionary<Type, object>, T> creationFunction)
110 where T : class 124 where T : class
111 { 125 {
112 this.AddService(typeof(T), creationFunction); 126 this.AddService(typeof(T), creationFunction);
diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
index b1a4c607..432d025a 100644
--- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
@@ -23,11 +23,11 @@ namespace WixToolsetTest.CoreIntegration
23 23
24 var serviceProvider = new WixToolsetServiceProvider(); 24 var serviceProvider = new WixToolsetServiceProvider();
25 25
26 var context = (IPreprocessContext)serviceProvider.GetService(typeof(IPreprocessContext)); 26 var context = serviceProvider.GetService<IPreprocessContext>();
27 context.SourcePath = sourcePath; 27 context.SourcePath = sourcePath;
28 context.IncludeSearchPaths = new[] { includeFolder }; 28 context.IncludeSearchPaths = new[] { includeFolder };
29 29
30 var preprocessor = (IPreprocessor)serviceProvider.GetService(typeof(IPreprocessor)); 30 var preprocessor = serviceProvider.GetService<IPreprocessor>();
31 var result = preprocessor.Preprocess(context); 31 var result = preprocessor.Preprocess(context);
32 32
33 var includedFile = result.IncludedFiles.Single(); 33 var includedFile = result.IncludedFiles.Single();