始终在构建过程后执行自定义 MSBuild 任务
Execute custom MSBuild task always after build process
我创建了一个在构建操作之后执行的自定义任务。
<Target Name="AfterBuild" />
<Target Name="MyTarget"
AfterTargets="AfterBuild">
<MyTask ... />
</Target>
QUESTION: 如果构建操作被触发,但没有执行,是否可以执行任务,因为项目中没有更改/不需要构建又是?
换句话说:我想始终在构建过程结束时执行任务,即使项目没有再次构建。
UPDATE:使用 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 的正常最新检查并使用某种更快的自定义检查,但有破坏自定义构建目标的副作用。
更新:
不确定此方法不适用于您的项目的原因,让我更详细地回答一下:
- 在您的项目文件中定义 属性:
- 添加带有一些消息信息的自定义 MSBuild 任务。
- 构建项目,检查输出(日志文件详细程度正常)。
- 再次构建项目,再次检查输出。
如果我使用 AfterTargets="Build"
而不是 AfterBuild
,则每次我构建解决方案(使用 .NET Standard 的 .NET Core 控制台应用程序)时,消息都会写入输出 window Class图书馆)。
<Target Name="MyAfterBuild" AfterTargets="Build">
<Message Importance="High" Text="Hello World!" />
</Target>
我创建了一个在构建操作之后执行的自定义任务。
<Target Name="AfterBuild" />
<Target Name="MyTarget"
AfterTargets="AfterBuild">
<MyTask ... />
</Target>
QUESTION: 如果构建操作被触发,但没有执行,是否可以执行任务,因为项目中没有更改/不需要构建又是?
换句话说:我想始终在构建过程结束时执行任务,即使项目没有再次构建。
UPDATE:使用 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 的正常最新检查并使用某种更快的自定义检查,但有破坏自定义构建目标的副作用。
更新: 不确定此方法不适用于您的项目的原因,让我更详细地回答一下:
- 在您的项目文件中定义 属性:
- 添加带有一些消息信息的自定义 MSBuild 任务。
- 构建项目,检查输出(日志文件详细程度正常)。
- 再次构建项目,再次检查输出。
如果我使用 AfterTargets="Build"
而不是 AfterBuild
,则每次我构建解决方案(使用 .NET Standard 的 .NET Core 控制台应用程序)时,消息都会写入输出 window Class图书馆)。
<Target Name="MyAfterBuild" AfterTargets="Build">
<Message Importance="High" Text="Hello World!" />
</Target>