【发布时间】:2021-05-14 04:02:24
【问题描述】:
我正在寻找一种方法,在每个构建过程中只运行一次我定义的Target,而不是对每个构建的项目。
我在Directory.Build.props中定义了以下内容
<Target Name="MyTarget" AfterTargets="AfterBuild" >
<Message Text="Hello World!!!" Importance="High" />
</Target>
无论msbuild 进程正在构建多少个项目,都应该只运行一次,目前每个项目都会发生这种情况。
在 Visual Studio 中点击 (Re-)Build Soltution 或 (Re-)Build [ProjectName] 或点击 F5 无关紧要,只要发生任何构建,我只想执行一次 MyTarget。
【问题讨论】:
-
我想你希望目标被执行一次,然后当你第二次构建它时,它不会被执行,对吧?
-
@PerryQian-MSFT - 例如我有一个包含 3 个项目的解决方案,我点击
Build Solution构建所有 3 个项目,如果我点击Build Project B,它应该只执行一次,但是内部构建过程决定,因为它需要在项目 B 之前构建项目 A 我仍然希望只运行一次,所以基本上当我点击任何构建操作时,msbuild 决定做什么我的愿望是只运行一次东西当一切都完成时 -
但是如果新的构建过程开始,它应该再次运行一次
-
@PerryQian-MSFT - 万一你有兴趣或想知道我为什么需要这个,在这里你会找到一个深入的解释 - github.com/NuGet/Home/issues/10560
-
我的回答对您处理问题有帮助吗?
标签: visual-studio msbuild csproj msbuild-task