pubxml Web发布工具事件生命周期

sil*_*ter 5 asp.net msbuild visual-studio-2012 msbuild-wpp

我正在使用Visual Studio 2012中的Web发布工具发布到文件系统。我了解到可以在Properties文件夹中打开* .pubxml来执行更多高级操作。

我想做的是在发布任务结束时运行一个命令行应用程序。我通常会在“自定义目标”中执行此操作,并在像这样的事件中进行其中一个构建后执行它。

 <Target Name="CustomAfterPublish" AfterTargets="GatherAllFilesToPublish">
 </Target>
Run Code Online (Sandbox Code Playgroud)

问题是GatherAllFilesToPublish要早点解决,因为我要在发布完成后最后执行它。是否有列表,或者有人知道事件的生成以及触发事件的顺序?基本上是FileSystem网站发布的事件生命周期。

或者,如何在最后手动启动目标?

我尝试了以下操作,但未成功:

<Target Name="Msg" AfterTargets="PipelineDeployPhase;MSDeployPublish;Package">
Run Code Online (Sandbox Code Playgroud)

以及每个人都单独。那么,发布生命周期的最后一个挂钩是什么?

--->编辑,我已经添加了跟踪。问题在于,文件已复制到临时路径,然后删除了所有文件。因此,"GatherAllFilesToPublish"从此处的命令行窗口中查看我的跟踪信息后,将无法复制到目标位置...

1>------ Build started: Project: Dependency of a project: Release Any CPU ------
2>------ Build started: Project: Dependency of another project, Configuration: Release Any CPU ------


3>------ Build started: Project: Web, Configuration: Release Any CPU ------
4>------ Publish started: Project: Web, Configuration: Release Any CPU ------
4>Transformed Web.config using C:\...\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
4>Copying all files to temporary location below for package/publish:
4>obj\Release\Package\PackageTmp.

**<------------- Here is the place where my excutable is called ---------------------------------**


4>Deleting existing files...
4>Publishing folder /...
4>Publishing folder App_Browsers...
4>Publishing folder App_Themes...
4>Publishing folder bin...

4>Site was published successfully file:///C:/Test
4>
========== Build: 3 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助。

Red*_*Taz 5

据我所知GatherAllFilesToPublish是最后一个可用事件。但是,根据您的要求,您仍然可以使用此事件。

您可以针对写入以下位置的中间文件作为目标,而不是对最终发布位置中的文件执行操作(其中ProjectDir显然是您的项目的文件夹)

/ ProjectDir / obj / Release / Package / PackageTmp /

似乎Visual Studio会直接复制此目录中的所有文件。因此,当GatherAllFilesToPublish您挂接到目录时,应该可以对该目录中的文件进行任何更改,它们将反映在最终的发布位置。


相关信息

如果您想确认那GatherAllFilesToPublish确实是最后一个事件,则可以通过启用Diagnostic build输出来自己做。

工具->选项->项目和解决方案->生成并运行-> MSBuild项目生成输出详细信息->诊断

生成项目并搜索“ Done”生成目标“ GatherAllFilesToPublish”,对我而言,这是开始将文件复制到发布位置之前的最后一个触发器。