在构建过程后始终执行自定义 MSBuild 任务

Chr*_*St. 2 msbuild msbuild-task visual-studio visual-studio-2015

我创建了一个在构建操作后执行的自定义任务。

<Target Name="AfterBuild" />
<Target Name="MyTarget"
        AfterTargets="AfterBuild">
  <MyTask ... />
</Target>
Run Code Online (Sandbox Code Playgroud)

问题:是否可以执行任务,如果构建操作被触发,但没有执行,因为项目中没有更改/不需要再次构建?

换句话说:我想总是在构建过程结束时执行任务,即使项目没有再次构建。

更新:使用AfterTargets="Build" 或设置属性<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>没有帮助。

第二次触发构建过程后,我只得到输出: Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped

Leo*_*SFT 5

是否可以执行任务,如果构建操作被触发,但没有执行,因为项目中没有变化/不需要再次构建?

如果我理解正确,您可以在项目文件中定义此属性:

<PropertyGroup> 
  <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> 
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

注意:此方法似乎是 Visual Studio 绕过 MSBuild 的正常最新检查并使用某种更快的自定义检查,但具有破坏自定义构建目标的副作用。

更新:不确定此方法不适用于您的项目的原因,让我更详细地回答:

  1. 在项目文件中定义属性:
  2. 添加带有一些消息信息的自定义 MSBuild 任务。
  3. 构建项目,检查输出(日志文件详细程度为正常)。
  4. 再次构建项目,再次检查输出。