Согласно этой документации Microsoft, для каждого проекта в решении Visual Studio 2019 события сборки выполняются в следующем порядке с другими шагами сборки (включая настраиваемые шаги сборки и инструменты):
Шаг пользовательской сборки в проекте и событие после сборки запускаются последовательно после завершения всех других процессов сборки.
Однако, когда установлен WDK v10.0.19041.0, StampInf и InfVerif выполняются перед Pre-Build Event.
Об этом свидетельствует следующий код Microsoft:
<Target Name = "StampInf"
Condition = "'@(Inf)' != ''"
BeforeTargets = "InfVerif">
...
<Target Name = "InfVerif"
Condition = "'@(Inf)' != '' and '$(IsDriverAppToolset)' != 'true'"
AfterTargets = "StampInf"
BeforeTargets = "PreBuildEvent">
Приведенный выше код Microsoft взят из: C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.Common.targets
Обратите внимание, как директивы AfterTargets и BeforeTargets устанавливают порядок выполнения StampInf, InfVerify и PreBuildEvent.
Вопрос 1. Является ли выполнение StampInf и InfVerify перед Pre-Build Event ошибкой в реализации или ошибкой в документации Microsoft?
Вопрос 2: Как выполнить пользовательскую команду перед InfVerif переносимым способом (без изменения исходных файлов Microsoft Visual Studio или WDK)?
Ошибка — это Pre-Build Event. выполнение после инструментов StampInf и InfVerify.
Вы можете создать проблему на DC или щелкнуть ссылку github внизу страницы, чтобы сообщить о проблеме с документацией.





Похоже на ошибку, из-за которой InfVerif явно ссылается на то, что находится перед целью PreBuildEvent. WDK не должен мешать семантике PreBuildEvent.
Однако MSBuild будет игнорировать ссылку на цель, которая не существует в текущем проекте. Вы можете установить цель BeforeTargets = "PreBuildEvent;InfVerif;StampInf", и для проектов, у которых нет цели InfVerif или StampInf, ошибки быть не должно. Вам не нужно изменять код Microsoft MSBuild, чтобы обойти эту проблему.
Что означает ошибка в вашем вопросе 1? Вы имеете в виду, что StampInf и InfVerify не включены в список в документации? Вы хотите определить, где в сборке будет выполняться пользовательский шаг сборки.