【问题标题】:Running MSBUILD through code and getting asynchronous progress通过代码运行 MSBUILD 并获得异步进度
【发布时间】:2012-08-12 09:33:44
【问题描述】:

我想通过代码运行 MSBUILD,并在构建过程中获取构建的异步状态(类似于 TeamCity 或任何其他构建运行程序)。

我正在使用以下代码:

var projectFileName = @"...\MyApplication\MyApplication.sln";
ProjectCollection pc = new ProjectCollection();
var GlobalProperty = new Dictionary<string, string>();
GlobalProperty.Add("Configuration", "Debug");
GlobalProperty.Add("Platform", "x86");

var buildRequest = new BuildRequestData(projectFileName, GlobalProperty, null, new string[] { "Build" }, null);

var buildResult = BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), buildRequest);

有没有办法通过代码获取当前正在执行的MSBUILD任务?

【问题讨论】:

    标签: c# msbuild continuous-integration


    【解决方案1】:

    您必须异步调用 build 并在循环中测试 iscomplete,您可以在其中进行进度跟踪:。

    private void button1_Click(object sender, EventArgs e)
        {
            var projectFileName = @"...\MyApplication\MyApplication.sln";   
           ProjectCollection pc = new ProjectCollection(); 
           var GlobalProperty = new Dictionary<string, string>(); 
           GlobalProperty.Add("Configuration", "Debug"); 
           GlobalProperty.Add("Platform", "x86");
           BuildManager.DefaultBuildManager.BeginBuild(new BuildParameters(pc));
           BuildRequestData request = new BuildRequestData(projectFileName, GlobalProperty, null, new string[] { "Build" }, null); 
           BuildSubmission submission = BuildManager.DefaultBuildManager.PendBuildRequest(request); 
            submission.ExecuteAsync(null, null);
            int cpt = 0;
            while (!submission.IsCompleted)
            {
                cpt++;
                textBox1.Text = cpt.ToString();
            }
    
    
            BuildManager.DefaultBuildManager.EndBuild();   
            // If the build failed, return an error string.    
            if (submission.BuildResult.OverallResult == BuildResultCode.Failure)      
            {                 //do some error task           
            } 
        }
    

    【讨论】:

    • 我实际上是在考虑设置一个 MSBUILD 日志提供程序并观察它以构建完整的消息?
    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多