我的网站项目发布后,世界上最简单的任务(请参见下文)没有被执行。有什么想法吗?
<Target Name="AfterPublish">
<Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
</Target>
注意:以下内容适用于使用“Web Deploy”发布方法在“Build/Publish {projectname}”对话框中选择发布Web应用程序项目的VS2010。
Julien Hoarau 正确指出,"Publish"不是上述情况中调用的msbuild目标名称;实际的目标名称是"MSDeployPublish"。
因此,您必须定义一个"Target"元素,其"AfterTarget"属性的值设置为"MSDeployPublish" - "Name"属性的值无关紧要(只要它在目标名称中唯一即可)。
操作步骤如下:
</Project>
之前添加一个<Target Name="CustomPostPublishAction" AfterTargets="MSDeployPublish">
元素;为"CustomPostPublishAction"选择一个名称。<Exec Command="..." />
元素。例如:
<Target Name="CustomPostPublishActions" AfterTargets="MSDeployPublish" >
<Exec Command="echo Post-PUBLISH event: Active configuration is: $(ConfigurationName)" />
</Target>
注意:
<Target>
元素的一般文档,请参见http://msdn.microsoft.com/en-us/library/t50z2hka.aspxVisual 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>
<Import ... />
Launch MSBuild with detailed verbosity to see why your target is ignored :
msbuild project.csproj /t:Target_to_Launch /v:d
AfterPublish
在 Publish
目标之后被调用,但当您发布 Web 应用程序时,并不会调用 Publish
目标。 Publish
是用于发布ClickOnce应用程序的目标。
您需要查找在 Visual Studio 中调用 Publish
时使用的目标,它可能是 Package
、WebPublish
等等...
我现在有点懒得去找混乱的目标,以便找到适合基于文件的发布的正确目标(您可能会感兴趣)。与此同时,您可以在*.pubxml文件中定义一个AfterBuild目标。
<Target Name="AfterBuild">
...
我建议还要关闭"DeleteExistingFiles"属性,因为如果你将文件复制到正在发布的目录中,在发布过程中会进行一次清理。<DeleteExistingFiles>False</DeleteExistingFiles>