首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Visual Studio中的发布事件之后

Visual Studio中的发布事件之后
EN

Stack Overflow用户
提问于 2012-12-09 04:48:02
回答 3查看 34.8K关注 0票数 32

我试图在发布事件之后调用简单的任务。当我说“发布”时,我指的是在Visual Studio中发布,右键单击项目并按下“发布...”。我已经在项目文件中包含(导入)了目标文件,它工作得很好,因为我已经在构建事件上对其进行了测试。我在http://msdn.microsoft.com/en-us/library/ms366724.aspx上发现有一个AfterPublish事件,它应该做我需要的事情,但是它没有。我不确定这是不是一个在Visual Studio中发布时应该触发的事件,有人可以澄清一下这一点。我的问题是,在Visual Studio中发布时如何从目标文件触发任何类型的任务?

我已经在目标文件中尝试过了:

代码语言:javascript
复制
<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中执行发布操作的任何方法。我也在考虑添加构建事件,但我不知道如何确定它是否正在发布。

编辑:@Alexey Shcherbak感谢您的快速回复。我在我的MSBuild输出中得到了如下结果:

代码语言:javascript
复制
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任务中,我执行了简单的从文本文件读取,该文件应该复制到发布文件夹中,但失败了。

EN

回答 3

Stack Overflow用户

发布于 2017-01-13 03:43:10

我尝试了其他所有的答案,但它们都不起作用。在我的例子中,我使用VS2015发布了一个VSTO插件,所以可能会有一些不同的事情发生,但这里有两个确实有效的选择:

代码语言:javascript
复制
<Target Name="AfterPublish">
  <Warning Text="publish warning 1" />
</Target>
<Target Name="CustomTarget" AfterTargets="AfterPublish">
  <Warning Text="publish warning 2" />
</Target>

我(以及其他人)在这方面遇到困难的部分原因是,Message任务似乎什么也做不了。我期望在Output视图中显示文本,但是什么也没有显示出来。Error List中也没有Message项,但通过使用Warning,它们确实显示在Error List中。不幸的是,我对MSBuild的了解还不足以说明为什么Message的表现不符合预期。

编辑:有关如何准确查看正在执行的目标的信息,请参阅this excellent answer

票数 5
EN

Stack Overflow用户

发布于 2015-03-01 03:22:24

我刚刚在这里写了一篇关于我如何在Visual Studio2013中实现这一点的帖子:http://www.alexdresko.com/2015/02/28/taking-visual-studio-build-and-publish-events-to-the-next-level/

从本质上讲,这就是魔术:

代码语言:javascript
复制
<Target Name="Mytarget" AfterTargets="MSDeployPublish" >
    <Message Text="The name of the publish profile is $(DestinationAppRoot)"/>   
    .... Here's where you do something awesome... 
</Target>

我鼓励你阅读整篇文章以获得更多信息。

票数 4
EN

Stack Overflow用户

发布于 2016-02-22 23:28:38

我对另一个问题的回答可能会有一些用处。

AfterPublish script doesn't run when I publish a web app

特别是,使用“发布的文件”的路径,您可以通过$(WebProjectOutputDir)\$(WPPAllFilesInSingleFolder)传入一个参数。这应该是类似于c:\{path to *.csproj}\obj\{build configuration}\Package\PackageTmp的东西。

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

https://stackoverflow.com/questions/13781799

复制
相关文章

相似问题

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