尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
MSBuild 在 .NET Core 上的构建、测试与调试实战指南
构建工具开发工具CLI【免费下载链接】msbuildThe Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.项目地址https://gitcode.com/gh_mirrors/ms/msbuild点击查看免费下载本指南以 documentation/wiki/Building-Testing-and-Debugging-on-.Net-Core-MSBuild.md 为主体系统讲解如何在 Windows 与 Unix 平台上从源码构建 .NET Core 版 MSBuild、运行单元测试、在不编译源码的情况下获取官方二进制以及利用MSBUILDDEBUGONSTART系列环境变量对 MSBuild 主进程、TaskHost 子进程和 MSBuild Server 进行断点调试。阅读本文后你将掌握build.cmd/build.sh的正确用法、-msbuildEngine参数的作用、仓库内测试的组织方式以及一套可直接照抄的调试工作流。支持平台与前置条件官方 wiki 记载MSBuild 可在Windows、OS X 10.13、Ubuntu 14.04 与 Ubuntu 16.04上成功构建。注意当前仓库根目录的 global.json 已固定要求sdk.version 11.0.100-rc.1.26420.103同时允许预发布版本并声明tools.dotnet使用同一版本、tools.vs指向 Visual Studio 18.6测试运行器为Microsoft.Testing.Platform。因此在动手前请确保本机 .NET SDK 版本满足 global.json 的要求否则构建脚本会提示 The .NET SDK could not be found, please run a command-line build with ./build.cmd。Windows 上构建 .NET Core 版 MSBuild使用 dotnet 引擎构建在 Windows 上构建 .NET Core 版 MSBuild 的命令是build.cmd -msbuildEngine dotnet-msbuildEngine用于指定以哪一套引擎来驱动构建流程。从 eng/build.ps1 的实现看该参数有两个取值dotnet使用引导bootstrap产出的core\dotnet.exe msbuild作为构建工具vs使用引导产出的net472\MSBuild\Current\Bin\MSBuild.exe即 .NET Framework 版 MSBuild。若调用时未显式指定该参数脚本会读取 global.json存在tools.vs则默认vs否则回退到tools.dotnet两者都没有时直接报错退出。build.cmd 背后的调用链build.cmd 本身是一个薄包装它实际调用的是powershell -ExecutionPolicy ByPass -NoProfile -Command %~dp0eng\build.ps1 -restore -build即先执行 restore 再执行 build。值得注意的一个细节是build.cmd 开头会检查MSBUILDDEBUGONSTART环境变量——只要它被设置且非 0脚本就会将其清除并提示改用MSBUILDDEBUGONSTART_HARD。这是因为 MSBuild 的构建流程本身也会读取MSBUILDDEBUGONSTART为避免构建时意外弹出调试器普通构建会主动屏蔽它如果你确实要调试构建过程本身应改用MSBUILDDEBUGONSTART_HARD。eng/build.ps1 还暴露了更多开关-configuration/-c默认Debug、-verbosity/-v、-test/-t、-ci、-binaryLog/-bl、-binaryLogName、-excludeCIBinarylog/-nobl、-stage2与-stage2Argument未声明参数会原样转发给 Arcade 构建。在调试构建stage 2之前脚本还会设置MSBUILDDONOTLAUNCHDEBUGGERtrue确保调试位debug bits快速失败而不是挂起等待调试器附着。Unix 上构建 .NET Core 版 MSBuild最简单的方式直接安装最新版 .NET SDK可从官方下载页获取。安装最新 SDK 即可满足本仓库构建所需的全部前置条件无需再手动装其他依赖。手动安装依赖包OS X 与 Ubuntu若选择手动配置环境请参考 .NET Core 官方前置条件文档并特别注意OpenSSLMSBuild 在构建过程中会调用 .NET CLI而 CLI 需要/usr/lib中存在较新版本的 OpenSSL 库OS X 上可用 brew 安装brew install opensslUbuntu 上可用 apt-get 安装apt-get install openssl也可以选择从源码编译安装。如果使用的是其他包管理器且构建时出现Unable to load DLL System.Security.Cryptography.Native错误通常说明dotnet在错误的路径下查找该库——请检查 OpenSSL 是否安装到了/usr/lib下。构建命令./build.shbuild.sh 同样是薄包装它执行的是eng/build.sh --restore --build $。若构建过程中遇到问题可参考仓库 wiki 中名为Somethings wrong in my build的排查文档。常用参数eng/build.sh 支持以下参数大小写不敏感解析参数简写说明--configuration-c构建配置默认Debug--test-t构建后运行仓库内全部测试--ci—CI 模式--binaryLog-bl生成二进制日志--excludeCIBinarylog-nobl排除 CI 二进制日志--stage2/--stage2Argument—触发多阶段stage1 stage2构建其余未知参数会作为属性原样转发给 Arcade 构建脚本。运行单元测试Unix一条命令跑全部测试./build.sh --test该命令会构建仓库并运行全部测试。Windows按测试项目逐个运行官方文档给出的命令行测试流程如下先完成一次完整构建再进入目标测试项目目录最后用过滤器运行单个测试build.cmd :: 先完整构建 cd src\Build.UnitTests :: 进入包含测试 csproj 的目录按实际项目调整 dotnet test --filter FullyQualifiedName~TESTNAME :: 运行单个测试--filter FullyQualifiedName~TESTNAME采用模糊匹配~表示包含关系TESTNAME可替换为具体的测试方法名或类名片段。仓库中可选的测试项目包括src/Build.UnitTests、src/Build.OM.UnitTests、src/Framework.UnitTests、src/Tasks.UnitTests、src/MSBuild.UnitTests、src/BuildCheck.UnitTests、src/Utilities.UnitTests等。在 Visual Studio 中运行测试先在Developer Command Prompt for VS 2026或把devenv加入PATH中执行build.cmd :: 先完整构建 devenv MSBuild.slnx然后使用测试资源管理器Test Explorer运行测试。需要注意Visual Studio 中必须勾选Use previews of the .NET SDK (requires restart)使用 .NET SDK 预览版需要重启否则可能因 SDK 版本不匹配而无法加载测试项目。单元测试在 Windows 上的运行细节含远程测试环境可参考 .NET Framework 开发指南的 Running Unit Tests 一节build.cmd -test可构建并运行全部测试部分测试会创建符号链接需要开启 Windows 开发者模式或以管理员身份运行若要模拟 CI可执行build.cmd -pack -sign -publish -ci。如上图所示通过仓库根目录的 testenvironments.json 已预置 WSL 与 Linux Docker 两种远程测试环境在测试资源管理器中可直接选择使用。不编译源码直接获取 .NET Core MSBuild如果只是想使用 .NET Core 版 MSBuild 而无需修改源码最直接的方式是安装 .NET Core SDK——MSBuild 随 SDK 一起分发。安装后有两种使用方式通过dotnet build命令间接调用手动调用 dotnet 发行目录中的MSBuild.dlldotnet path\to\MSBuild.dll yourproject.proj这样拿到的即是最新发布的 .NET Core 版 MSBuild。调试 MSBuild利用仓库二进制进行构建要使用仓库刚构建出的二进制来构建其他项目需要先产生 bootstrap 目录默认构建流程即会生成。在 Windows 上可把artifacts\bin\bootstrap\net472\MSBuild\Current\Bin\MSBuild.exe指向目标项目文件在 .NET Core 引擎下引导产物则是artifacts\bin\bootstrap\core\dotnet.exe见 eng/build.ps1。如需将本地构建产物覆盖到 Visual Studio 的 MSBuild 目录以做联调可使用 scripts/Deploy-MSBuild.ps1。启动断点MSBUILDDEBUGONSTART设置环境变量MSBUILDDEBUGONSTART可以控制 MSBuild 启动时的调试器行为取值含义如下取值行为1对所有进程启动调试器包括主 MSBuild 进程与 TaskHost 子进程2对所有进程等待手动附加调试器3仅对主 MSBuild 进程启动调试器跳过 TaskHost 子进程例如设置MSBUILDDEBUGONSTART2进程启动后会打印等待信息并阻塞在Console.ReadLine()上此时手动将调试器附加到对应进程 ID 即可。从源码可以印证其实现src/MSBuild/XMake.cs 中的DebuggerLaunchCheck()对MSBUILDDEBUGONSTART做 switch 分发——1以及服务端节点下的4调用Debugger.Launch()3会先判断FrameworkDebugUtils.IsInTaskHostNode()在 TaskHost 子进程中直接跳过2打印 Waiting for debugger to attach (... PID ...) 并等待回车。与之对应TaskHost 侧的实现位于 src/MSBuildTaskHost/OutOfProcTaskHost.cs。另外注意1、3依赖Debugger.Launch()仅 Windows 可用而2的等待附加方式在 Windows 与非 Windows 平台都可用参见 MSBuild-Environment-Variables.md。调试 MSBuild Server启用 Server 模式后可使用另外两个取值MSBUILDDEBUGONSTART4在 Server 中启动调试器Windows与5等待手动附加。这两个模式会跳过转发客户端forwarding client和其他子节点并在连接建立之后、求值evaluation开始之前暂停——无论是新建还是复用的 Server 均适用。在 PowerShell 中的完整示例$env:MSBUILDUSESERVER 1 $env:MSBUILDDEBUGONSTART 5 dotnet msbuild .\project.proj流程说明附加到终端中打印的 Server PID 并恢复执行与模式2不同模式5不需要按回车键——因为客户端已连接、Server 的输出已被重定向它无法读取客户端的 stdin所以实现上改为轮询Debugger.IsAttached见 XMake.cs无需修改连接或握手逻辑因为客户端已经处于连接状态既有的取消/回退行为保持不变若想放弃等待可手动恢复或停止 Server调试结束后记得取消设置MSBUILDDEBUGONSTART。需要说明的是模式4/5不覆盖 Server 的启动过程与握手阶段的调试。更多调试手段调试引擎内部设置MSBuildDebugEngine1可让 MSBuild 输出全部可能的调试日志如调度器状态、节点通信并会在BuildManager.BeginBuild处注入二进制日志对 Visual Studio 这类会过滤构建事件消息的宿主场景尤其有用日志默认输出到当前目录的MSBuild_Logs目录可用MSBUILDDEBUGPATH指定目录在 API 宿主内打断点设置MSBuildDebugBuildManagerOnStart1Debugger.Launch或2等待附加可在BuildManager.BeginBuild处中断适合调试通过 API 调用 MSBuild 的场景可用MSBuildDebugProcessName按进程名子串过滤触发断点的进程如设为devenv定向 dumpMSBUILDDEBUGSCHEDULER1配合MSBUILDDEBUGPATH可 dump 调度器状态MSBUILDDEBUGCOMM1可 dump 节点通信数据。以上断点与日志类环境变量的完整清单可参考 MSBuild-Environment-Variables.md更多针对 .NET Framework 版的调试选项见 Building-Testing-and-Debugging-on-Full-Framework-MSBuild.md。赞分享构建工具开发工具CLI【免费下载链接】msbuildThe Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.项目地址https://gitcode.com/gh_mirrors/ms/msbuild点击查看免费下载相关推荐MSBuild 在 Mono 平台上的构建、测试与调试指南历史方案详解MSBuild 在 Mono 平台上的构建、测试与调试指南历史方案详解 导读 本文讲解 MSBuild 在 Mono 运行时环境macOS 与 Linux构建工具开发工具CLIPGMQ 贡献者指南从源码安装、平台编译到测试与发布的全流程实战PGMQ 贡献者指南从源码安装、平台编译到测试与发布的全流程实战 PGMQPostgres Message Queue是一个构建在 PostgreSQL消息队列后端tf-quant-finance 现金流现值计算cashflows.present_value 函数全解析与实战tf quant finance 现金流现值计算 cashflows.present_value 函数全解析与实战 导读 本文聚焦 tf quant fina金融科技科学计算创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Universal ReVanced Manager APK工具箱合集:分拆合并、APK签名与Keystore管理

