コード例 #1
0
        private Microsoft.Build.Execution.BuildResult BuildWithManagedApi(ILogger logger, string projectFilePath)
        {
            var consoleLogger    = new MsBuildConsoleLogger(logger);
            var globalProperties = new Dictionary <string, string>();
            var buildRequest     = new BuildRequestData(projectFilePath, globalProperties, null, new[] { "Build" }, null);
            var buildParameters  = new BuildParameters(new ProjectCollection())
            {
                DetailedSummary = false,
                Loggers         = new Microsoft.Build.Framework.ILogger[] { consoleLogger }
            };

            return(BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest));
        }
コード例 #2
0
        public BuildResult Build(GenerateResult generateResult, ILogger logger)
        {
            lock (buildLock)
            {
                var projectFileName  = Path.Combine(generateResult.DirectoryPath, ClassicGenerator.MainClassName + ".csproj");
                var exeFileName      = Path.Combine(generateResult.DirectoryPath, ClassicGenerator.MainClassName + ".exe");
                var consoleLogger    = new MsBuildConsoleLogger(logger);
                var globalProperties = new Dictionary <string, string>();
                var buildRequest     = new BuildRequestData(projectFileName, globalProperties, null, new[] { "Build" }, null);
                var buildParameters  = new BuildParameters(new ProjectCollection())
                {
                    DetailedSummary = false, Loggers = new Microsoft.Build.Framework.ILogger[] { consoleLogger }
                };
                var buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest);

                if (buildResult.OverallResult != BuildResultCode.Success && !File.Exists(exeFileName))
                {
                    logger.WriteLineInfo("BuildManager.DefaultBuildManager can't build this project. =(");
                    logger.WriteLineInfo("Let's try to build it via BuildBenchmark.bat!");
                    var buildProcess = new Process
                    {
                        StartInfo =
                        {
                            FileName               = Path.Combine(generateResult.DirectoryPath, "BuildBenchmark.bat"),
                            WorkingDirectory       = generateResult.DirectoryPath,
                            UseShellExecute        = false,
                            RedirectStandardOutput = false,
                        }
                    };
                    buildProcess.Start();
                    buildProcess.WaitForExit();
                    if (File.Exists(exeFileName))
                    {
                        return(new BuildResult(generateResult, true, null));
                    }
                }

                return(new BuildResult(generateResult, buildResult.OverallResult == BuildResultCode.Success, buildResult.Exception));
            }
        }