我正在努力解决以下问题,但我不明白。我有一个 Visual Studio Xamarin 项目(Windows 10 上的 VS 2019)。在项目文件中,我定义了一个自定义构建目标:
<Target Name="MyCustomTarget" AfterTargets="PrepareForBuild">
<Message Importance="high" Text="=== executing MyCustomTarget" />
<!-- do some file modifications -->
</Target>
我希望它始终在预定义的 PrepareForBuild 目标之后运行。当我构建项目时,我的目标被执行并且我在构建输出中看到它(我的自定义消息也显示了一些文件按照目标中的定义进行了更新)。
问题是当我为项目执行“clean”命令时,我的自定义目标也会执行(甚至可能多次!)。在这种情况下,我在输出日志中看不到我的消息(MSBuild 详细程度在选项中设置为诊断),目标也未列在任务性能摘要中,但它已执行(我的文件已更新)。这是我不明白的事情。当 clean 被调用时,PrepareForBuild 目标也不会被执行。为什么即使调用 clean 我的目标也会执行?
如果我将我的任务更改为在 BeforeBuild 之后执行,那么它不会在执行 clean 时被调用,但我需要它在 BeforeBuild 之后更早地执行。