aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.BuildTasks/DoIt.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.BuildTasks/DoIt.cs')
-rw-r--r--src/WixToolset.BuildTasks/DoIt.cs15
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;