Compilar desde una aplicacion Web utilizando API build tools

Referencias que se necesitan:
Microsoft.Build
Microsoft.Build.Engine
Microsoft.Build.Framework

Estas dll's se encuentran en C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\

si no aparecen, instalarlos asi:
vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

o bajarlo de aca: https://www.visualstudio.com/es/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15


using System.Collections.Generic;
using Microsoft.Build.Evaluation;
using Microsoft.Build.Execution;
using System.IO;
using Microsoft.Build.Framework;

            var exitcode = 0;

            string projectFileName = @"C:\crusso\X\fuentes\Desarrollo\WebCreditos\WebCreditos.sln";
            ProjectCollection pc = new ProjectCollection();
            Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();
            GlobalProperty.Add("Configuration", "Release");
            GlobalProperty.Add("Platform", "Any CPU");
            GlobalProperty.Add("OutputPath", Directory.GetCurrentDirectory() + "\\deploy");

            Microsoft.Build.BuildEngine.FileLogger fl = new Microsoft.Build.BuildEngine.FileLogger() { Parameters = @"logfile=c:\temp\log.txt" };

            BuildParameters bp = new BuildParameters(pc);
           
            bp.Loggers = new[] {
                                  new Microsoft.Build.BuildEngine.FileLogger
                                  {
                                    Verbosity = LoggerVerbosity.Normal,
                                    ShowSummary = true,
                                    SkipProjectStartedText = true,
                                    Parameters = @"logfile=c:\temp\log.txt"
                                  }
                                };
           
            BuildManager.DefaultBuildManager.BeginBuild(bp);
            BuildRequestData BuildRequest = new BuildRequestData(projectFileName, GlobalProperty, null, new string[] { "Build" }, null);
            BuildSubmission BuildSubmission = BuildManager.DefaultBuildManager.PendBuildRequest(BuildRequest);
            BuildSubmission.Execute();
            BuildManager.DefaultBuildManager.EndBuild();

            if (BuildSubmission.BuildResult.OverallResult == BuildResultCode.Failure)
            {
                exitcode = 1; //error
                //throw new Exception();
            }
            else
                exitcode = 0;

            return exitcode

No hay comentarios:

Publicar un comentario