首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pubxml web发布工具事件生命周期

pubxml web发布工具事件生命周期
EN

Stack Overflow用户
提问于 2015-02-09 12:04:01
回答 3查看 2.1K关注 0票数 9

我正在使用Visual 2012中的Web发布工具将其发布到文件系统。我了解到我可以在“属性”文件夹中打开我的*.pubxml来做更高级的事情。

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

代码语言:javascript
复制
 <Target Name="CustomAfterPublish" AfterTargets="GatherAllFilesToPublish">
 </Target>

问题是,GatherAllFilesToPublish是早期的方法,因为我想在发布完成之后,在最后执行它。是否有一个列表,或者有人知道事件中的构建以及他们被解雇的顺序?基本上是FileSystem网络发布的事件生命周期。

或者我怎么才能在最后手动发射目标呢?

我试着跟随,但没有成功:

代码语言:javascript
复制
<Target Name="Msg" AfterTargets="PipelineDeployPhase;MSDeployPublish;Package">

而且每个人都是单独的。那么,发布生命周期的最后一个钩子是什么呢?

->编辑问题是文件被复制到临时路径,然后所有文件都被删除。因此,在"GatherAllFilesToPublish"从命令行窗口看到我的跟踪后,复制到目标将无法工作.

代码语言:javascript
复制
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 ==========

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-17 14:33:37

据我所知,GatherAllFilesToPublish是最后一个可用的事件。但是,取决于您的需求,您可能仍然能够使用此事件。

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

/ProjectDir/obj/Release/PackageTmp/

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

相关信息

如果您想验证GatherAllFilesToPublish确实是最后一个事件,您可以通过启用诊断构建输出来自己完成这一任务。

工具->选项->项目和解决方案->构建和运行-> MSBuild项目生成输出详细的->诊断

构建项目并搜索完成的构建目标"GatherAllFilesToPublish",对我来说,这是它开始将文件复制到发布位置之前的最后一个触发器。

票数 9
EN

Stack Overflow用户

发布于 2017-09-27 00:59:47

我也有同样的问题。你的解决方案

先处理临时目录,然后让web发布,为发布选择合适的应对方式

很有帮助。

我只想为其他人分享如何做到这一点:

代码语言:javascript
复制
<Target Name="CopyConfigForPublish" AfterTargets="CopyAllFilesToSingleFolderForPackage" Condition="exists('$(SolutionDir)Web.Common\bin\$(Configuration)\Log.config')">
    <Copy SourceFiles="$(SolutionDir)Web.Common\bin\$(Configuration)\Log.config" DestinationFolder="$(WPPAllFilesInSingleFolder)" />
</Target>
票数 0
EN

Stack Overflow用户

发布于 2018-06-15 23:40:47

我也有过类似的问题。

据我所知,"GatherAllFilesToPublish“是您可以处理的最后一个目标。您可以使用它执行AfterTargets。

并使用这个>

代码语言:javascript
复制
$(MSBuildProjectDirectory)\obj\Release\Package\PackageTmp

操纵那里的任何东西。

我所做的是创建一个.bat文件来完成肮脏的工作。

您可以找出哪个变量存储路径的相对部分(\obj\ relative \Package\PackageTmp),并以更精细的方式使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28409352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档