如何排除MSBuild目标不参与IntelliSense构建
检测Visual Studio IntelliSense构建上下文的方法
Visual Studio在为IntelliSense执行设计时构建时,会自动设置特定的MSBuild属性,你可以通过这些属性控制自定义Target是否执行,常用的有两个属性:
$(DesignTimeBuild):处于设计时构建(如IntelliSense所需的构建)时,该属性值为true$(BuildingProject):设计时构建中该属性为false,实际编译构建时为true
你可以直接把这些属性用到Target的Condition条件中,实现需求:
方案一:使用DesignTimeBuild属性
<Target Name="MyCustomTask" BeforeTargets="PrepareForBuild" Condition="'$(DesignTimeBuild)' != 'true'"> <!-- 你的自定义任务逻辑 --> </Target>
方案二:使用BuildingProject属性
<Target Name="MyCustomTask" BeforeTargets="PrepareForBuild" Condition="'$(BuildingProject)' == 'true'"> <!-- 你的自定义任务逻辑 --> </Target>
这两个属性都是MSBuild在不同构建场景下自动注入的,无需额外配置即可直接使用。其中DesignTimeBuild更精准对应IntelliSense这类设计时场景,而BuildingProject则用于区分是否为真正的项目编译构建。
内容的提问来源于stack exchange,提问作者Olivier Leneveu
相关产品推荐
相关产品推荐

