多目标项目中如何仅执行一次XSD类生成脚本?
正确配置方案
要让XSD生成类的脚本在多目标项目中仅执行一次,核心是利用MSBuild针对多目标项目的外层构建标识,避免在每个目标框架的单独构建中重复触发。具体配置如下:
- 在你的
.csproj文件中添加自定义目标,替换原有的PreBuild事件:
<Target Name="GenerateXsdClasses" BeforeTargets="BeforeBuild" Condition="'$(IsCrossTargetingBuild)' == 'true'"> <!-- 替换为你的脚本执行命令 --> <Exec Command="你的脚本路径及执行参数" /> </Target>
- 关键参数说明:
IsCrossTargetingBuild:MSBuild自动设置的属性,**外层构建(触发所有目标框架的顶层过程)**中该值为true,每个单独目标框架的内部构建中为false,通过这个条件确保脚本只执行一次。BeforeTargets="BeforeBuild":指定目标在整个构建流程的前期执行,早于分发到各个目标框架的内部构建。
如果之前尝试DispatchToInnerBuilds未生效,可检查是否遗漏了条件判断,或者直接使用上述BeforeBuild+IsCrossTargetingBuild的组合,该方案在VS2022环境下稳定有效。
注意:不要使用默认的PreBuild事件,它会在每个目标框架的构建前重复触发。
内容的提问来源于stack exchange,提问作者Sebastian Schumann
相关产品推荐
相关产品推荐

