aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2018-08-01 03:02:34 -0700
committerRob Mensching <rob@firegiant.com>2018-08-01 03:02:34 -0700
commit52005c7e6917f9866dd0b0de6993def16a72ed4b (patch)
tree59e32ad17a3ca5915c4cddbeaa83b58a73f0c3a5 /src/WixToolset.Core
parent79473d778b6cc4c8eec93b92e3b244aed904dac1 (diff)
downloadwix-52005c7e6917f9866dd0b0de6993def16a72ed4b.tar.gz
wix-52005c7e6917f9866dd0b0de6993def16a72ed4b.tar.bz2
wix-52005c7e6917f9866dd0b0de6993def16a72ed4b.zip
Major reduction in public surface area of WixToolset.Core
Diffstat (limited to 'src/WixToolset.Core')
-rw-r--r--src/WixToolset.Core/Bind/FileFacade.cs8
-rw-r--r--src/WixToolset.Core/BindContext.cs2
-rw-r--r--src/WixToolset.Core/Binder.cs4
-rw-r--r--src/WixToolset.Core/CommandLine/BuildCommand.cs5
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLineResponseFile.cs132
-rw-r--r--src/WixToolset.Core/CompileContext.cs2
-rw-r--r--src/WixToolset.Core/Compiler.cs4
-rw-r--r--src/WixToolset.Core/CompilerCore.cs2
-rw-r--r--src/WixToolset.Core/Converter.cs4
-rw-r--r--src/WixToolset.Core/Harvester.cs2
-rw-r--r--src/WixToolset.Core/HarvesterCore.cs2
-rw-r--r--src/WixToolset.Core/HeatCore.cs2
-rw-r--r--src/WixToolset.Core/ILocalizer.cs27
-rw-r--r--src/WixToolset.Core/Inscriber.cs4
-rw-r--r--src/WixToolset.Core/Layout.cs4
-rw-r--r--src/WixToolset.Core/LayoutContext.cs2
-rw-r--r--src/WixToolset.Core/Librarian.cs4
-rw-r--r--src/WixToolset.Core/LibraryContext.cs4
-rw-r--r--src/WixToolset.Core/Link/ConnectToFeature.cs4
-rw-r--r--src/WixToolset.Core/Link/ConnectToFeatureCollection.cs4
-rw-r--r--src/WixToolset.Core/Link/ConnectToModule.cs4
-rw-r--r--src/WixToolset.Core/Link/ConnectToModuleCollection.cs4
-rw-r--r--src/WixToolset.Core/Link/ReportConflictingSymbolsCommand.cs4
-rw-r--r--src/WixToolset.Core/Link/ResolveReferencesCommand.cs2
-rw-r--r--src/WixToolset.Core/Link/WixGroupingOrdering.cs4
-rw-r--r--src/WixToolset.Core/LinkContext.cs2
-rw-r--r--src/WixToolset.Core/Linker.cs5
-rw-r--r--src/WixToolset.Core/Localizer.cs36
-rw-r--r--src/WixToolset.Core/Mutator.cs2
-rw-r--r--src/WixToolset.Core/OptimizeCA.cs2
-rw-r--r--src/WixToolset.Core/Preprocess/IfContext.cs2
-rw-r--r--src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs4
-rw-r--r--src/WixToolset.Core/Preprocessor.cs16
-rw-r--r--src/WixToolset.Core/ResolveContext.cs2
-rw-r--r--src/WixToolset.Core/Resolver.cs6
-rw-r--r--src/WixToolset.Core/SourceFile.cs6
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProvider.cs5
-rw-r--r--src/WixToolset.Core/WixVariableResolver.cs2
38 files changed, 110 insertions, 220 deletions
diff --git a/src/WixToolset.Core/Bind/FileFacade.cs b/src/WixToolset.Core/Bind/FileFacade.cs
index ebca9cff..825c2c7a 100644
--- a/src/WixToolset.Core/Bind/FileFacade.cs
+++ b/src/WixToolset.Core/Bind/FileFacade.cs
@@ -21,13 +21,13 @@ namespace WixToolset.Core.Bind
21 this.WixFile = wixFile; 21 this.WixFile = wixFile;
22 } 22 }
23 23
24 public bool FromModule { get; private set; } 24 public bool FromModule { get; }
25 25
26 public FileTuple File { get; private set; } 26 public FileTuple File { get; }
27 27
28 public WixFileTuple WixFile { get; private set; } 28 public WixFileTuple WixFile { get; }
29 29
30 public WixDeltaPatchFileTuple DeltaPatchFile { get; private set; } 30 public WixDeltaPatchFileTuple DeltaPatchFile { get; }
31 31
32 /// <summary> 32 /// <summary>
33 /// Gets the set of MsiAssemblyName rows created for this file. 33 /// Gets the set of MsiAssemblyName rows created for this file.
diff --git a/src/WixToolset.Core/BindContext.cs b/src/WixToolset.Core/BindContext.cs
index 12719f51..413be301 100644
--- a/src/WixToolset.Core/BindContext.cs
+++ b/src/WixToolset.Core/BindContext.cs
@@ -8,7 +8,7 @@ namespace WixToolset.Core
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 10
11 public class BindContext : IBindContext 11 internal class BindContext : IBindContext
12 { 12 {
13 internal BindContext(IServiceProvider serviceProvider) 13 internal BindContext(IServiceProvider serviceProvider)
14 { 14 {
diff --git a/src/WixToolset.Core/Binder.cs b/src/WixToolset.Core/Binder.cs
index 2a40ce71..bbc4173b 100644
--- a/src/WixToolset.Core/Binder.cs
+++ b/src/WixToolset.Core/Binder.cs
@@ -16,9 +16,9 @@ namespace WixToolset.Core
16 /// <summary> 16 /// <summary>
17 /// Binder of the WiX toolset. 17 /// Binder of the WiX toolset.
18 /// </summary> 18 /// </summary>
19 public sealed class Binder 19 internal class Binder
20 { 20 {
21 public Binder(IServiceProvider serviceProvider) 21 internal Binder(IServiceProvider serviceProvider)
22 { 22 {
23 this.ServiceProvider = serviceProvider; 23 this.ServiceProvider = serviceProvider;
24 } 24 }
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs
index 822c4a9a..5c089b5f 100644
--- a/src/WixToolset.Core/CommandLine/BuildCommand.cs
+++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs
@@ -317,6 +317,8 @@ namespace WixToolset.Core.CommandLine
317 317
318 private IEnumerable<Localization> LoadLocalizationFiles() 318 private IEnumerable<Localization> LoadLocalizationFiles()
319 { 319 {
320 var localizer = new Localizer(this.ServiceProvider);
321
320 foreach (var loc in this.LocFiles) 322 foreach (var loc in this.LocFiles)
321 { 323 {
322 var preprocessor = new Preprocessor(this.ServiceProvider); 324 var preprocessor = new Preprocessor(this.ServiceProvider);
@@ -331,8 +333,7 @@ namespace WixToolset.Core.CommandLine
331 continue; 333 continue;
332 } 334 }
333 335
334 var localization = Localizer.ParseLocalizationFile(this.Messaging, document); 336 var localization = localizer.ParseLocalizationFile(document);
335
336 yield return localization; 337 yield return localization;
337 } 338 }
338 } 339 }
diff --git a/src/WixToolset.Core/CommandLine/CommandLineResponseFile.cs b/src/WixToolset.Core/CommandLine/CommandLineResponseFile.cs
deleted file mode 100644
index 6922b246..00000000
--- a/src/WixToolset.Core/CommandLine/CommandLineResponseFile.cs
+++ /dev/null
@@ -1,132 +0,0 @@
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
3namespace WixToolset.Core.CommandLine
4{
5 using System;
6 using System.Collections;
7 using System.Collections.Generic;
8 using System.IO;
9 using System.Text;
10 using System.Text.RegularExpressions;
11
12 /// <summary>
13 /// Common utilities for Wix command-line processing.
14 /// </summary>
15 public static class CommandLineResponseFile
16 {
17 /// <summary>
18 /// Parses a response file.
19 /// </summary>
20 /// <param name="responseFile">The file to parse.</param>
21 /// <returns>The array of arguments.</returns>
22 public static string[] Parse(string responseFile)
23 {
24 string arguments;
25
26 using (StreamReader reader = new StreamReader(responseFile))
27 {
28 arguments = reader.ReadToEnd();
29 }
30
31 return CommandLineResponseFile.ParseArgumentsToArray(arguments);
32 }
33
34 /// <summary>
35 /// Parses an argument string into an argument array based on whitespace and quoting.
36 /// </summary>
37 /// <param name="arguments">Argument string.</param>
38 /// <returns>Argument array.</returns>
39 public static string[] ParseArgumentsToArray(string arguments)
40 {
41 // Scan and parse the arguments string, dividing up the arguments based on whitespace.
42 // Unescaped quotes cause whitespace to be ignored, while the quotes themselves are removed.
43 // Quotes may begin and end inside arguments; they don't necessarily just surround whole arguments.
44 // Escaped quotes and escaped backslashes also need to be unescaped by this process.
45
46 // Collects the final list of arguments to be returned.
47 List<string> argsList = new List<string>();
48
49 // True if we are inside an unescaped quote, meaning whitespace should be ignored.
50 bool insideQuote = false;
51
52 // Index of the start of the current argument substring; either the start of the argument
53 // or the start of a quoted or unquoted sequence within it.
54 int partStart = 0;
55
56 // The current argument string being built; when completed it will be added to the list.
57 StringBuilder arg = new StringBuilder();
58
59 for (int i = 0; i <= arguments.Length; i++)
60 {
61 if (i == arguments.Length || (Char.IsWhiteSpace(arguments[i]) && !insideQuote))
62 {
63 // Reached a whitespace separator or the end of the string.
64
65 // Finish building the current argument.
66 arg.Append(arguments.Substring(partStart, i - partStart));
67
68 // Skip over the whitespace character.
69 partStart = i + 1;
70
71 // Add the argument to the list if it's not empty.
72 if (arg.Length > 0)
73 {
74 argsList.Add(CommandLineResponseFile.ExpandEnvVars(arg.ToString()));
75 arg.Length = 0;
76 }
77 }
78 else if (i > partStart && arguments[i - 1] == '\\')
79 {
80 // Check the character following an unprocessed backslash.
81 // Unescape quotes, and backslashes followed by a quote.
82 if (arguments[i] == '"' || (arguments[i] == '\\' && arguments.Length > i + 1 && arguments[i + 1] == '"'))
83 {
84 // Unescape the quote or backslash by skipping the preceeding backslash.
85 arg.Append(arguments.Substring(partStart, i - 1 - partStart));
86 arg.Append(arguments[i]);
87 partStart = i + 1;
88 }
89 }
90 else if (arguments[i] == '"')
91 {
92 // Add the quoted or unquoted section to the argument string.
93 arg.Append(arguments.Substring(partStart, i - partStart));
94
95 // And skip over the quote character.
96 partStart = i + 1;
97
98 insideQuote = !insideQuote;
99 }
100 }
101
102 return argsList.ToArray();
103 }
104
105 static private string ExpandEnvVars(string arguments)
106 {
107 IDictionary id = Environment.GetEnvironmentVariables();
108
109 Regex regex = new Regex("(?<=\\%)(?:[\\w\\.]+)(?=\\%)");
110 MatchCollection matches = regex.Matches(arguments);
111
112 string value = String.Empty;
113 for (int i = 0; i <= (matches.Count - 1); i++)
114 {
115 try
116 {
117 string key = matches[i].Value;
118 regex = new Regex(String.Concat("(?i)(?:\\%)(?:" , key , ")(?:\\%)"));
119 value = id[key].ToString();
120 arguments = regex.Replace(arguments, value);
121 }
122 catch (NullReferenceException)
123 {
124 // Collapse unresolved environment variables.
125 arguments = regex.Replace(arguments, value);
126 }
127 }
128
129 return arguments;
130 }
131 }
132}
diff --git a/src/WixToolset.Core/CompileContext.cs b/src/WixToolset.Core/CompileContext.cs
index 6f19961f..c7a0905e 100644
--- a/src/WixToolset.Core/CompileContext.cs
+++ b/src/WixToolset.Core/CompileContext.cs
@@ -9,7 +9,7 @@ namespace WixToolset.Core
9 using WixToolset.Extensibility; 9 using WixToolset.Extensibility;
10 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
11 11
12 public class CompileContext : ICompileContext 12 internal class CompileContext : ICompileContext
13 { 13 {
14 internal CompileContext(IServiceProvider serviceProvider) 14 internal CompileContext(IServiceProvider serviceProvider)
15 { 15 {
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs
index 06f477c1..437c1481 100644
--- a/src/WixToolset.Core/Compiler.cs
+++ b/src/WixToolset.Core/Compiler.cs
@@ -22,7 +22,7 @@ namespace WixToolset.Core
22 /// <summary> 22 /// <summary>
23 /// Compiler of the WiX toolset. 23 /// Compiler of the WiX toolset.
24 /// </summary> 24 /// </summary>
25 public sealed class Compiler 25 internal class Compiler
26 { 26 {
27 public const string UpgradeDetectedProperty = "WIX_UPGRADE_DETECTED"; 27 public const string UpgradeDetectedProperty = "WIX_UPGRADE_DETECTED";
28 public const string UpgradePreventedCondition = "NOT WIX_UPGRADE_DETECTED"; 28 public const string UpgradePreventedCondition = "NOT WIX_UPGRADE_DETECTED";
@@ -69,7 +69,7 @@ namespace WixToolset.Core
69 Icon, 69 Icon,
70 } 70 }
71 71
72 public Compiler(IServiceProvider serviceProvider) 72 internal Compiler(IServiceProvider serviceProvider)
73 { 73 {
74 this.ServiceProvider = serviceProvider; 74 this.ServiceProvider = serviceProvider;
75 75
diff --git a/src/WixToolset.Core/CompilerCore.cs b/src/WixToolset.Core/CompilerCore.cs
index c9165b52..cc881f48 100644
--- a/src/WixToolset.Core/CompilerCore.cs
+++ b/src/WixToolset.Core/CompilerCore.cs
@@ -39,7 +39,7 @@ namespace WixToolset.Core
39 /// <summary> 39 /// <summary>
40 /// Core class for the compiler. 40 /// Core class for the compiler.
41 /// </summary> 41 /// </summary>
42 internal sealed class CompilerCore 42 internal class CompilerCore
43 { 43 {
44 internal static readonly XNamespace W3SchemaPrefix = "http://www.w3.org/"; 44 internal static readonly XNamespace W3SchemaPrefix = "http://www.w3.org/";
45 internal static readonly XNamespace WixNamespace = "http://wixtoolset.org/schemas/v4/wxs"; 45 internal static readonly XNamespace WixNamespace = "http://wixtoolset.org/schemas/v4/wxs";
diff --git a/src/WixToolset.Core/Converter.cs b/src/WixToolset.Core/Converter.cs
index fd925f7a..1f83c88f 100644
--- a/src/WixToolset.Core/Converter.cs
+++ b/src/WixToolset.Core/Converter.cs
@@ -15,7 +15,7 @@ namespace WixToolset.Core
15 /// <summary> 15 /// <summary>
16 /// WiX source code converter. 16 /// WiX source code converter.
17 /// </summary> 17 /// </summary>
18 public class Converter 18 internal class Converter
19 { 19 {
20 private const string XDocumentNewLine = "\n"; // XDocument normlizes "\r\n" to just "\n". 20 private const string XDocumentNewLine = "\n"; // XDocument normlizes "\r\n" to just "\n".
21 private static readonly XNamespace WixNamespace = "http://wixtoolset.org/schemas/v4/wxs"; 21 private static readonly XNamespace WixNamespace = "http://wixtoolset.org/schemas/v4/wxs";
@@ -65,7 +65,7 @@ namespace WixToolset.Core
65 /// <param name="indentationAmount">Indentation value to use when validating leading whitespace.</param> 65 /// <param name="indentationAmount">Indentation value to use when validating leading whitespace.</param>
66 /// <param name="errorsAsWarnings">Test errors to display as warnings.</param> 66 /// <param name="errorsAsWarnings">Test errors to display as warnings.</param>
67 /// <param name="ignoreErrors">Test errors to ignore.</param> 67 /// <param name="ignoreErrors">Test errors to ignore.</param>
68 public Converter(IMessaging messaging, int indentationAmount, IEnumerable<string> errorsAsWarnings = null, IEnumerable<string> ignoreErrors = null) 68 internal Converter(IMessaging messaging, int indentationAmount, IEnumerable<string> errorsAsWarnings = null, IEnumerable<string> ignoreErrors = null)
69 { 69 {
70 this.ConvertElementMapping = new Dictionary<XName, Action<XElement>>() 70 this.ConvertElementMapping = new Dictionary<XName, Action<XElement>>()
71 { 71 {
diff --git a/src/WixToolset.Core/Harvester.cs b/src/WixToolset.Core/Harvester.cs
index b9c27418..55d56e64 100644
--- a/src/WixToolset.Core/Harvester.cs
+++ b/src/WixToolset.Core/Harvester.cs
@@ -11,7 +11,7 @@ namespace WixToolset
11 /// <summary> 11 /// <summary>
12 /// The WiX Toolset harvester. 12 /// The WiX Toolset harvester.
13 /// </summary> 13 /// </summary>
14 public sealed class Harvester 14 public class Harvester
15 { 15 {
16 private HarvesterExtension harvesterExtension; 16 private HarvesterExtension harvesterExtension;
17 17
diff --git a/src/WixToolset.Core/HarvesterCore.cs b/src/WixToolset.Core/HarvesterCore.cs
index 92a057d8..70991979 100644
--- a/src/WixToolset.Core/HarvesterCore.cs
+++ b/src/WixToolset.Core/HarvesterCore.cs
@@ -10,7 +10,7 @@ namespace WixToolset.Core
10 /// <summary> 10 /// <summary>
11 /// The WiX Toolset harvester core. 11 /// The WiX Toolset harvester core.
12 /// </summary> 12 /// </summary>
13 public sealed class HarvesterCore : IHarvesterCore 13 public class HarvesterCore : IHarvesterCore
14 { 14 {
15 public IMessaging Messaging { get; set; } 15 public IMessaging Messaging { get; set; }
16 16
diff --git a/src/WixToolset.Core/HeatCore.cs b/src/WixToolset.Core/HeatCore.cs
index 8e02a7b5..d43b5f3d 100644
--- a/src/WixToolset.Core/HeatCore.cs
+++ b/src/WixToolset.Core/HeatCore.cs
@@ -7,7 +7,7 @@ namespace WixToolset.Core
7 /// <summary> 7 /// <summary>
8 /// The WiX Toolset Harvester application core. 8 /// The WiX Toolset Harvester application core.
9 /// </summary> 9 /// </summary>
10 public sealed class HeatCore : IHeatCore 10 public class HeatCore : IHeatCore
11 { 11 {
12 private Harvester harvester; 12 private Harvester harvester;
13 private Mutator mutator; 13 private Mutator mutator;
diff --git a/src/WixToolset.Core/ILocalizer.cs b/src/WixToolset.Core/ILocalizer.cs
new file mode 100644
index 00000000..f15d9ba7
--- /dev/null
+++ b/src/WixToolset.Core/ILocalizer.cs
@@ -0,0 +1,27 @@
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
3namespace WixToolset.Core
4{
5 using System.Xml.Linq;
6 using WixToolset.Data;
7
8 /// <summary>
9 /// Parses localization files and localizes database values.
10 /// </summary>
11 public interface ILocalizer
12 {
13 /// <summary>
14 /// Loads a localization file from a path on disk.
15 /// </summary>
16 /// <param name="path">Path to localization file saved on disk.</param>
17 /// <returns>Returns the loaded localization file.</returns>
18 Localization ParseLocalizationFile(string path);
19
20 /// <summary>
21 /// Loads a localization file from memory.
22 /// </summary>
23 /// <param name="document">Document to parse as localization file.</param>
24 /// <returns>Returns the loaded localization file.</returns>
25 Localization ParseLocalizationFile(XDocument document);
26 }
27}
diff --git a/src/WixToolset.Core/Inscriber.cs b/src/WixToolset.Core/Inscriber.cs
index efe64ad2..649e1661 100644
--- a/src/WixToolset.Core/Inscriber.cs
+++ b/src/WixToolset.Core/Inscriber.cs
@@ -1,6 +1,6 @@
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 3namespace WixToolset.Core
4{ 4{
5 using System.IO; 5 using System.IO;
6 using WixToolset.Data; 6 using WixToolset.Data;
@@ -8,7 +8,7 @@ namespace WixToolset
8 /// <summary> 8 /// <summary>
9 /// Converts a wixout representation of an MSM database into a ComponentGroup the form of WiX source. 9 /// Converts a wixout representation of an MSM database into a ComponentGroup the form of WiX source.
10 /// </summary> 10 /// </summary>
11 public sealed class Inscriber 11 internal class Inscriber
12 { 12 {
13 /// <summary> 13 /// <summary>
14 /// Gets or sets the temp files collection. 14 /// Gets or sets the temp files collection.
diff --git a/src/WixToolset.Core/Layout.cs b/src/WixToolset.Core/Layout.cs
index 28c9d5fc..128efc61 100644
--- a/src/WixToolset.Core/Layout.cs
+++ b/src/WixToolset.Core/Layout.cs
@@ -15,9 +15,9 @@ namespace WixToolset.Core
15 /// <summary> 15 /// <summary>
16 /// Layout for the WiX toolset. 16 /// Layout for the WiX toolset.
17 /// </summary> 17 /// </summary>
18 public sealed class Layout 18 internal class Layout
19 { 19 {
20 public Layout(IServiceProvider serviceProvider) 20 internal Layout(IServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 23
diff --git a/src/WixToolset.Core/LayoutContext.cs b/src/WixToolset.Core/LayoutContext.cs
index 172cea65..99ca611a 100644
--- a/src/WixToolset.Core/LayoutContext.cs
+++ b/src/WixToolset.Core/LayoutContext.cs
@@ -7,7 +7,7 @@ namespace WixToolset.Core
7 using WixToolset.Extensibility; 7 using WixToolset.Extensibility;
8 using WixToolset.Extensibility.Data; 8 using WixToolset.Extensibility.Data;
9 9
10 public class LayoutContext : ILayoutContext 10 internal class LayoutContext : ILayoutContext
11 { 11 {
12 internal LayoutContext(IServiceProvider serviceProvider) 12 internal LayoutContext(IServiceProvider serviceProvider)
13 { 13 {
diff --git a/src/WixToolset.Core/Librarian.cs b/src/WixToolset.Core/Librarian.cs
index 15efcfcc..abd6c844 100644
--- a/src/WixToolset.Core/Librarian.cs
+++ b/src/WixToolset.Core/Librarian.cs
@@ -15,9 +15,9 @@ namespace WixToolset.Core
15 /// <summary> 15 /// <summary>
16 /// Core librarian tool. 16 /// Core librarian tool.
17 /// </summary> 17 /// </summary>
18 public sealed class Librarian 18 internal class Librarian
19 { 19 {
20 public Librarian(IServiceProvider serviceProvider) 20 internal Librarian(IServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 23
diff --git a/src/WixToolset.Core/LibraryContext.cs b/src/WixToolset.Core/LibraryContext.cs
index 0b09aa93..e61b6ce8 100644
--- a/src/WixToolset.Core/LibraryContext.cs
+++ b/src/WixToolset.Core/LibraryContext.cs
@@ -9,9 +9,9 @@ namespace WixToolset.Core
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services; 10 using WixToolset.Extensibility.Services;
11 11
12 public class LibraryContext : ILibraryContext 12 internal class LibraryContext : ILibraryContext
13 { 13 {
14 public LibraryContext(IServiceProvider serviceProvider) 14 internal LibraryContext(IServiceProvider serviceProvider)
15 { 15 {
16 this.ServiceProvider = serviceProvider; 16 this.ServiceProvider = serviceProvider;
17 } 17 }
diff --git a/src/WixToolset.Core/Link/ConnectToFeature.cs b/src/WixToolset.Core/Link/ConnectToFeature.cs
index bc85426a..dd95f2db 100644
--- a/src/WixToolset.Core/Link/ConnectToFeature.cs
+++ b/src/WixToolset.Core/Link/ConnectToFeature.cs
@@ -1,6 +1,6 @@
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.Link 3namespace WixToolset.Core.Link
4{ 4{
5 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using WixToolset.Data; 6 using WixToolset.Data;
@@ -8,7 +8,7 @@ namespace WixToolset.Link
8 /// <summary> 8 /// <summary>
9 /// Object that connects things (components/modules) to features. 9 /// Object that connects things (components/modules) to features.
10 /// </summary> 10 /// </summary>
11 public sealed class ConnectToFeature 11 internal class ConnectToFeature
12 { 12 {
13 /// <summary> 13 /// <summary>
14 /// Creates a new connect to feature. 14 /// Creates a new connect to feature.
diff --git a/src/WixToolset.Core/Link/ConnectToFeatureCollection.cs b/src/WixToolset.Core/Link/ConnectToFeatureCollection.cs
index 8dd0d22c..b7874527 100644
--- a/src/WixToolset.Core/Link/ConnectToFeatureCollection.cs
+++ b/src/WixToolset.Core/Link/ConnectToFeatureCollection.cs
@@ -1,6 +1,6 @@
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.Link 3namespace WixToolset.Core.Link
4{ 4{
5 using System; 5 using System;
6 using System.Collections; 6 using System.Collections;
@@ -8,7 +8,7 @@ namespace WixToolset.Link
8 /// <summary> 8 /// <summary>
9 /// Hash collection of connect to feature objects. 9 /// Hash collection of connect to feature objects.
10 /// </summary> 10 /// </summary>
11 public sealed class ConnectToFeatureCollection : ICollection 11 internal class ConnectToFeatureCollection : ICollection
12 { 12 {
13 private Hashtable collection; 13 private Hashtable collection;
14 14
diff --git a/src/WixToolset.Core/Link/ConnectToModule.cs b/src/WixToolset.Core/Link/ConnectToModule.cs
index d6a8338e..4380e12c 100644
--- a/src/WixToolset.Core/Link/ConnectToModule.cs
+++ b/src/WixToolset.Core/Link/ConnectToModule.cs
@@ -1,11 +1,11 @@
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.Link 3namespace WixToolset.Core.Link
4{ 4{
5 /// <summary> 5 /// <summary>
6 /// Object that connects things to modules. 6 /// Object that connects things to modules.
7 /// </summary> 7 /// </summary>
8 public sealed class ConnectToModule 8 internal class ConnectToModule
9 { 9 {
10 private string childId; 10 private string childId;
11 private string module; 11 private string module;
diff --git a/src/WixToolset.Core/Link/ConnectToModuleCollection.cs b/src/WixToolset.Core/Link/ConnectToModuleCollection.cs
index 6595487f..e0f96ffb 100644
--- a/src/WixToolset.Core/Link/ConnectToModuleCollection.cs
+++ b/src/WixToolset.Core/Link/ConnectToModuleCollection.cs
@@ -1,6 +1,6 @@
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.Link 3namespace WixToolset.Core.Link
4{ 4{
5 using System; 5 using System;
6 using System.Collections; 6 using System.Collections;
@@ -8,7 +8,7 @@ namespace WixToolset.Link
8 /// <summary> 8 /// <summary>
9 /// Hash collection of connect to module objects. 9 /// Hash collection of connect to module objects.
10 /// </summary> 10 /// </summary>
11 public sealed class ConnectToModuleCollection : ICollection 11 internal class ConnectToModuleCollection : ICollection
12 { 12 {
13 private Hashtable collection; 13 private Hashtable collection;
14 14
diff --git a/src/WixToolset.Core/Link/ReportConflictingSymbolsCommand.cs b/src/WixToolset.Core/Link/ReportConflictingSymbolsCommand.cs
index 23fac864..8d818ad9 100644
--- a/src/WixToolset.Core/Link/ReportConflictingSymbolsCommand.cs
+++ b/src/WixToolset.Core/Link/ReportConflictingSymbolsCommand.cs
@@ -1,13 +1,13 @@
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.Link 3namespace WixToolset.Core.Link
4{ 4{
5 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Linq; 6 using System.Linq;
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility.Services; 8 using WixToolset.Extensibility.Services;
9 9
10 public class ReportConflictingSymbolsCommand 10 internal class ReportConflictingSymbolsCommand
11 { 11 {
12 public ReportConflictingSymbolsCommand(IMessaging messaging, IEnumerable<Symbol> possibleConflicts, IEnumerable<IntermediateSection> resolvedSections) 12 public ReportConflictingSymbolsCommand(IMessaging messaging, IEnumerable<Symbol> possibleConflicts, IEnumerable<IntermediateSection> resolvedSections)
13 { 13 {
diff --git a/src/WixToolset.Core/Link/ResolveReferencesCommand.cs b/src/WixToolset.Core/Link/ResolveReferencesCommand.cs
index c05464e9..0188f9ac 100644
--- a/src/WixToolset.Core/Link/ResolveReferencesCommand.cs
+++ b/src/WixToolset.Core/Link/ResolveReferencesCommand.cs
@@ -1,6 +1,6 @@
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.Link 3namespace WixToolset.Core.Link
4{ 4{
5 using System; 5 using System;
6 using System.Collections.Generic; 6 using System.Collections.Generic;
diff --git a/src/WixToolset.Core/Link/WixGroupingOrdering.cs b/src/WixToolset.Core/Link/WixGroupingOrdering.cs
index 50c4d8d2..4e89e607 100644
--- a/src/WixToolset.Core/Link/WixGroupingOrdering.cs
+++ b/src/WixToolset.Core/Link/WixGroupingOrdering.cs
@@ -16,7 +16,7 @@ namespace WixToolset.Core.Link
16 /// <summary> 16 /// <summary>
17 /// Grouping and Ordering class of the WiX toolset. 17 /// Grouping and Ordering class of the WiX toolset.
18 /// </summary> 18 /// </summary>
19 internal sealed class WixGroupingOrdering 19 internal class WixGroupingOrdering
20 { 20 {
21 private IMessaging messageHandler; 21 private IMessaging messageHandler;
22 private List<string> groupTypes; 22 private List<string> groupTypes;
@@ -679,7 +679,7 @@ namespace WixToolset.Core.Link
679 /// <summary> 679 /// <summary>
680 /// Helper IComparer class to make ordering easier. 680 /// Helper IComparer class to make ordering easier.
681 /// </summary> 681 /// </summary>
682 internal sealed class AfterItemComparer : IComparer<Item> 682 internal class AfterItemComparer : IComparer<Item>
683 { 683 {
684 public int Compare(Item x, Item y) 684 public int Compare(Item x, Item y)
685 { 685 {
diff --git a/src/WixToolset.Core/LinkContext.cs b/src/WixToolset.Core/LinkContext.cs
index 7576ca3f..f45a3411 100644
--- a/src/WixToolset.Core/LinkContext.cs
+++ b/src/WixToolset.Core/LinkContext.cs
@@ -8,7 +8,7 @@ namespace WixToolset.Core
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 10
11 public class LinkContext : ILinkContext 11 internal class LinkContext : ILinkContext
12 { 12 {
13 internal LinkContext(IServiceProvider serviceProvider) 13 internal LinkContext(IServiceProvider serviceProvider)
14 { 14 {
diff --git a/src/WixToolset.Core/Linker.cs b/src/WixToolset.Core/Linker.cs
index 4d1a6965..04188e53 100644
--- a/src/WixToolset.Core/Linker.cs
+++ b/src/WixToolset.Core/Linker.cs
@@ -14,12 +14,11 @@ namespace WixToolset.Core
14 using WixToolset.Extensibility; 14 using WixToolset.Extensibility;
15 using WixToolset.Extensibility.Data; 15 using WixToolset.Extensibility.Data;
16 using WixToolset.Extensibility.Services; 16 using WixToolset.Extensibility.Services;
17 using WixToolset.Link;
18 17
19 /// <summary> 18 /// <summary>
20 /// Linker core of the WiX toolset. 19 /// Linker core of the WiX toolset.
21 /// </summary> 20 /// </summary>
22 public sealed class Linker 21 internal class Linker
23 { 22 {
24 private static readonly char[] colonCharacter = ":".ToCharArray(); 23 private static readonly char[] colonCharacter = ":".ToCharArray();
25 private static readonly string emptyGuid = Guid.Empty.ToString("B"); 24 private static readonly string emptyGuid = Guid.Empty.ToString("B");
@@ -29,7 +28,7 @@ namespace WixToolset.Core
29 /// <summary> 28 /// <summary>
30 /// Creates a linker. 29 /// Creates a linker.
31 /// </summary> 30 /// </summary>
32 public Linker(IServiceProvider serviceProvider) 31 internal Linker(IServiceProvider serviceProvider)
33 { 32 {
34 this.ServiceProvider = serviceProvider; 33 this.ServiceProvider = serviceProvider;
35 this.Messaging = this.ServiceProvider.GetService<IMessaging>(); 34 this.Messaging = this.ServiceProvider.GetService<IMessaging>();
diff --git a/src/WixToolset.Core/Localizer.cs b/src/WixToolset.Core/Localizer.cs
index cb9a4406..a545f844 100644
--- a/src/WixToolset.Core/Localizer.cs
+++ b/src/WixToolset.Core/Localizer.cs
@@ -11,31 +11,25 @@ namespace WixToolset.Core
11 using WixToolset.Extensibility; 11 using WixToolset.Extensibility;
12 using WixToolset.Extensibility.Services; 12 using WixToolset.Extensibility.Services;
13 13
14 /// <summary> 14 internal class Localizer : ILocalizer
15 /// Parses localization files and localizes database values.
16 /// </summary>
17 public sealed class Localizer
18 { 15 {
19 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl"; 16 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl";
20 private static string XmlElementName = "WixLocalization"; 17 private static string XmlElementName = "WixLocalization";
21 18
22 /// <summary> 19 internal Localizer(IServiceProvider serviceProvider)
23 /// Loads a localization file from a path on disk. 20 {
24 /// </summary> 21 this.Messaging = serviceProvider.GetService<IMessaging>();
25 /// <param name="path">Path to localization file saved on disk.</param> 22 }
26 /// <returns>Returns the loaded localization file.</returns> 23
27 public static Localization ParseLocalizationFile(IMessaging messaging, string path) 24 private IMessaging Messaging { get; }
25
26 public Localization ParseLocalizationFile(string path)
28 { 27 {
29 var document = XDocument.Load(path); 28 var document = XDocument.Load(path);
30 return ParseLocalizationFile(messaging, document); 29 return ParseLocalizationFile(document);
31 } 30 }
32 31
33 /// <summary> 32 public Localization ParseLocalizationFile(XDocument document)
34 /// Loads a localization file from memory.
35 /// </summary>
36 /// <param name="document">Document to parse as localization file.</param>
37 /// <returns>Returns the loaded localization file.</returns>
38 public static Localization ParseLocalizationFile(IMessaging messaging, XDocument document)
39 { 33 {
40 XElement root = document.Root; 34 XElement root = document.Root;
41 Localization localization = null; 35 Localization localization = null;
@@ -45,23 +39,23 @@ namespace WixToolset.Core
45 { 39 {
46 if (Localizer.WxlNamespace == root.Name.Namespace) 40 if (Localizer.WxlNamespace == root.Name.Namespace)
47 { 41 {
48 localization = ParseWixLocalizationElement(messaging, root); 42 localization = ParseWixLocalizationElement(this.Messaging, root);
49 } 43 }
50 else // invalid or missing namespace 44 else // invalid or missing namespace
51 { 45 {
52 if (null == root.Name.Namespace) 46 if (null == root.Name.Namespace)
53 { 47 {
54 messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, Localizer.WxlNamespace.NamespaceName)); 48 this.Messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, Localizer.WxlNamespace.NamespaceName));
55 } 49 }
56 else 50 else
57 { 51 {
58 messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, root.Name.LocalName, Localizer.WxlNamespace.NamespaceName)); 52 this.Messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, root.Name.LocalName, Localizer.WxlNamespace.NamespaceName));
59 } 53 }
60 } 54 }
61 } 55 }
62 else 56 else
63 { 57 {
64 messaging.Write(ErrorMessages.InvalidDocumentElement(sourceLineNumbers, root.Name.LocalName, "localization", Localizer.XmlElementName)); 58 this.Messaging.Write(ErrorMessages.InvalidDocumentElement(sourceLineNumbers, root.Name.LocalName, "localization", Localizer.XmlElementName));
65 } 59 }
66 60
67 return localization; 61 return localization;
diff --git a/src/WixToolset.Core/Mutator.cs b/src/WixToolset.Core/Mutator.cs
index 7f1af13a..cee17736 100644
--- a/src/WixToolset.Core/Mutator.cs
+++ b/src/WixToolset.Core/Mutator.cs
@@ -10,7 +10,7 @@ namespace WixToolset.Core
10 /// <summary> 10 /// <summary>
11 /// The WiX Toolset mutator. 11 /// The WiX Toolset mutator.
12 /// </summary> 12 /// </summary>
13 public sealed class Mutator 13 public class Mutator
14 { 14 {
15 private SortedList extensions; 15 private SortedList extensions;
16 private string extensionArgument; 16 private string extensionArgument;
diff --git a/src/WixToolset.Core/OptimizeCA.cs b/src/WixToolset.Core/OptimizeCA.cs
index efd07299..ba17604d 100644
--- a/src/WixToolset.Core/OptimizeCA.cs
+++ b/src/WixToolset.Core/OptimizeCA.cs
@@ -8,7 +8,7 @@ namespace WixToolset.Core
8 /// Values for the OptimizeCA MsiPatchMetdata property, which indicates whether custom actions can be skipped when applying the patch. 8 /// Values for the OptimizeCA MsiPatchMetdata property, which indicates whether custom actions can be skipped when applying the patch.
9 /// </summary> 9 /// </summary>
10 [Flags] 10 [Flags]
11 public enum OptimizeCA 11 internal enum OptimizeCA
12 { 12 {
13 /// <summary> 13 /// <summary>
14 /// No custom actions are skipped. 14 /// No custom actions are skipped.
diff --git a/src/WixToolset.Core/Preprocess/IfContext.cs b/src/WixToolset.Core/Preprocess/IfContext.cs
index e7c6e6f5..91173c29 100644
--- a/src/WixToolset.Core/Preprocess/IfContext.cs
+++ b/src/WixToolset.Core/Preprocess/IfContext.cs
@@ -5,7 +5,7 @@ namespace WixToolset.Core.Preprocess
5 /// <summary> 5 /// <summary>
6 /// Context for an if statement in the preprocessor. 6 /// Context for an if statement in the preprocessor.
7 /// </summary> 7 /// </summary>
8 internal sealed class IfContext 8 internal class IfContext
9 { 9 {
10 private bool keep; 10 private bool keep;
11 11
diff --git a/src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs b/src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs
index 434590d2..b2a4ddb1 100644
--- a/src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs
+++ b/src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs
@@ -32,12 +32,12 @@ namespace WixToolset.Core.Preprocess
32 /// Gets the full path of the source file. 32 /// Gets the full path of the source file.
33 /// </summary> 33 /// </summary>
34 /// <value>The full path of the source file.</value> 34 /// <value>The full path of the source file.</value>
35 public string SourceFile { get; private set; } 35 public string SourceFile { get; }
36 36
37 /// <summary> 37 /// <summary>
38 /// Gets the preprocessed output stream. 38 /// Gets the preprocessed output stream.
39 /// </summary> 39 /// </summary>
40 /// <value>The the preprocessed output stream.</value> 40 /// <value>The the preprocessed output stream.</value>
41 public XDocument Document { get; private set; } 41 public XDocument Document { get; }
42 } 42 }
43} 43}
diff --git a/src/WixToolset.Core/Preprocessor.cs b/src/WixToolset.Core/Preprocessor.cs
index aca954bd..acba0b5f 100644
--- a/src/WixToolset.Core/Preprocessor.cs
+++ b/src/WixToolset.Core/Preprocessor.cs
@@ -20,24 +20,24 @@ namespace WixToolset.Core
20 /// <summary> 20 /// <summary>
21 /// Preprocessor object 21 /// Preprocessor object
22 /// </summary> 22 /// </summary>
23 public sealed class Preprocessor 23 internal class Preprocessor
24 { 24 {
25 private readonly Regex defineRegex = new Regex(@"^\s*(?<varName>.+?)\s*(=\s*(?<varValue>.+?)\s*)?$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.ExplicitCapture); 25 private static readonly Regex DefineRegex = new Regex(@"^\s*(?<varName>.+?)\s*(=\s*(?<varValue>.+?)\s*)?$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.ExplicitCapture);
26 private readonly Regex pragmaRegex = new Regex(@"^\s*(?<pragmaName>.+?)(?<pragmaValue>[\s\(].+?)?$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.ExplicitCapture); 26 private static readonly Regex PragmaRegex = new Regex(@"^\s*(?<pragmaName>.+?)(?<pragmaValue>[\s\(].+?)?$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.ExplicitCapture);
27 27
28 private readonly XmlReaderSettings DocumentXmlReaderSettings = new XmlReaderSettings() 28 private static readonly XmlReaderSettings DocumentXmlReaderSettings = new XmlReaderSettings()
29 { 29 {
30 ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags.None, 30 ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags.None,
31 XmlResolver = null, 31 XmlResolver = null,
32 }; 32 };
33 private readonly XmlReaderSettings FragmentXmlReaderSettings = new XmlReaderSettings() 33 private static readonly XmlReaderSettings FragmentXmlReaderSettings = new XmlReaderSettings()
34 { 34 {
35 ConformanceLevel = ConformanceLevel.Fragment, 35 ConformanceLevel = ConformanceLevel.Fragment,
36 ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags.None, 36 ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags.None,
37 XmlResolver = null, 37 XmlResolver = null,
38 }; 38 };
39 39
40 public Preprocessor(IServiceProvider serviceProvider) 40 internal Preprocessor(IServiceProvider serviceProvider)
41 { 41 {
42 this.ServiceProvider = serviceProvider; 42 this.ServiceProvider = serviceProvider;
43 43
@@ -584,7 +584,7 @@ namespace WixToolset.Core
584 /// <param name="originalDefine">Text from source.</param> 584 /// <param name="originalDefine">Text from source.</param>
585 private void PreprocessDefine(string originalDefine) 585 private void PreprocessDefine(string originalDefine)
586 { 586 {
587 var match = defineRegex.Match(originalDefine); 587 var match = DefineRegex.Match(originalDefine);
588 588
589 if (!match.Success) 589 if (!match.Success)
590 { 590 {
@@ -791,7 +791,7 @@ namespace WixToolset.Core
791 /// <param name="pragmaText">Text from source.</param> 791 /// <param name="pragmaText">Text from source.</param>
792 private void PreprocessPragma(string pragmaText, XContainer parent) 792 private void PreprocessPragma(string pragmaText, XContainer parent)
793 { 793 {
794 var match = pragmaRegex.Match(pragmaText); 794 var match = PragmaRegex.Match(pragmaText);
795 795
796 if (!match.Success) 796 if (!match.Success)
797 { 797 {
diff --git a/src/WixToolset.Core/ResolveContext.cs b/src/WixToolset.Core/ResolveContext.cs
index 65b991ea..cadc6678 100644
--- a/src/WixToolset.Core/ResolveContext.cs
+++ b/src/WixToolset.Core/ResolveContext.cs
@@ -9,7 +9,7 @@ namespace WixToolset.Core
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services; 10 using WixToolset.Extensibility.Services;
11 11
12 public class ResolveContext : IResolveContext 12 internal class ResolveContext : IResolveContext
13 { 13 {
14 internal ResolveContext(IServiceProvider serviceProvider) 14 internal ResolveContext(IServiceProvider serviceProvider)
15 { 15 {
diff --git a/src/WixToolset.Core/Resolver.cs b/src/WixToolset.Core/Resolver.cs
index 5e283f2c..12cb375b 100644
--- a/src/WixToolset.Core/Resolver.cs
+++ b/src/WixToolset.Core/Resolver.cs
@@ -15,9 +15,9 @@ namespace WixToolset.Core
15 /// <summary> 15 /// <summary>
16 /// Resolver for the WiX toolset. 16 /// Resolver for the WiX toolset.
17 /// </summary> 17 /// </summary>
18 public sealed class Resolver 18 internal class Resolver
19 { 19 {
20 public Resolver(IServiceProvider serviceProvider) 20 internal Resolver(IServiceProvider serviceProvider)
21 { 21 {
22 this.ServiceProvider = serviceProvider; 22 this.ServiceProvider = serviceProvider;
23 23
@@ -26,7 +26,7 @@ namespace WixToolset.Core
26 26
27 private IServiceProvider ServiceProvider { get; } 27 private IServiceProvider ServiceProvider { get; }
28 28
29 public IMessaging Messaging { get; } 29 private IMessaging Messaging { get; }
30 30
31 public IEnumerable<BindPath> BindPaths { get; set; } 31 public IEnumerable<BindPath> BindPaths { get; set; }
32 32
diff --git a/src/WixToolset.Core/SourceFile.cs b/src/WixToolset.Core/SourceFile.cs
index f1064513..d7ea7a50 100644
--- a/src/WixToolset.Core/SourceFile.cs
+++ b/src/WixToolset.Core/SourceFile.cs
@@ -2,8 +2,6 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System.IO;
6
7 internal class SourceFile 5 internal class SourceFile
8 { 6 {
9 public SourceFile(string sourcePath, string outputPath) 7 public SourceFile(string sourcePath, string outputPath)
@@ -12,8 +10,8 @@ namespace WixToolset.Core
12 this.OutputPath = outputPath; 10 this.OutputPath = outputPath;
13 } 11 }
14 12
15 public string OutputPath { get; set; } 13 public string OutputPath { get; }
16 14
17 public string SourcePath { get; set; } 15 public string SourcePath { get; }
18 } 16 }
19} 17}
diff --git a/src/WixToolset.Core/WixToolsetServiceProvider.cs b/src/WixToolset.Core/WixToolsetServiceProvider.cs
index ffcdbdd1..9278ddc3 100644
--- a/src/WixToolset.Core/WixToolsetServiceProvider.cs
+++ b/src/WixToolset.Core/WixToolsetServiceProvider.cs
@@ -10,7 +10,7 @@ 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 class WixToolsetServiceProvider : IServiceProvider 13 public sealed class WixToolsetServiceProvider : IServiceProvider
14 { 14 {
15 public WixToolsetServiceProvider() 15 public WixToolsetServiceProvider()
16 { 16 {
@@ -36,6 +36,9 @@ namespace WixToolset.Core
36 { typeof(IBindContext), (provider, singletons) => new BindContext(provider) }, 36 { typeof(IBindContext), (provider, singletons) => new BindContext(provider) },
37 { typeof(ILayoutContext), (provider, singletons) => new LayoutContext(provider) }, 37 { typeof(ILayoutContext), (provider, singletons) => new LayoutContext(provider) },
38 { typeof(IInscribeContext), (provider, singletons) => new InscribeContext(provider) }, 38 { typeof(IInscribeContext), (provider, singletons) => new InscribeContext(provider) },
39
40 // Internal implementations.
41 { typeof(ILocalizer), (provider, singletons) => new Localizer(provider) },
39 }; 42 };
40 43
41 this.Singletons = new Dictionary<Type, object>(); 44 this.Singletons = new Dictionary<Type, object>();
diff --git a/src/WixToolset.Core/WixVariableResolver.cs b/src/WixToolset.Core/WixVariableResolver.cs
index 8ac35e99..75851a56 100644
--- a/src/WixToolset.Core/WixVariableResolver.cs
+++ b/src/WixToolset.Core/WixVariableResolver.cs
@@ -12,7 +12,7 @@ namespace WixToolset.Core
12 /// <summary> 12 /// <summary>
13 /// WiX variable resolver. 13 /// WiX variable resolver.
14 /// </summary> 14 /// </summary>
15 internal sealed class WixVariableResolver : IVariableResolver 15 internal class WixVariableResolver : IVariableResolver
16 { 16 {
17 private readonly Dictionary<string, BindVariable> locVariables; 17 private readonly Dictionary<string, BindVariable> locVariables;
18 private readonly Dictionary<string, BindVariable> wixVariables; 18 private readonly Dictionary<string, BindVariable> wixVariables;