From ce9ac1ddffd46daabc61ff4ba0069af576865bd1 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Wed, 22 Aug 2018 14:21:31 -0400 Subject: Log details when extension assembly types can't be loaded. --- src/WixToolset.BuildTasks/DoIt.cs | 15 ++++++++++++--- src/wix/Program.cs | 15 ++++++++++++--- src/wix/wix.csproj | 2 +- 3 files changed, 25 insertions(+), 7 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 { using System; using System.Collections.Generic; + using System.Linq; + using System.Reflection; using System.Runtime.InteropServices; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -170,13 +172,13 @@ namespace WixToolset.BuildTasks arguments.Populate(commandLineString); var commandLine = serviceProvider.GetService(); - commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions); + commandLine.ExtensionManager = this.CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions); commandLine.Arguments = arguments; var command = commandLine.ParseStandardCommandLine(); command?.Execute(); } - private IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions) + private IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, IMessaging messaging, string[] extensions) { var extensionManager = serviceProvider.GetService(); @@ -187,7 +189,14 @@ namespace WixToolset.BuildTasks foreach (var extension in extensions) { - extensionManager.Load(extension); + try + { + extensionManager.Load(extension); + } + catch (ReflectionTypeLoadException e) + { + messaging.Write(ErrorMessages.InvalidExtension(extension, String.Join(Environment.NewLine, e.LoaderExceptions.Select(le => le.ToString())))); + } } return extensionManager; diff --git a/src/wix/Program.cs b/src/wix/Program.cs index 2a092ffc..a95851ee 100644 --- a/src/wix/Program.cs +++ b/src/wix/Program.cs @@ -4,6 +4,8 @@ namespace WixToolset.Tools { using System; using System.Globalization; + using System.Linq; + using System.Reflection; using System.Text; using System.Threading; using WixToolset.Core; @@ -48,13 +50,13 @@ namespace WixToolset.Tools arguments.Populate(args); var commandLine = serviceProvider.GetService(); - commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions); + commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, messaging, arguments.Extensions); commandLine.Arguments = arguments; var command = commandLine.ParseStandardCommandLine(); return command?.Execute() ?? 1; } - private static IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, string[] extensions) + private static IExtensionManager CreateExtensionManagerWithStandardBackends(IServiceProvider serviceProvider, IMessaging messaging, string[] extensions) { var extensionManager = serviceProvider.GetService(); @@ -65,7 +67,14 @@ namespace WixToolset.Tools foreach (var extension in extensions) { - extensionManager.Load(extension); + try + { + extensionManager.Load(extension); + } + catch (ReflectionTypeLoadException e) + { + messaging.Write(ErrorMessages.InvalidExtension(extension, String.Join(Environment.NewLine, e.LoaderExceptions.Select(le => le.ToString())))); + } } return extensionManager; diff --git a/src/wix/wix.csproj b/src/wix/wix.csproj index fbb8a0f5..6ec22ec0 100644 --- a/src/wix/wix.csproj +++ b/src/wix/wix.csproj @@ -3,7 +3,7 @@ - netcoreapp2.1 + net461;netcoreapp2.1 Exe Compiler WiX Toolset Compiler -- cgit v1.2.3-55-g6feb