在 Visual Studio 中调试 MSBuild 脚本

解决Visual Studio中CMake安装目标报错error MSB3073的完整指南 在C++跨平台开发中,CMake作为主流的构建系统工具,通过生成统一的构建脚本(如Makefile或Visual Studio项目文件)来管理编译、链接和安装流程。其核心原理在于抽象平台差异,提供声明式的项目描述。CMake的install()命令是实现自动化部署的关键,它定义了编译产物的安装规则,对于持续集成和团队协作至关重要。然而,在Windows平台上结合Visual Studio使用时,构建后事件(Post-Build Event)的执行环境复杂性常引发问题,例如常见的error MSB3073: 阅读详情

原文地址: Debugging MSBuild script with Visual Studio

 

调试步骤

在开始之前,先打开 Visual Studio 的设定,确认 "Just My Code" 被勾上:

image

 

调试前准备

首先在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0 的位置下建立一个 debuggerenabled=true 的项目,这样能使 MSBuild.exe 支持 "/debug" 开关。 

下图示例在 Visual Studio 命令行中使用 reg.exe 来完成本步骤:

image

打开注册表确认项目被建立成功:

image

运行 MSBuild /? 你可以发现新的"/debug" 开关

image

 

现在我们可以开始调试了:

这里为了更直观的说明,将使用一个新建的 C# Windows Forms 工程,启动带 /debug 开关的MSBuild命令行,它会在执行一开始停下:

image

我这里会弹出一个对话框,选择 Yes:

image

 

然后 JIT debugging 对话框弹出,确认勾选了 "Manually choose the debugging engines"

image

然后选择需要调试的类型,一般只要选择 Managed 就行了。

image

现在开始调试咯~~

image

首先你会注意到我们正在第一个工程文件的最顶端,就像你使用 "F11" 调试一个常规的程序。此时 MSBuild 已经读入了系统变量以及初始设定:

image

按 F10 可进行单步调试:

image

每当你执行过一条属性设定,locals 窗口中会立即刷新:

image

image

试着在各个 Item 上使用 F9 来增加断点?抱歉, MSBuild 无法支持。(对于属性设定来说,MSBuild 只有走到该处才能识别,未走到的无法识别也就无法设定断点)

在 <Import> 上使用 F9 来增加断点,然后按 F5 执行到该语句

image

点击 F11,Visual Studio 自动切入到 <Import> 节点指向的文件,本例中该文件是: Microsoft.CSharp.targets

image

在 Callstack 窗口中显示了以上的调用跳转信息(与方法之间的调用非常相似哦):

image

当然本质上来说 <Import> 和 方法间的调用完全不同,它更类似于 C++ 中的 #include 机制: 只是把另一个文件中的内容插入进来。但是通常情况下不用在意这一点,善用Callstack 窗口,你能很容易地把握整个流程的调用关系。

在多个 <Import> 上添加断点,然后点击 F11 调试,Callstack 窗口会变成以下的样子

image

 

仔细看下 locals 窗口,您能看到属性及其 metadata 信息。这里有一个小bug(红字部分),无视它,展开 "Non-public members" 节点可以看到所有变量名及值:

image

image

有时候你想确认某个条件是否成立,你可以在 immediate 窗口中使用 EvaluateCondition 方法来实现:

image

如果你希望获得某个表达式的值,只需改为使用 EvaluateExpression 方法:

image

这个方法不需要切到 locals 窗口就能非常简便的察看属性值,但是需要注意下特殊字符。

 

Autos 窗口无法工作,但是 Watch 窗口是可以正常工作的。

image

 

在 Immediate 窗口中你可以改变几乎任何的状态变量。例如: 变更一下属性值

image

你能够通过这种方法完成很多工作,打开 Watch 窗口属性变量已经被更新了:

image

 

 

UE5在Visual Studio升级后C++编译失败的系统性排查与修复指南 C++项目构建依赖于编译器、链接器、标准库和平台SDK等工具链的精确匹配。当开发环境升级,尤其是Visual Studio版本更新时,新引入的MSVC编译器版本、Windows SDK或运行时库可能与现有项目产生兼容性问题,导致链接错误或头文件缺失。这种环境错配在大型工程如虚幻引擎5(UE5)开发中尤为突出,直接影响开发迭代效率。理解构建系统的耦合原理,掌握从环境变量、平台工具集到第三方库依赖的逐层排查方法,是解决此类编译问题的关键。本文以UE5开发中常见的LNK2038运行时库不匹配和C1083头文件缺失 阅读详情

