async Task <int> RunNAnt()
        {
            string[] arguments = GetArguments();

            runner = new ProcessRunner();
            runner.WorkingDirectory = workingDirectory;

            runner.RedirectStandardOutputAndErrorToSingleStream = true;
            runner.Start(nantFileName, arguments);

            AbstractRunNAntCommand.Category.AppendLine(runner.CommandLine);

            var writer = new NAntMessageViewCategoryTextWriter(AbstractRunNAntCommand.Category);

            using (TextReader reader = runner.OpenStandardOutputReader()) {
                await reader.CopyToAsync(writer);
            }

            OnNAntStarted();

            await runner.WaitForExitAsync();

            AbstractRunNAntCommand.Category.AppendLine(StringParser.Parse("${res:XML.MainMenu.ToolMenu.ExternalTools.ExitedWithCode} " + runner.ExitCode));

            OnNAntExited(writer.Output, String.Empty, runner.ExitCode);

            return(runner.ExitCode);
        }
		async Task<int> RunNAnt()
		{
			string[] arguments = GetArguments();
			
			runner = new ProcessRunner();
			runner.WorkingDirectory = workingDirectory;
			
			runner.RedirectStandardOutputAndErrorToSingleStream = true;
			runner.Start(nantFileName, arguments);
			
			AbstractRunNAntCommand.Category.AppendLine(runner.CommandLine);
			
			var writer = new NAntMessageViewCategoryTextWriter(AbstractRunNAntCommand.Category);
			using (TextReader reader = runner.OpenStandardOutputReader()) {
				await reader.CopyToAsync(writer);
			}
			
			OnNAntStarted();
			
			await runner.WaitForExitAsync();
			AbstractRunNAntCommand.Category.AppendLine(StringParser.Parse("${res:XML.MainMenu.ToolMenu.ExternalTools.ExitedWithCode} " + runner.ExitCode));
			
			OnNAntExited(writer.Output, String.Empty, runner.ExitCode);
			
			return runner.ExitCode;
		}