Universal ReVanced Manager APK工具箱合集:分拆合并、APK签名与Keystore管理

【免费下载链接】Universal-ReVanced-Manager 💊 Android manager for ReVanced and Morphe with third-party patch bundles, batch and automatic repatching, advanced installers, APK tools, and deep customization. 项目地址: https://gitcode.co…

📅 2026/10/12 16:14:28
MCP已死?Pi 1.0原生支持让协议重新落地

MCP已死?Pi 1.0原生支持让协议重新落地

MCP 已死的说法,从我这边看,已经吵了大半年。一边是各路自研Agent框架越做越重,什么编排层、记忆层、工具层全都要自己造;另一边是MCP协议还在不停迭代,版本之间甚至有不兼容的情况。说实话我一度也觉得,这…

📅 2026/10/12 16:14:28
Python问卷数据统计实战:pandas清洗与多选频次分析

Python问卷数据统计实战:pandas清洗与多选频次分析

简介:这是一份2024年发布的Python实现调查问卷数据统计资料包,面向数据分析初学者、产品运营及市场调研人员,也可用于课程设计或内部培训。内容围绕问卷数据的清洗、分类汇总、频次分析与可视化展示等常见环节展开,覆盖单选题、多…

📅 2026/10/12 16:09:28
MORE NEWS