相关推荐

Unity与Visual Studio深度关联配置原理与实战

Unity C#开发中,Visual Studio并非简单外部编辑器,而是通过.csproj生成、MSBuild编译链路和VSTU插件协同构成的集成调试环境。其核心在于Unity自动生成的项目文件与VS对UnityProjectType等契约字段的识别,决定智能提示、F12跳转、断点调试等关键能力是否生效。技术价值体现在提升代码可维护性、加速错误定位、支撑Editor脚本与运行时协同调试。典型应用场景包括新人环境搭建、CI/CD构建稳定性保障、Unity LTS版本长期维护及多团队Git协作中的.cspro

weixin_30363509的博客 567

不容错过的MSBuild技巧,必备用法详解和实践指南

MSBuild是一种基于XML的构建引擎,用于在.NET Framework和.NET Core应用程序中自动化构建过程。它是Visual Studio的构建引擎,可在命令行或其他构建工具中使用。

pantouyuchiyu的博客 2452

Fluent UDF编译环境配置 VS2019

本文详细指导如何在Windows系统下为Fluent UDF配置Visual Studio 2019编译环境。核心在于通过vcvarsall.bat脚本精准获取并设置INCLUDE、LIB和PATH环境变量,确保Fluent能正确调用C语言编译器。文章提供了从环境准备、变量设置到编译验证的完整步骤,并总结了常见错误解决方案,帮助用户彻底解决UDF编译难题,实现自定义仿真功能。

weixin_28826545的博客 379

Jenkins(三)——MSBuild

MSBuild是什么      MSBuild是Microsoft Build Engine 的缩写,代表 Microsoft 和 Visual Studio 的新的生成平台。MSBuild 在如何处理和生成软件方面是完全透明的,使开发人员能够在未安装 Visual Studio 的生成实验室环境中组织和生成产品。     我们在构建jenkins的时候,会有一步操作是配置MSBuil

遇见未来的自己 2426

Delphi 13 Beta初体验:手把手教你安装RAD Studio Ganymede,并实测新条件运算符

本文详细介绍了Delphi 13 Beta(代号Ganymede)的安装步骤和新特性,重点解析了新增的条件运算符语法。通过实测对比,展示了64位IDE的性能提升和新语法在代码简洁性上的优势,为开发者提供了从安装到实战的完整指南。

weixin_30399821的博客 201

基于phpstudy搭建pikachu靶场

一、phpstudy下载安装配置 phpstudy介绍 简单介绍一下phpstudy,详细请参考百度解读。pikachu是基于PHP环境搭建的,需要数据库支持,所以装pikachu之前需要先安装它需要的环境,就像你养鱼需要给它提供水环境一样。安装phpstudy能满足pikachu的需求,所以先安装phpstudy。 phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是

ptxybird的博客 1万+

记录一下VS MSBuild自动编译脚本编写实例

Visual Studio的IDE太占资源,可以改为命令行编译、还能实现自动化: 下面是kaldi-windows下的编译脚本: @echo off call "E:\Visual Studio 2015 Enterprise\Common7\Tools\VsDevCmd.bat" echo "building openfstwin-1.3.4...." MSBuild tool

我的代码管家---houwenbin的专栏 6113

保姆级教程:手把手教你从NASA Earthdata下载ASTER L2地表温度数据(附shp文件拖拽技巧)

本文提供了一份详细的NASA Earthdata平台ASTER L2地表温度数据下载教程,涵盖账号注册、数据筛选、shp文件拖拽技巧及质量检查等关键步骤。特别适合遥感领域初学者,帮助快速掌握高效获取ASTER L2T数据的方法,适用于城市热岛效应和农业监测等研究。

weixin_30736301的博客 468

Visual Studio项目生成引擎-MSBuild构建工具笔记精要

MSBuild构建工具笔记精要

morliz的博客 1956

LightTools中VBA宏的编写入门

LightTools和VBA联动

bestgamer的博客 2346

数据助力行业发展:BJTU-RAO转向架数据集介绍

