我正在使用Visual 2012中的Web发布工具将其发布到文件系统。我了解到我可以在“属性”文件夹中打开我的*.pubxml来做更高级的事情。
我想要做的是在发布任务结束时运行命令行应用程序。我通常会在一个自定义目标中这样做,并在像这样的事件中的一个构建之后执行它。
<Target Name="CustomAfterPublish" AfterTargets="GatherAllFilesToPublish">
</Target>问题是,GatherAllFilesToPublish是早期的方法,因为我想在发布完成之后,在最后执行它。是否有一个列表,或者有人知道事件中的构建以及他们被解雇的顺序?基本上是FileSystem网络发布的事件生命周期。
或者我怎么才能在最后手动发射目标呢?
我试着跟随,但没有成功:
<Target Name="Msg" AfterTargets="PipelineDeployPhase;MSDeployPublish;Package">而且每个人都是单独的。那么,发布生命周期的最后一个钩子是什么呢?
->编辑问题是文件被复制到临时路径,然后所有文件都被删除。因此,在"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 ==========谢谢你的帮助。
发布于 2015-02-17 14:33:37
据我所知,GatherAllFilesToPublish是最后一个可用的事件。但是,取决于您的需求,您可能仍然能够使用此事件。
与其对最终发布位置中的文件执行操作,您还可以针对写入下面位置的中间文件(显然,ProjectDir是项目的文件夹)。
/ProjectDir/obj/Release/PackageTmp/
看来Visual可以直接复制该目录中的所有文件。因此,当链接到GatherAllFilesToPublish时,您应该能够对该目录中的文件进行任何更改,它们将反映在最终的发布位置中。
相关信息
如果您想验证GatherAllFilesToPublish确实是最后一个事件,您可以通过启用诊断构建输出来自己完成这一任务。
工具->选项->项目和解决方案->构建和运行-> MSBuild项目生成输出详细的->诊断
构建项目并搜索完成的构建目标"GatherAllFilesToPublish",对我来说,这是它开始将文件复制到发布位置之前的最后一个触发器。
发布于 2017-09-27 00:59:47
我也有同样的问题。你的解决方案
先处理临时目录,然后让web发布,为发布选择合适的应对方式
很有帮助。
我只想为其他人分享如何做到这一点:
<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>发布于 2018-06-15 23:40:47
我也有过类似的问题。
据我所知,"GatherAllFilesToPublish“是您可以处理的最后一个目标。您可以使用它执行AfterTargets。
并使用这个>
$(MSBuildProjectDirectory)\obj\Release\Package\PackageTmp操纵那里的任何东西。
我所做的是创建一个.bat文件来完成肮脏的工作。
您可以找出哪个变量存储路径的相对部分(\obj\ relative \Package\PackageTmp),并以更精细的方式使用它。
https://stackoverflow.com/questions/28409352
复制相似问题