Log details when extension assembly types can't be loaded.
Bob Arnson committed
Aug 22, 2018 at 14:21 UTC
ce9ac1ddffd46daabc61ff4ba0069af576865bd1
3 files changed
+25
-7
src/WixToolset.BuildTasks/DoIt.cs
+12
-3
@@ -4,6 +4,8 @@ namespace WixToolset.BuildTasks
4
{
5
using System;
6
using System.Collections.Generic;
7
+ using System.Linq;
8
+ using System.Reflection;
9
using System.Runtime.InteropServices;
10
using Microsoft.Build.Framework;
11
using Microsoft.Build.Utilities;
@@ -170,13 +172,13 @@ namespace WixToolset.BuildTasks
172
arguments.Populate(commandLineString);
173
174
var commandLine = serviceProvider.GetService<ICommandLineParser>();
173
- commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions);
175
+ commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions);
176
commandLine.Arguments = arguments;
177
var command = commandLine.ParseStandardCommandLine();
178
command?.Execute();
179
}
180
179
- private IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions)
181
+ private IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, IMessaging messaging, string[] extensions)
182
{
183
var extensionManager = serviceProvider.GetService<IExtensionManager>();
184
@@ -187,7 +189,14 @@ namespace WixToolset.BuildTasks
189
190
foreach (var extension in extensions)
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
+ }
200
}
201
202
return extensionManager;
src/wix/Program.cs
+12
-3
@@ -4,6 +4,8 @@ namespace WixToolset.Tools
4
{
5
using System;
6
using System.Globalization;
7
+ using System.Linq;
8
+ using System.Reflection;
9
using System.Text;
10
using System.Threading;
11
using WixToolset.Core;
@@ -48,13 +50,13 @@ namespace WixToolset.Tools
50
arguments.Populate(args);
51
52
var commandLine = serviceProvider.GetService<ICommandLineParser>();
51
- commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions);
53
+ commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions);
54
commandLine.Arguments = arguments;
55
var command = commandLine.ParseStandardCommandLine();
56
return command?.Execute() ?? 1;
57
}
58
57
- private static IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions)
59
+ private static IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, IMessaging messaging, string[] extensions)
60
{
61
var extensionManager = serviceProvider.GetService<IExtensionManager>();
62
@@ -65,7 +67,14 @@ namespace WixToolset.Tools
67
68
foreach (var extension in extensions)
69
{
68
- extensionManager.Load(extension);
70
+ try
71
+ {
72
+ extensionManager.Load(extension);
73
+ }
74
+ catch (ReflectionTypeLoadException e)
75
+ {
76
+ messaging.Write(ErrorMessages.InvalidExtension(extension, String.Join(Environment.NewLine, e.LoaderExceptions.Select(le => le.ToString()))));
77
+ }
78
}
79
80
return extensionManager;
src/wix/wix.csproj
+1
-1
@@ -3,7 +3,7 @@
3
4
<Project Sdk="Microsoft.NET.Sdk">
5
<PropertyGroup>
6
- <TargetFramework>netcoreapp2.1</TargetFramework>
6
+ <TargetFrameworks>net461;netcoreapp2.1</TargetFrameworks>
7
<OutputType>Exe</OutputType>
8
<Description>Compiler</Description>
9
<Title>WiX Toolset Compiler</Title>