更多资讯

📰

2026年FDE银行信贷审批 + 反洗钱智能体生产级落地方案:把settings改到TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Python网络舆情分析系统实战:从数据采集到情感可视化全链路

简介:这是一套面向高校计算机相关专业学生的网络舆情分析系统完整项目,可直接用于Python毕业设计或课程设计。项目采用Python 3.7/3.8开发,配合PyCharm、Navicat与MySQL数据库,前后端代码齐备,功能完善、界面美观、操作…

📰

手把手编写儿童手机远程监控App之MQTT嘟宝绑定流程:TaoToken统一Key接入与联调验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Python酒店评论情感分析:从TF-IDF到BERT的完整源码实战

简介:这是一份面向计算机相关专业学生与项目实战学习者的酒店评论情感分析完整项目包,由导师指导并通过评审,评审分98分,适合用作毕业设计、课程设计或期末大作业参考。资源共23个文件,压缩包约4.36MB,以14…

📰

从ANN.rar到可用预测模型:神经网络预测工程完整实操指南

简介:这是一份面向机器学习初学者的ANN预测分析示例,压缩包内包含一个完整的MATLAB程序文件(ANN.m),用于构建人工神经网络模型并执行数据预测。程序涵盖网络结构定义、训练参数设置、数据加载与预处理、反向传播训练及…

📰

从培训到赋能:AI落地项目的真实拆解与操作框架

我在多家公司带过 AI 落地项目,见过太多人花了大几千块钱报班、熬夜刷完几十节视频课,回到工位上第二天还是该怎么做就怎么做。问题不是他们不努力,而是他们把“培训”当成了“赋能”。这两个词看着像近义词,实际上一套是隔靴搔痒…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