How do I build a solution programmatically in C#?

前端 未结 7 1915
日久生厌
日久生厌 2020-12-02 14:46

How do I build a C# solution programmatically?

I should be able to pass the path of a solution and get the output messages (or just build the solution). How do I ach

相关标签:
7条回答
  • 2020-12-02 15:22

    See .NET 4.0 MSBuild API introduction for an example using the .NET 4.0 MSBuild API:

    List<ILogger> loggers = new List<ILogger>();
    loggers.Add(new ConsoleLogger());
    var projectCollection = new ProjectCollection();
    projectCollection.RegisterLoggers(loggers);
    var project = projectCollection.LoadProject(buildFileUri); // Needs a reference to System.Xml
    try
    {
        project.Build();
    }
    finally
    {
        projectCollection.UnregisterAllLoggers();
    }
    

    A simpler example:

    var project = new Project(buildFileUri, null, "4.0");
    var ok = project.Build(); // Or project.Build(targets, loggers)
    return ok;
    

    Remember to use the .NET 4 Profile (not the Client profile).

    Add the following references: System.XML, Microsoft.Build, Microsoft.Build.Framework, and optionally Microsoft.Build.Utilities.v4.0.

    Also look at Stack Overflow question Running MSBuild programmatically.

    To build a solution, do the following:

    var props = new Dictionary<string, string>();
    props["Configuration"] = "Release";
    var request = new BuildRequestData(buildFileUri, props, null, new string[] { "Build" }, null);
    var parms = new BuildParameters();
    // parms.Loggers = ...;
    
    var result = BuildManager.DefaultBuildManager.Build(parms, request);
    return result.OverallResult == BuildResultCode.Success;
    
    0 讨论(0)
提交回复
热议问题