以编程方式构建项目

2023-11-28

我需要以编程方式为我正在动态创建的 .csproj 构建一个项目。 在搜索 Google 时,我发现了 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 = "";
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式构建项目 的相关文章

随机推荐

  • 在 Windows 上使用 pip 安装 zbar 失败

    我正在尝试安装zbar在我的 Windows x64 机器上 pip install zbar 这就是我得到的 Collecting zbar Using cached zbar 0 10 tar bz2 Installing collec
  • 如何使用坐标将标记移动 100 米

    我有2个坐标 坐标1是一个 人 坐标2是目的地 如何将坐标 1 移近 100 米以靠近坐标 2 这将在 cron 作业中使用 因此仅包含 php 和 mysql 例如 此人位于 51 26667 3 45417 目的地是 51 575001
  • 如何获取Vine视频地址

    I love vinepeek并想让事情变得更好 我有 Vine 链接 例如http vine co v bJqWrOHjMmU 但是这是页面链接 而不是视频 URL 我知道它是新的 但是 Vine 有 API 或者我怎样才能获取视频的 u
  • 为什么 java.util.Observable 不是抽象类?

    我刚刚注意到 java util Observable 是一个具体的类 由于 Observable 的目的是扩展 这对我来说似乎很奇怪 这样做有什么原因吗 I found 本文上面说 observable 是一个具体的类 因此必须预先确定从
  • 为什么 ftell( stdin ) 会导致非法查找错误

    以下代码输出 非法查找 include
  • Node Js 上的 Axios 不会保留请求服务器上的会话,而 PostMan 会保留

    我可以在 PostMan 上执行以下操作 1 POST方法登录公司服务器 2 以登录用户的身份在公司服务器上发出其他请求 我创建了一个nodejs应用程序来与公司服务器进行通信 我正在使用 axios 库进行上述通信 登录公司服务器后 任何
  • 使用 python xlib 全局捕获、忽略和发送按键事件,识别虚假输入

    我想在普通键盘上实现按键和弦 我想我使用 python xlib 为此 程序必须全局吞下所有关键事件 然后才允许它们通过 我当前的测试只是抓住 1 键 如果按下此键 它将调用一个处理程序 该处理程序通过 xtest fake input 将
  • OpenCV Python 中与多个对象的模板匹配

    我正在尝试使用 opencv python 在图像中查找多个模板 根据这个链接 但问题是 为单个对象返回多个位置略有不同的点 像这样的东西 我不想用cv2 minMaxLoc 因为图像中有多个模板 我写了一个删除平仓头寸的函数 但我想知道这
  • Silverlight 4 - 将 UIElement 渲染为图像

    我有一个UIElement我想捕获用户单击按钮时的快照 当用户单击按钮时 我想采取UIElement并将其当前状态加载到 Image 元素中 我如何渲染UIElement as an Image 假设FrameworkElement你想要渲
  • Smarty 基准测试,有人吗?

    我正在考虑将 Smarty 作为我的 Web 应用程序模板解决方案 现在我担心它相对于普通 PHP 的性能 Smarty 网站说它应该是相同的 但是 我找不到任何人进行真正的基准测试来证明该声明是对还是错 有人做过 Smarty 与普通 P
  • MSVC 大括号初始化与双打似乎违反了标准?

    看看这个简单的程序 int main float f2 7 2 OK with warning float f3 7 199999809265137 OK no warning float f4 7 2 Fails float f5 7 1
  • jQuery ui datepicker向下滚动网页时定位问题

    我有一个使用 jQuery ui 日期选择器的多个实例的网页 我的网页将显示约 80 条记录 这超出了单个屏幕截图的范围 div class recordname div lt additional html here gt 我已将日期选择
  • Android 10:通过 MediaStore 获取带有位置信息的图库

    查看 Android 10 中引入的存储访问更改here 现在默认编辑位置信息 Google 要求我们致电setRequireOriginal 在 MediaStore 对象上 以媒体的 uri 作为参数 当您一张一张地获取媒体时 这是可行
  • 如何每2分钟调用一次函数

    如何在 AngularJS 中每两分钟调用一次保存函数 请帮我 scope save function http url api products method POST data scope product success functio
  • Javascript/HTML5:获取音频标签的当前时间

    我的模板中有一个音频标签 我需要在单击按钮时显示它的当前时间 请检查我下面的代码 var myaudio document getElementsByTagName audio 0 var cur time myaudio currentT
  • 使用BluetoothChat与ELM327通信

    我目前正在尝试通过 BluetoothChat 示例应用程序与 ELM327 OBDII 蓝牙适配器进行通信 我可以连接 因为我更改了 UUID 但是我只能接收启动命令和提示 gt 来发送命令 每当我尝试发送命令时 我都会收到以下信息 CA
  • 为什么 in_array() 返回意外/奇怪的结果?

    Why is in array 有时行为如此奇怪并返回如此意想不到的结果 让我们看几个例子 arrayWithTrue Andreas Philipp true arrayWithNull 1 2 3 null arrayWithMinus
  • 如何签署 JWT 以从 Azure Active Directory 交换访问令牌?

    我正在用nodejs编码 我指的是这个文档 https learn microsoft com en us azure active directory develop v1 oauth2 client creds grant flow s
  • Xcode 中的优化级别

    我用谷歌搜索了这个问题以澄清一些基本概念 但没有找到合适的答案 在 Swift 编译器和 Apple LLVM Objective C 的 Xcode 构建设置中 有多少个优化级别可用于代码生成 Swift 提供了四种不同的优化级别 Ono
  • 以编程方式构建项目

    我需要以编程方式为我正在动态创建的 csproj 构建一个项目 在搜索 Google 时 我发现了 MS 为 MSBuild 引擎提供的类和 API 有了这些信息 我创建了一个执行 msbuild exe 的进程 然后读取输出 但现在我想使