Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Msbuild 发布后目标不工作_Msbuild_Publish_Task - Fatal编程技术网

Msbuild 发布后目标不工作

Msbuild 发布后目标不工作,msbuild,publish,task,Msbuild,Publish,Task,世界上最简单的任务(见下文)在我发布web应用程序项目后并没有执行。知道为什么吗 <Target Name="AfterPublish"> <Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" /> </Target> 您必须在文件末尾的 使用详细详细的详细信息启动MSBuild,以查看忽略目标的原因: msbuild project.csproj /t:Target_to_Launch /

世界上最简单的任务(见下文)在我发布web应用程序项目后并没有执行。知道为什么吗

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

  • 您必须在文件末尾的
  • 使用详细详细的详细信息启动MSBuild,以查看忽略目标的原因:

    msbuild project.csproj /t:Target_to_Launch /v:d
    
AfterPublish
Publish
target之后调用,但发布web应用程序时调用的目标不是
Publish
<代码>发布是发布ClickOnce应用程序的目标


在Visual Studio中调用
Publish
时,您必须找到使用的目标,它可以是
Package
WebPublish

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

Julien Hoarau的正确之处在于“Publish”不是在上述情况下调用的msbuild目标的名称;实际的目标名称是“MSDeployPublish”

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

以下是如何做到这一点:

  • 在文本/XML编辑器中打开项目文件(例如.*.csproj),并在关闭
    标记之前添加
    元素;为“CustomPostPublishAction”选择您选择的名称
  • 添加执行所需操作的所谓任务子元素;例如,要添加要传递给cmd.exe的命令,请使用
    元素
例如:

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

注:


  • 在命令字符串中,使用XML实体(?)引用代替会破坏XML解析的字符,例如用“>”代替“我现在有点懒散,无法找出混乱的目标,以便为基于文件的发布找到正确的目标(您可能感兴趣)。同时,您可以在*.pubxml文件中定义一个后构建目标

    <Target Name="AfterBuild">
    
    
    

    我还建议关闭属性“DeleteExistingFiles”,因为如果您将文件复制到要发布的目录中,它会在发布过程中的某个地方进行清理

    <DeleteExistingFiles>False</DeleteExistingFiles>
    
    False
    
    Visual Studio 2013。将Web应用程序发布到文件系统

      <Target Name="Moose" AfterTargets="GatherAllFilesToPublish" >
        <Message Importance="high" Text="***Moooooooooooooooose***$(WPPAllFilesInSingleFolder)***$(TargetDir)" />
      </Target>
    
    
    

    注意:请确保将生成日志记录设置为至少为详细。请在“工具”->“选项”->“项目和解决方案”->“生成和运行”->“MSBuild输出详细信息”下查找。如果要调查在实际发布之前最后运行的生成目标,也可以进行诊断。

    这似乎在Visual Studio 2019中起作用

    <Target Name="MyCustomTarget" AfterTargets="Publish">
      <Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
    </Target>
    
    
    
    以下是输出中的一些亮点:覆盖项目“c:\…\Microsoft.Common.targets”中的目标“AfterPublish”,目标“AfterPublish”来自项目“c:\…\Ara.Web.csproj”。目标“\u DeploymentUnpublishable”位于项目“c:\…\Microsoft.Common.targets”中的文件“c:\…\Ara.Web.csproj”:任务“消息“跳过不可发布的项目。我可以从Visual Studio中发布它,但AfterPublish任务不起作用。您好,您知道是否有办法使其与FTP发布一起工作吗?我想使此工作用于文件系统发布。。有什么想法吗?谢谢。@MauricioRamalho:我建议你问一个新问题(创建一个新帖子),并详细说明。(我个人将不再有什么帮助,因为我已经多年没有使用这些东西了,但我相信有人能够帮助你。)这是我在VS2015中执行web应用程序项目的文件系统发布时唯一的目标。MSDeployPublish和AfterPublish都不可用。如果要将路径发布到,请使用$(PublishUrl)Yes!这就是我长久以来一直在寻找的答案!根据这一点,web项目可用的唯一发布目标似乎是
    gathereallfilestopublish