diff options
| author | Rob Mensching <rob@firegiant.com> | 2020-06-10 08:11:09 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2020-06-10 08:16:55 -0700 |
| commit | 74e57bee9f6d9029cbbb2977c18f02d8ec18c50c (patch) | |
| tree | f8cb65b4868e4a366d19053d173aa181512e9a4e /src/WixToolset.BuildTasks/ToolsetTask_InProc.cs | |
| parent | 5edb291f102959e993123ee402d364df450206cf (diff) | |
| download | wix-74e57bee9f6d9029cbbb2977c18f02d8ec18c50c.tar.gz wix-74e57bee9f6d9029cbbb2977c18f02d8ec18c50c.tar.bz2 wix-74e57bee9f6d9029cbbb2977c18f02d8ec18c50c.zip | |
Update MSBuild task to support async commands and push heat out of proc
Diffstat (limited to 'src/WixToolset.BuildTasks/ToolsetTask_InProc.cs')
| -rw-r--r-- | src/WixToolset.BuildTasks/ToolsetTask_InProc.cs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs b/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs index a3290e60..6c83ee11 100644 --- a/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs +++ b/src/WixToolset.BuildTasks/ToolsetTask_InProc.cs | |||
| @@ -5,6 +5,8 @@ namespace WixToolset.BuildTasks | |||
| 5 | { | 5 | { |
| 6 | using System; | 6 | using System; |
| 7 | using System.Runtime.InteropServices; | 7 | using System.Runtime.InteropServices; |
| 8 | using System.Threading; | ||
| 9 | using System.Threading.Tasks; | ||
| 8 | using Microsoft.Build.Framework; | 10 | using Microsoft.Build.Framework; |
| 9 | using WixToolset.Core; | 11 | using WixToolset.Core; |
| 10 | using WixToolset.Data; | 12 | using WixToolset.Data; |
| @@ -27,13 +29,17 @@ namespace WixToolset.BuildTasks | |||
| 27 | { | 29 | { |
| 28 | this.Log.LogMessage(MessageImportance.Normal, $"({this.ToolName}){commandLineString}"); | 30 | this.Log.LogMessage(MessageImportance.Normal, $"({this.ToolName}){commandLineString}"); |
| 29 | 31 | ||
| 30 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); | ||
| 31 | var listener = new MsbuildMessageListener(this.Log, this.TaskShortName, this.BuildEngine.ProjectFileOfTaskNode); | 32 | var listener = new MsbuildMessageListener(this.Log, this.TaskShortName, this.BuildEngine.ProjectFileOfTaskNode); |
| 32 | int exitCode = -1; | 33 | var exitCode = -1; |
| 33 | 34 | ||
| 34 | try | 35 | try |
| 35 | { | 36 | { |
| 36 | exitCode = this.ExecuteCore(serviceProvider, listener, commandLineString); | 37 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); |
| 38 | |||
| 39 | var messaging = serviceProvider.GetService<IMessaging>(); | ||
| 40 | messaging.SetListener(listener); | ||
| 41 | |||
| 42 | exitCode = this.ExecuteCoreAsync(serviceProvider, commandLineString, CancellationToken.None).GetAwaiter().GetResult(); | ||
| 37 | } | 43 | } |
| 38 | catch (WixException e) | 44 | catch (WixException e) |
| 39 | { | 45 | { |
| @@ -65,7 +71,7 @@ namespace WixToolset.BuildTasks | |||
| 65 | } | 71 | } |
| 66 | } | 72 | } |
| 67 | 73 | ||
| 68 | protected abstract int ExecuteCore(IWixToolsetServiceProvider serviceProvider, IMessageListener messageListener, string commandLineString); | 74 | protected abstract Task<int> ExecuteCoreAsync(IWixToolsetCoreServiceProvider serviceProvider, string commandLineString, CancellationToken cancellationToken); |
| 69 | 75 | ||
| 70 | protected abstract string TaskShortName { get; } | 76 | protected abstract string TaskShortName { get; } |
| 71 | } | 77 | } |
