private void ShowLog(object sender, EventArgs e) { if (Packages.FocusedItem == null) { return; } var package = Packages.FocusedItem.Package(); BuildLog.SelectionLength = 0; BuildLog.Text = package.BuildLog; PackageTabs.SelectTab(BuildLogTab); BuildLogTab.Text = package.Name; }
private void Execute(Package package, string target) { var msbuildTarget = package.GetTarget(target); BuildLog.Text = string.Empty; PackageTabs.SelectTab(BuildLogTab); BuildLogTab.Text = package.Name; var deploymentFolder = Path.Combine( Path.GetDirectoryName(package.MSBuildPath) ?? throw new InvalidOperationException("Could not get MSBuildPath directory name."), "deployment"); if (Directory.Exists(deploymentFolder)) { Directory.Delete(deploymentFolder, true); } var outputFolder = Path.Combine( Path.GetDirectoryName(package.ProjectPath) ?? throw new InvalidOperationException("Could not get ProjectPath directory name."), "bin"); if (Directory.Exists(outputFolder)) { Directory.Delete(outputFolder, true); } Restore(package); LogMessage("[build]"); LogMessage(""); var process = new Process { StartInfo = new ProcessStartInfo { WorkingDirectory = Path.GetDirectoryName(package.MSBuildPath), Arguments = Path.GetFileName(package.MSBuildPath) + $" /p:SemanticVersion={package.BuildVersion.Formatted()}" + (!string.IsNullOrEmpty(msbuildTarget) ? $" /t:{msbuildTarget}" : string.Empty), FileName = _msbuildPath, CreateNoWindow = true, RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false }, EnableRaisingEvents = true }; process.OutputDataReceived += (sender, args) => { if (IsDisposed) { return; } BeginInvoke(new Action(() => { LogMessage(args.Data); })); }; process.Start(); process.BeginOutputReadLine(); while (!process.HasExited) { Application.DoEvents(); } process.CancelOutputRead(); package.CaptureBuildLog(BuildLog.Text); }