BJTU-RAO转向架数据集是完全公开的,何研究人员皆可以通过后文的下载链接免费下载数据,且在标注数据来源的前提下,研究人员可以自由使用BJTU-RAO转向架数据集。因此,聚焦各类列车转向架传动系统在途安全保障新技术研究和新算法开发,实现牵引电机、驱动齿轮箱和轴箱等关键部件的实时状态监测与智能故障诊断,对保障列车安全可靠运行具有重要的现实意义。BJTU-RAO转向架数据集包含51种健康状态的样本,涵盖正常状态、部件级单一故障、部件级复合故障以及系统级关联复合故障,数据量达116GB。

2401_88870554的博客 3497

Visual Studio中Linux MSBuild C++项目的部署、运行与调试指南

在跨平台开发日益普及的今天,使用Visual Studio进行Linux C++开发已成为许多开发者的选择。本文将详细介绍如何在Visual Studio中配置、部署、运行和调试基于MSBuild的Linux C++项目,帮助开发者高效完成Linux环境下的C++开发工作。 ## 环境准备 在开始之前,请确保已完成以下准备工作: - 已安装Visual Studio 2017或更高版本 - 已...

gitblog_00658的博客 504

华为OD机考双机位C卷 - 员工派遣 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 员工派遣 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1032

Debugging MSBuild in .net 4.0

共3篇。对于用MSBuild的朋友来说,这可真算是噩梦终结者了。 http://blogs.msdn.com/b/visualstudio/archive/2010/07/06/debugging-msbuild-script-with-visual-studio.aspx 转载于:https://www.cnblogs.com/fanweixiao/archive/2010/07/12/177...

weixin_30314793的博客 122

半导体工艺仿真:离子注入工艺仿真_(8).损伤和缺陷仿真

离子注入工艺在半导体制造中是一个重要的步骤,用于在半导体材料中引入特定的掺杂剂。然而,离子注入过程中不可避免地会产生损伤和缺陷,这些损伤和缺陷会直接影响器件的性能和可靠性。因此,对离子注入工艺中的损伤和缺陷进行仿真研究是必不可少的。本节将详细介绍如何使用仿真软件对离子注入过程中的损伤和缺陷进行建模和分析。

2401_87715305的博客 1338

mybaits-plus通用CRUD详解及代码案例

文章目录mybaitsplus通用CRUD插入操作方法定义测试用例mybaitsplus主键生成策略设置自增主键设置输入主键:UUID:ID_WORKER_STR:ID_WORKER:更新操作根据id更新方法定义:方法步骤根据条件更新方法定义:更新步骤:根据条件更新(可以更新NULL)删除操作根据id删除方法定义:删除步骤:根据 entity 条件删除方法定义:删除步骤:根据ID 批量删除方法定义:删除步骤:查询操作根据id查询方法定义:查询步骤:根据id批量查询方法定义:查询步骤:根据 entity 条件

流楚丶格念的博客 3404

【亲测免费】 Android++:在Visual Studio中开发Android应用的利器

Android++:在Visual Studio中开发Android应用的利器 项目介绍 Android++(android-plus-plus)是一个免费的开源扩展项目,专为在Visual Studio中进行Android应用开发而设计。该项目主要面向基于NDK的C/C++应用程序开发,同时集成了可定制的部署、资源管理以及Java源代码编译功能。通过Android++,开发者可以在熟悉的Visu...

gitblog_00516的博客 1490

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android++:使用Visual Studio开发Android原生应用

Android++是一个免费的Visual Studio扩展,包括MSBuild脚本,以此支持在Visual Studio 开发Android应用 ,这样就为全球最大、发展最快的移动平台和微软专属的IDE之间建立了一个通道,同时允许原生代码级别的调试。  Android++官网 : http://android-plus-plus.com/  Android++的初衷是为了支持基于C/

痞子龙3D编程 2282

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C++开发者终极指南:如何将Injector集成到Visual Studio构建流程实现自动化DLL注入测试

作为一名C++开发者,你是否经常需要手动测试DLL注入功能?是否希望在构建完成后自动将开发的DLL注入到目标进程中进行测试?本文将为你展示如何将Injector这个强大的命令行DLL注入工具无缝集成到Visual Studio构建流程中,实现自动化测试和部署。Injector是一个开源项目,它简化了DLL注入的复杂过程,让开发者能够专注于核心业务逻辑。 ## 为什么需要自动化DLL注入测试?

