c# - 以编程方式构建项目

标签 c# msbuild

我需要以编程方式为动态创建的 .csproj 构建项目。 在谷歌搜索时,我发现了 MS 为 MSBuild 引擎提供的类和 API。有了这些信息,我创建了一个执行 msbuild.exe 然后读取输出的进程,但现在我想使用命名空间 Microsoft.Build.Execution 来构建项目。这是我的程序:

public class Compiler
{
   private static string locationOfMSBuilldEXE = "";
   public static void Build(string msbuildFileName)
   {
       BuildManager manager = BuildManager.DefaultBuildManager;

       ProjectInstance projectInstance = new ProjectInstance(msbuildFileName);
       var result = manager.Build(new BuildParameters() 
                {
                    DetailedSummary = true
                }, 
                new BuildRequestData(projectInstance, new string[] { "Build" }));
       var buildResult = result.ResultsByTarget["Build"];
       var buildResultItems = buildResult.Items;

       string s = "";
   }
}

结果显示构建正常,但我需要知道编译的详细输出以及如何查看它。如果有人能给我链接到一个很好的教程或一本关于 MSBuild 的书,那将非常有帮助。

最佳答案

感谢@ritchmelton。虽然我自己想通了。 这是我的代码:我使用了内置记录器 ConsoleLogger

public class Compiler
    {
        private static string locationOfMSBuilldEXE = "";
        public static void Build(string msbuildFileName)
        {
            ConsoleLogger logger = new ConsoleLogger(LoggerVerbosity.Normal);
            BuildManager manager = BuildManager.DefaultBuildManager;

            ProjectInstance projectInstance = new ProjectInstance(msbuildFileName);
            var result = manager.Build(
                new BuildParameters() 
                {
                    DetailedSummary = true,
                    Loggers = new List<ILogger>(){logger}
                }, 
                new BuildRequestData(projectInstance, new string[] { "Build" }));
            var buildResult = result.ResultsByTarget["Build"];
            var buildResultItems = buildResult.Items;

            string s = "";
        }
    }

关于c# - 以编程方式构建项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942499/

相关文章:

delphi - MSBuild 和多个 Delphi 版本

c# - Docker:dotnet ef数据库更新失败

c# - UWP 编译绑定(bind) x :Bind produces memory leaks

c# - 如何将 exe 文件作为先决条件添加到 .net 安装程序中

visual-studio - NuGet 不会在构建时恢复包

msbuild - Visual Studio 2017 和新的 .csproj InternalsVisibleTo

用于跳过目录的 MSbuild 命令行参数

visual-studio-2008 - Team Foundation Build 在平面目录结构中下降

c# - 所有 .NET 程序集在 Windows Server 上运行都非常慢

Node.js 中 C# 的 RSAPKCS1SignatureDeformatter 等效项