我试图在发布事件后调用简单的任务。当我说“发布”时,我的意思是在 Visual Studio 中发布,右键单击项目并按“发布...”。我已经在项目文件中包含(导入的)目标文件,它工作正常,因为我已经在 Build 事件中对其进行了测试。我在http://msdn.microsoft.com/en-us/library/ms366724.aspx发现有 AfterPublish 事件应该做我需要的,但它没有。我不确定这是否是应该在 Visual Studio 中发布时触发的同一事件,请有人澄清这一点。我的问题是如何从 Visual Studio 中发布的目标文件中触发任何类型的任务?
我在目标文件中试过这个:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="AfterPublish">
<Message Label="Test"></Message>
<Warning Label="Test"></Warning>
</Target>
</Project>
我正在使用 Visual Studio 2010。
编辑:
我实际上正在寻找在 Visual Studio 中对 Publish 执行某些操作的任何方法。我也在考虑添加构建事件,但我不知道如何确定它是否正在进行发布。
编辑:@Alexey Shcherbak 感谢您的快速回复。我在我的 MSBuild 输出中得到了这个:
12/10/2012 12:29:40 AM: Done executing task "CallTarget".
12/10/2012 12:29:40 AM: Done building target "PipelinePreDeployCopyAllFilesToOneFolder" in project "PublishTestApp.csproj".
12/10/2012 12:29:40 AM:Done building project "PublishTestApp.csproj".
Deleting existing files...
Publishing folder /...
Publishing folder Account...
Publishing folder bin...
Publishing folder Scripts...
Publishing folder Styles...
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
因此,我的任务将在 PipelinePreDeployCopyAllFilesToOneFolder 之后但在文件的实际处理之前执行,我认为此时尚未完成发布。当然,我确实对此进行了实际测试,因此在 MSBuild 任务中,我正在执行从假定复制到 Publish 文件夹中的文本文件的简单读取,但它失败了。