gitblog_01138的博客 950

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NanaZip源码构建实战:从VS2022到ARM64的完整编译教程

NanaZip 是一款基于 7-Zip 源代码分支开发的现代化 Windows 开源压缩包管理工具,支持深色模式、Mica 材质与 MSIX 打包,同时提供 x86(64位)与 ARM(64位)双平台支持。本文将带你完整走一遍 NanaZip 的源码构建流程:从 Visual Studio 2022 环境配置、一键编译脚本,到 ARM64 交叉编译与产物输出,全程无需手写一条 MSBuild 命令

gitblog_00811的博客 865

10分钟搞懂Scripty:基于Roslyn的C脚本代码生成工具,T4模板的终极替代方案

Scripty 是一个基于 Roslyn 的 C# 脚本代码生成工具,让你用 `.csx` 脚本来代替 T4 模板自动生成代码。只需几行 C# 脚本,就能在构建时自动产出编译代码、资源文件或任意文本,是 .NET 开发者提升代码生成效率的实用神器。 ## 🧩 为什么需要 Scripty?T4 模板的痛点 如果你用过 T4 模板,一定被它的"代码块 + 模板块"混合语法折磨过——逻辑越复杂,模

gitblog_00446的博客 220

Visual Studio 远程调试完整教程

本文详细介绍了一种 Visual Studio C++ 远程调试的完整方案。通过 VS Remote Debugger + ZeroTier 虚拟局域网 + OpenSSH/SCP 自动传输 三大组件的组合,将编译机和目标机打通为一个无缝的远程调试环境。文中涵盖了 Remote Debugger 安装、ZeroTier 组网、OpenSSH Server 部署与免密配置、push.ps1 自动传输脚本编写、MSBuild 属性表挂载,以及 VS 远程调试参数配置的全流程,并提供了 120MB 编译产物 4

2404_89980690的博客 673

Visual Studio 和 VS Code 到底有什么区别?选型指南与实操对比

IDE(集成开发环境)是提供代码编写、调试、构建等全流程工具的工作台,而框架是代码骨架和约定,两者本质不同。Visual Studio 是重量级全功能 IDE,深度集成 .NET 和 C++ 生态,适合企业级开发和 Windows 原生应用;VS Code 是轻量级跨平台编辑器,通过扩展支持多语言,适合前端、脚本和远程开发。理解这一差异能帮助开发者根据项目类型和团队协作需求正确选型,避免混淆。本文深入拆解两者架构、调试能力、扩展生态和实操配置,助你三秒做出选择。

weixin_32228501的博客 313

PowerShell Tools for Visual Studio:提升你的PowerShell开发体验

PowerShell Tools for Visual Studio:提升你的PowerShell开发体验 项目介绍 PowerShell Tools for Visual Studio 是一款专为Visual Studio用户设计的PowerShell集成工具。它不仅提供了丰富的脚本编辑功能,还支持项目系统、调试和测试等多个方面,极大地提升了PowerShell脚本的开发效率和体验。无论你是Po...

gitblog_00676的博客 994

Postgresql 9.6.10在Windows下的安装和调试

相关文档 https://www.postgresql.org/docs/10/install-windows-full.html 源代码编译(官方文档) https://blog.youkuaiyun.com/u012867993/article/details/102466086 源代码调试 源代码版本 postgresql-9.6.10.tar.gz 编译环境准备 1. 安装VS2017 按照默认配置安装,没有特别之处。 2. ActivePerl安装 按照默认配置安装,选择完全安装。 3. ActiveTcl

obvious__的博客 1450

从QDockWidgetDemo.vcxproj报错看Qt版本管理:如何在不同VS版本间迁移项目

本文针对Qt项目在Visual Studio中迁移时遇到的“QDockWidgetDemo.vcxproj报错”问题,深入解析了Qt版本管理的核心机制。文章提供了从项目诊断、环境准备到配置修复的系统性解决方案,并分享了跨VS版本迁移的最佳实践与高级技巧,帮助开发者高效解决Qt版本不匹配问题。

b3n4m5q6w7的博客 208
下一篇: CLR via C# 读书笔记1-1
sqlchen
博客等级 码龄24年 10粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值