如何区分Solution Build与Project Build?求识别解决方案构建的属性
仅在直接构建项目时触发MSBuild的Shell命令
要实现仅在直接构建单个项目时执行Shell命令,而跳过解决方案构建的场景,可以利用MSBuild内置的$(BuildingSolution)属性:
- 执行解决方案构建时,该属性会被自动设置为
true - 直接构建单个项目时,该属性未定义或为
false
只需给你的TypeScriptBuild目标添加条件判断,让它仅在非解决方案构建时运行:
<Target Name="TypeScriptBuild" BeforeTargets="Build" Condition=" '$(BuildingSolution)' != 'true'"> <ItemGroup> <TypeScriptCompile Remove="ts\**\*.ts" /> </ItemGroup> <Exec Command="npm i" /> <Exec Command="npm run build" ConsoleToMsBuild="True" /> <Exec Command="powershell start-process 'npm' -ArgumentList 'run','watch'" Condition=" '$(Configuration)' == 'Debug'" /> </Target>
说明
添加Condition=" '$(BuildingSolution)' != 'true'"后,整个TypeScriptBuild目标只会在直接构建项目时触发,解决方案构建时会被跳过。原有的Debug模式下启动watch的条件可保留,不影响逻辑。
内容的提问来源于stack exchange,提问作者msetam
相关产品推荐
相关产品推荐

