diff options
Diffstat (limited to 'src/WixToolset.BuildTasks/DoIt.cs')
-rw-r--r-- | src/WixToolset.BuildTasks/DoIt.cs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/WixToolset.BuildTasks/DoIt.cs b/src/WixToolset.BuildTasks/DoIt.cs index 33842e44..01938ed6 100644 --- a/src/WixToolset.BuildTasks/DoIt.cs +++ b/src/WixToolset.BuildTasks/DoIt.cs | |||
@@ -4,6 +4,8 @@ namespace WixToolset.BuildTasks | |||
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
7 | using System.Linq; | ||
8 | using System.Reflection; | ||
7 | using System.Runtime.InteropServices; | 9 | using System.Runtime.InteropServices; |
8 | using Microsoft.Build.Framework; | 10 | using Microsoft.Build.Framework; |
9 | using Microsoft.Build.Utilities; | 11 | using Microsoft.Build.Utilities; |
@@ -170,13 +172,13 @@ namespace WixToolset.BuildTasks | |||
170 | arguments.Populate(commandLineString); | 172 | arguments.Populate(commandLineString); |
171 | 173 | ||
172 | var commandLine = serviceProvider.GetService<ICommandLineParser>(); | 174 | var commandLine = serviceProvider.GetService<ICommandLineParser>(); |
173 | commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions); | 175 | commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions); |
174 | commandLine.Arguments = arguments; | 176 | commandLine.Arguments = arguments; |
175 | var command = commandLine.ParseStandardCommandLine(); | 177 | var command = commandLine.ParseStandardCommandLine(); |
176 | command?.Execute(); | 178 | command?.Execute(); |
177 | } | 179 | } |
178 | 180 | ||
179 | private IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions) | 181 | private IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, IMessaging messaging, string[] extensions) |
180 | { | 182 | { |
181 | var extensionManager = serviceProvider.GetService<IExtensionManager>(); | 183 | var extensionManager = serviceProvider.GetService<IExtensionManager>(); |
182 | 184 | ||
@@ -187,7 +189,14 @@ namespace WixToolset.BuildTasks | |||
187 | 189 | ||
188 | foreach (var extension in extensions) | 190 | foreach (var extension in extensions) |
189 | { | 191 | { |
190 | extensionManager.Load(extension); | 192 | try |
193 | { | ||
194 | extensionManager.Load(extension); | ||
195 | } | ||
196 | catch (ReflectionTypeLoadException e) | ||
197 | { | ||
198 | messaging.Write(ErrorMessages.InvalidExtension(extension, String.Join(Environment.NewLine, e.LoaderExceptions.Select(le => le.ToString())))); | ||
199 | } | ||
191 | } | 200 | } |
192 | 201 | ||
193 | return extensionManager; | 202 | return extensionManager; |