我创建了一个在构建操作后执行的自定义任务。
<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
答案 0 :(得分:4)
如果构建操作被触发但是没有执行,是否可以执行任务,因为项目没有变化/不需要再次构建?
如果我理解正确,您可以在项目文件中定义此属性:
<PropertyGroup>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
注意:此方法似乎是Visual Studio绕过MSBuild的正常最新检查并使用某种更快的自定义检查,但具有打破自定义构建目标的副作用。
更新: 不确定这个方法对你的项目不起作用的原因,让我更详细地回答:
答案 1 :(得分:0)
如果我使用AfterTargets="Build"
而不是AfterBuild
,则每次构建解决方案时都会将消息写入“输出”窗口(带有.NET标准类库的.NET Core Console应用程序)。
<Target Name="MyAfterBuild" AfterTargets="Build">
<Message Importance="High" Text="Hello World!" />
</Target>