You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2019中MSBuild构建事件顺序及相关技术问题咨询

关于WDK构建步骤顺序的两个技术问题

根据微软官方文档,Visual Studio 2019解决方案中每个项目的构建事件与其他构建步骤(含自定义构建步骤和工具)的执行顺序为:预构建事件→单个文件的自定义构建工具→MIDL→资源编译器→C/C++编译器→预链接事件→链接器或库管理器(按需)→清单工具→BSCMake→项目级自定义构建步骤→后构建事件。其中项目级自定义构建步骤和后构建事件在所有其他构建流程完成后依次执行。

但安装WDK v10.0.19041.0后,StampInf和InfVerif会在预构建事件之前执行,这一点可从WindowsDriver.Common.targets文件中的代码片段得到证明:

<Target Name="StampInf" Condition="'@(Inf)' != ''" BeforeTargets="InfVerif">
<Target Name="InfVerif" Condition="'@(Inf)' != '' and '$(IsDriverAppToolset)' != 'true'" AfterTargets="StampInf" BeforeTargets="PreBuildEvent">

上述代码摘自路径:C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.Common.targets,其中AfterTargets和BeforeTargets指令明确了StampInf、InfVerif与PreBuildEvent的执行顺序。


问题1:StampInf和InfVerif在预构建事件之前执行属于实现缺陷还是微软文档的错误?

这既不是实现缺陷也不是文档错误,而是驱动项目构建流程的特殊设计。普通C/C项目的构建顺序文档描述的是通用场景,而WDK针对驱动项目的构建需求调整了流程——StampInf和InfVerif是专门用于处理驱动INF文件的工具,需要在预构建事件之前完成INF文件的版本戳记与验证,确保后续构建流程使用的是合规的INF文件。微软官方文档的该章节针对的是常规C/C项目,并未覆盖WDK驱动项目的特殊构建步骤。


问题2:如何在不修改Visual Studio或WDK的微软源文件的前提下,以可移植方式在InfVerif之前执行自定义命令?

可以通过在驱动项目的.vcxproj文件中添加自定义MSBuild Target来实现,具体步骤如下:

  1. 打开项目的.vcxproj文件(右键项目→卸载项目→右键编辑项目文件)
  2. 在文件末尾的</Project>标签之前添加以下自定义Target:
<Target Name="CustomPreInfVerifStep" 
        Condition="'@(Inf)' != ''"
        BeforeTargets="InfVerif">
  <!-- 在这里添加你的自定义命令 -->
  <Exec Command="你的自定义命令内容" />
</Target>
  1. 保存文件,重新加载项目。

这个方式通过MSBuild的BeforeTargets指令,将自定义Target绑定到InfVerif之前执行,无需修改WDK的官方目标文件,且能随项目文件一起移植,完全符合要求。


内容的提问来源于stack exchange,提问作者Pavel Stepanek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:16:14