msbuild - AfterPublish目标不起作用

标签 msbuild publish task

发布Web应用程序项目后,世界上最简单的任务(请参见下文)未执行。知道为什么吗?

<Target Name="AfterPublish">
  <Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
</Target>

最佳答案

注意:以下内容适用于VS2010和使用在“构建/发布{projectname}”对话框中选择的“Web Deploy”发布方法发布Web应用程序项目。

朱利安·霍劳(Julien Hoarau)的正确说法是“发布”不是上述情况下调用的msbuild目标的名称;实际的目标名称是“MSDeployPublish”

因此,您必须定义一个“目标” 元素,其“AfterTarget” 属性的值设置为“MSDeployPublish” -“名称”属性的值无关紧要(只要它在目标名称中是唯一的)。

方法如下:

  • 在文本/ XML编辑器中打开项目文件(例如* .csproj),然后在关闭</Project>标记之前,添加一个<Target Name="CustomPostPublishAction" AfterTargets="MSDeployPublish">元素;为“CustomPostPublishAction”选择一个您选择的名称。
  • 添加一个执行所需 Action 的所谓Task子元素;例如,要添加要传递给cmd.exe的命令,请使用<Exec Command="..." />元素。

  • 例:
    <Target Name="CustomPostPublishActions" AfterTargets="MSDeployPublish" >
        <Exec Command="echo Post-PUBLISH event: Active configuration is: $(ConfigurationName)" />
    </Target>
    

    注意:
  • 在命令字符串中,使用XML实体(?)引用代替可能破坏XML解析的字符,例如用“&gt”代替“<”。
  • 有关一般<Target>元素的文档,请参见http://msdn.microsoft.com/en-us/library/t50z2hka.aspx
  • 此处的任务元素引用:http://msdn.microsoft.com/en-us/library/7z253716.aspx
  • 通常,如果需要确定Visual Studio 2010实际调用的msbuild.exe目标的名称,请执行以下操作:
  • 转到“工具/选项...”,“项目和解决方案/构建并运行”,从标记为“MSBuild项目的构建输出详细程度”的下拉列表中选择“详细”(或者,更多信息为“诊断”)。
  • 运行构建/发布操作后,例如生成/发布,检查“输出”窗口中最后一次出现的字符串“完成构建目标”,以确定所调用的顶级目标。
  • 关于msbuild - AfterPublish目标不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561689/

    相关文章:

    vb.net - 签名工具错误 : Invalid option:/fd

    asp.net - 发布期间未复制引用程序集的 xml 文档

    c# - CPU 绑定(bind)任务的并行化继续与 IO 绑定(bind)

    python - 将参数传递给自定义 celery 任务

    c# - MSBuild.exe 输出编码

    command-line - 如何在解决方案名称 (*.sln) 上使用通配符调用 msbuild?

    ios - Apple 指南 - 发布应用程序的奇怪规则

    sharepoint - SharePoint 中定期 session 的所有任务的汇总

    .net - MSBuild 错误 : "Could not resolve this reference. Could not locate the assembly..."

    .net - 带有 bitbucket 管道的 Msbuild