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

标签 visual-studio visual-studio-2015 msbuild msbuild-task

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

<Target Name="AfterBuild" />
<Target Name="MyTarget"
        AfterTargets="AfterBuild">
  <MyTask ... />
</Target>

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

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

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

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

最佳答案

Is it possible to execute the task, if the build operation was triggered, but did not perform, because there are no changes in the project / no need to build again?

如果我没理解错的话,你可以在你的项目文件中定义这个属性:

<PropertyGroup> 
  <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> 
</PropertyGroup>

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

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

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

关于visual-studio - 始终在构建过程后执行自定义 MSBuild 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44647422/

相关文章:

c# - specflow 禁用,Specflow Package Package 没有正确加载

nuget - 如何从 Visual Studio 2015 中的自定义包源更新 NuGet 包?

.net - 我的C#Visual Studio项目在编译时生成了太多的dll文件

msbuild - 在 "BeforeBuild"目标之前捕获的程序集版本

build - TFS 不可知的 MSBuild 脚本

visual-studio - 在 Visual Studio 中调试时迭代可枚举对象

c# - 使用一个 Windows 窗体 - Visual Studios c#

asp.net - 从网络上的另一台计算机访问 iis localhost 路径

c++ - const char[] 默认函数参数

sql-server - 在 Visual Studio 和 SQL Server 中按架构名称比较架构