在发布我的Web应用程序项目后,没有执行世界上最简单的任务(见下文)。知道为什么吗?
<Target Name="AfterPublish">
<Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
</Target>
答案 0 :(得分:31)
注意:以下内容适用于VS2010并使用“构建/发布{projectname}”对话框中选择的“Web Deploy”发布方法发布Web应用程序项目。
Julien Hoarau的正确之处在于“发布”不是上述案例中调用的msbuild目标的名称;实际目标名称是“MSDeployPublish”。
因此,您必须定义一个“Target”元素,其“AfterTarget”属性的值设置为“MSDeployPublish” - “名称“属性的值不重要(只要它在目标名称中是唯一的)。
以下是如何操作:
</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.aspx 答案 1 :(得分:20)
Visual Studio 2013.将Web应用程序发布到文件系统。
<Target Name="Moose" AfterTargets="GatherAllFilesToPublish" >
<Message Importance="high" Text="***Moooooooooooooooose***$(WPPAllFilesInSingleFolder)***$(TargetDir)" />
</Target>
注意:确保将构建日志记录设置为至少为Detailed。在工具 - &gt;下查找它选项 - &gt;项目和Solutinos - &gt;构建和运行 - &gt; MSBuild输出详细程度。如果要在实际发布之前调查上次运行的构建目标,诊断也很好。
答案 2 :(得分:2)
<Import ... />
启动具有详细详细程度的MSBuild,以了解忽略目标的原因:
msbuild project.csproj /t:Target_to_Launch /v:d
AfterPublish
目标之后调用 Publish
,但Publish
不是发布Web应用程序时调用的目标。 Publish
是发布 ClickOnce 应用程序的目标。
您必须找到在Visual Studio中调用Publish
时使用的目标,它可以是Package
,WebPublish
...
答案 3 :(得分:0)
我现在有点懒,想弄清楚目标的混乱,为基于文件的发布找到合适的目标(你可能会感兴趣)。在此期间您可以做的是在* .pubxml文件中定义AfterBuild目标。
<Target Name="AfterBuild">
...
我建议也关闭属性“DeleteExistingFiles”,因为如果将文件复制到正在发布的目录中,它会在发布过程中的某个地方干净。
<DeleteExistingFiles>False</DeleteExistingFiles>
答案 4 :(得分:0)
这似乎在Visual Studio 2019中有效
<Target Name="MyCustomTarget" AfterTargets="Publish">
<Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
</Target>