Example #1
0
        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;
        }
Example #2
0
        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);
        }