protected bool BuildProjectWithProperties(string projectFilepath, Dictionary <string, string> globalProperties) { try { var logmsg = new StringBuilder(); logmsg.AppendLine(string.Format(@"Building the project [{0}] with the following properties.", projectFilepath)); foreach (var key in globalProperties.Keys) { logmsg.AppendLine(string.Format(@" ['{0}'='{1}']", key, globalProperties[key])); } System.Diagnostics.Trace.TraceInformation(logmsg.ToString()); var pc = new ProjectCollection(globalProperties); var logger = new InmemoryMsbuildLogger(); logger.Verbosity = Microsoft.Build.Framework.LoggerVerbosity.Detailed; pc.RegisterLogger(logger); var project = pc.LoadProject(projectFilepath); var projectInstance = project.CreateProjectInstance(); string[] targets = new string[] { "BuildStandAlone" }; var buildReqData = new BuildRequestData(projectInstance, targets, null, BuildRequestDataFlags.ProvideProjectStateAfterBuild); var buildResult = BuildManager.DefaultBuildManager.Build( new BuildParameters(pc), buildReqData); // TODO: the log does not have much data string log = logger.GetLog(); return(buildResult.OverallResult == BuildResultCode.Success); } catch (Exception ex) { string message = string.Format("Unable to build templates from folder", ex.ToString()); System.Windows.MessageBox.Show(message); throw ex; } }
protected bool BuildProjectWithProperties(string projectFilepath,Dictionary<string,string>globalProperties) { try { var logmsg = new StringBuilder(); logmsg.AppendLine(string.Format(@"Building the project [{0}] with the following properties.", projectFilepath)); foreach (var key in globalProperties.Keys) { logmsg.AppendLine(string.Format(@" ['{0}'='{1}']", key, globalProperties[key])); } System.Diagnostics.Trace.TraceInformation(logmsg.ToString()); var pc = new ProjectCollection(globalProperties); var logger = new InmemoryMsbuildLogger(); logger.Verbosity = Microsoft.Build.Framework.LoggerVerbosity.Detailed; pc.RegisterLogger(logger); var project = pc.LoadProject(projectFilepath); var projectInstance = project.CreateProjectInstance(); string[] targets = new string[] { "BuildStandAlone" }; var buildReqData = new BuildRequestData(projectInstance, targets, null, BuildRequestDataFlags.ProvideProjectStateAfterBuild); var buildResult = BuildManager.DefaultBuildManager.Build( new BuildParameters(pc), buildReqData); // TODO: the log does not have much data string log = logger.GetLog(); return (buildResult.OverallResult == BuildResultCode.Success); } catch (Exception ex) { string message = string.Format("Unable to build templates from folder", ex.ToString()); System.Windows.MessageBox.Show(message); throw ex; } }